降维·预测·救命:PCA、随机森林与乳腺癌

一、引言

乳腺癌作为女性健康领域的一大挑战,对全球范围内的女性健康产生了深远影响。据世界卫生组织(WHO)统计,乳腺癌已成为全球女性恶性肿瘤发病率的最高者,且呈现逐年上升的趋势。在中国,乳腺癌也是女性最常见的恶性肿瘤之一,给社会和家庭带来了沉重的负担。因此,对乳腺癌的早期筛查、诊断和治疗具有极其重要的意义,不仅关乎个体女性患者的生存质量,也关系到整个社会的公共卫生问题。

随着信息技术的飞速发展,数据科学在医疗领域的应用日益广泛。通过对大规模医疗数据的采集、整合和分析,数据科学为医疗决策提供了全新的视角和手段,加速了疾病诊断、治疗方案优化以及精准医疗的实现。例如,基于大数据分析的乳腺癌风险预测模型能够帮助医生更早地发现高风险人群并进行个体化干预和治疗[。此外,数据科学还促进了医疗资源的合理配置和医疗服务的智能化提升,为医疗卫生体系的可持续发展注入了新动力。

二、数据降维技术(PCA)

2.1 PCA在数据分析中的作用

主成分分析(Principal Component Analysis,PCA)是一种常用的多元统计分析方法,其主要作用是通过线性变换将高维数据转换为低维数据,从而发现数据中的内在结构和模式。PCA通过寻找数据中的主成分(即最大方差方向),实现了数据的降维和特征提取,能够帮助我们更好地理解数据集的特点和相关性,同时减少数据的噪声影响,简化数据分析过程

2.2 PCA原理简介

主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维和特征提取方法,它的原理主要包括以下几个步骤:

  1. 去中心化(Mean Centering):首先,对原始数据进行去中心化处理,即将每个特征的值减去该特征的均值,使得数据的均值为零。这一步骤有助于消除数据中的平移影响,使得PCA能够更好地捕捉数据的方差和相关性。
  2. 计算协方差矩阵(Covariance Matrix):接下来,通过计算去中心化后的数据的协方差矩阵,来衡量各个特征之间的相关性。协方差矩阵的对角线上的元素表示各个特征的方差,非对角线上的元素表示不同特征之间的协方差。
  3. 特征值分解(Eigenvalue Decomposition):对协方差矩阵进行特征值分解,得到特征值和特征向量。特征向量构成了原始数据空间的一组正交基,而特征值代表了在相应特征向量方向上的方差大小。
  4. 选择主成分:按照特征值的大小对特征向量进行排序,选取前k个特征向量作为主成分,其中k通常是希望保留的维度数目。这些主成分能够最大程度地保留原始数据中的方差信息,从而实现了数据的降维。
  5. 数据投影:最后,通过将原始数据投影到选取的主成分上,得到了降维后的数据表示,可以用于后续的分析和建模。

PCA通过线性变换的方式将高维数据转换为低维数据,从而挖掘数据的内在结构和特征,是一种强大的数据降维和特征提取工具。其原理主要包括去中心化、协方差矩阵计算、特征值分解和主成分选择等步骤,通过这些步骤,PCA能够帮助我们更好地理解和利用复杂的多维数据。

2.3 PCA在乳腺癌研究中的应用潜力

在乳腺癌研究领域,PCA可以被用于处理包含大量乳腺癌患者临床数据和生物标记物数据的高维数据集。通过PCA技术,可以将这些高维数据进行降维处理,发现数据中的潜在模式和相关特征,有助于识别潜在的生物标记物、预测乳腺癌的发生风险以及患者的预后情况。此外,PCA还可以帮助科研人员在乳腺癌研究中构建更加简洁和有效的预测模型,促进对乳腺癌发病机制和治疗效果的深入理解。

三、实例演示

  • 「数据集准备」
library(survival)
head(gbsg)

结果展示:

   pid age meno size grade nodes pgr er hormon rfstime status
1  132  49    0   18     2     2   0  0      0    1838      0
2 1575  55    1   20     3    16   0  0      0     403      1
3 1140  56    1   40     3     3   0  0      0    1603      0
4  769  45    0   25     3     1   0  4      0     177      0
5  130  65    1   30     2     5   0 36      1    1855      0
6 1642  48    0   52     2    11   0  0      0     842      1
  • 「示例数据集介绍」
> str(gbsg)
'data.frame':   686 obs. of  10 variables:
 $ age    : int  49 55 56 45 65 48 48 37 67 45 ...
 $ meno   : int  0 1 1 0 1 0 0 0 1 0 ...
 $ size   : int  18 20 40 25 30 52 21 20 20 30 ...
 $ grade  : int  2 3 3 3 2 2 3 2 2 2 ...
 $ nodes  : int  2 16 3 1 5 11 8 9 1 1 ...
 $ pgr    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ er     : int  0 0 0 4 36 0 0 0 0 0 ...
 $ hormon : int  0 0 0 0 1 0 0 1 1 0 ...
 $ rfstime: int  1838 403 1603 177 1855 842 293 42 564 1093 ...
 $ status : Factor w/ 2 levels "0","1"1 2 1 1 1 2 2 1 2 2 ...

age:患者年龄
meno:更年期状态(0表示未更年期,1表示已更年期)
size:肿瘤大小
grade:肿瘤分级
nodes:受累淋巴结数量
pgr:孕激素受体表达水平
er:雌激素受体表达水平
hormon:激素治疗(0表示否,1表示是)
rfstime:复发或死亡时间(以天为单位)
status:事件状态(0表示被截尾,1表示事件发生)
  • 「主成分分析」
# 去除pid、分类变量和因变量
factors <- gbsg[,c(-1,-3,-5,-9,-11)]
# 进行主成分分析
pca_result <- prcomp(factors, scale. = TRUE)
pca_result
summary(pca_result)
plot(pca_result)
biplot(pca_result)

结果展示:

Standard deviations (1, .., p=6):
[11.2961594 1.1715555 0.9649744 0.9275627 0.7935553 0.7253623

Rotation (n x k) = (6 x 6):
               PC1        PC2         PC3        PC4         PC5          PC6
age      0.3412682 -0.3740719 -0.69109813 -0.2693484 -0.17943112 -0.401553922
size    -0.3583554 -0.4419920  0.35063073 -0.4831968 -0.56009059  0.078114616
nodes   -0.3745135 -0.5435354 -0.04154952 -0.1137996  0.74135742  0.004621285
pgr      0.4552824 -0.2943870  0.60575588  0.1896922  0.08062551 -0.544637856
er       0.5266290 -0.4166516  0.01333686  0.1424638 -0.02134891  0.726728121
rfstime  0.3608834  0.3301822  0.17492011 -0.7904068  0.31230743  0.088696352

> summary(pca_result)
Importance of components:
                         PC1    PC2    PC3    PC4    PC5     PC6
Standard deviation     1.296 1.1716 0.9650 0.9276 0.7936 0.72536
Proportion of Variance 0.280 0.2288 0.1552 0.1434 0.1050 0.08769
Cumulative Proportion  0.280 0.5088 0.6640 0.8074 0.9123 1.00000

「注意:」 主成分分析通常用于连续变量而不是分类变量。主成分分析是一种多变量统计技术,旨在减少数据维度并捕捉数据中的模式。它通过线性变换将原始变量转换为一组新的、不相关的变量,称为主成分。这些主成分是原始变量的线性组合,能够最大程度地保留原始数据的方差。

  • 「计算反差贡献」
# 提取每个主成分的方差贡献率
variance_proportion <- pca_result$sdev^2 / sum(pca_result$sdev^2)
# 计算累积方差贡献率
cumulative_variance_proportion <- cumsum(variance_proportion)

# 绘制保留方差图
plot(cumulative_variance_proportion, 
     xlab = "Number of Principal Components",
     ylab = "Cumulative Variance Proportion",
     ylim = c(01),
     type = 'b'
)

pca_score <- as.data.frame(pca_result$x)
# 通常选择贡献度大于80或者90%的作为分析变量
score <- pca_score[,c(-1,-2,-3)]
data <- cbind(gbsg[c(3,5,9,11)],score)
  • 「构建随机森林」
# 划分训练集和测试集
set.seed(123)
train_indices <- sample(x = 1:nrow(data), size = 0.8 * nrow(data), replace = FALSE)
test_indices <- sample(setdiff(1:nrow(data), train_indices), size = 0.2 * nrow(data), replace = FALSE)
train_data <- data[train_indices, ]
test_data <- data[test_indices, ]
train_gbsg <- gbsg[train_indices, ]
test_gbsg <- gbsg[test_indices, ]

library(randomForest)
library(pROC)
set.seed(666)
# 主成分分析后模型
rf <- randomForest(status~., data=train_data)

# 获取模型预测的概率
pred_prob <- predict(rf, newdata = test_data, type = "class")
# 计算真阳性率和假阳性率
roc1 <- pROC::roc(test_data$status, pred_prob)

# 原始数据模型
# 特征选择后的模型拟合
rf_handle <- randomForest(status~., data=train_gbsg)
pred_prob_handle <- predict(rf_handle, newdata = test_gbsg, type = "class")
# 计算真阳性率和假阳性率
roc2 <- pROC::roc(test_gbsg$status, pred_prob_handle)

plot(roc1,col="#2E9FDF", legacy.axes = TRUE)
plot.roc(roc2,add=TRUE,col="red")

abline(h = seq(01, by = 0.1), col = "gray", lty = "dotted")
legend(0.400.17,  # 图例位置x,y
       bty = "n",   # 图例样式
       legend=c("Handle AUC 0.684","Unhandle AUC 0.854"),  # 添加分组
       col=c("#2E9FDF","red"),  # 颜色跟前面一致
       lwd=2,
    border="black")  # 线条粗

主成分分析(PCA)是一种无监督学习方法,它的目标是通过线性变换将原始变量转换为一组不相关的主成分,以尽可能保留原始数据的方差。在某些情况下,「经过主成分分析的数据用于训练模型可能导致AUC(曲线下面积)值较原始数据训练的模型低的情况」。这可能是由以下几个原因导致的:

  • 信息丢失:主成分分析是通过保留尽可能多的数据方差来减少数据的维度,但在这个过程中也可能会损失一些有助于区分不同类别的信息。因此,PCA可能会导致模型在进行分类任务时丢失了一些重要的特征信息。
  • 噪声影响:主成分分析可能会放大数据中的噪声,而在一些情况下,这些噪声可能会影响模型的性能,使得模型在新数据上的泛化能力降低。
  • 非线性关系:主成分分析是一种线性变换方法,它假设变量之间的关系是线性的。然而,如果原始数据包含复杂的非线性关系,那么经过主成分分析后得到的特征可能无法很好地表示这些非线性关系,导致模型性能下降。

「为了解决这个问题,可以考虑以下几点:」

  • 考虑使用非线性降维方法,如核主成分分析(Kernel PCA),它可以更好地处理非线性关系。
  • 考虑仔细选择保留的主成分数量,以保留足够的信息同时最小化信息损失。
  • 对比不同的降维方法,例如t-SNE、UMAP等,并评估它们在模型训练和性能上的表现。
  • 在使用PCA进行降维时,可以考虑将其作为特征预处理的一部分,并与其他特征选择或降维方法结合使用,以期望提高模型性能。

四、总结

在乳腺癌研究中,主成分分析(PCA)和随机森林都扮演着重要的角色。PCA可以用于降维,帮助去除数据中的冗余信息,凸显出最重要的特征,从而有助于更好地理解乳腺癌数据集的内在结构。通过这种降维的方式,可以更好地可视化数据、识别潜在的模式,并为后续建模提供更清晰的特征空间。

另一方面,随机森林是一种强大的机器学习算法,它在处理复杂的、高维度的数据集时表现优异。在乳腺癌研究中,随机森林可以用于特征选择和分类任务,能够有效地处理大量特征并且对噪声具有一定的鲁棒性,因此能够提供对乳腺癌数据进行有效分类和预测的能力。

数据科学在医疗领域的应用前景广阔。随着医疗技术的不断进步,数据的积累和共享成为可能,数据科学将在医疗领域发挥越来越重要的作用。

  • 个性化医疗:利用大数据和机器学习技术,可以实现对患者病情、治疗反应等个性化特征的分析,从而实现个性化的医疗方案,提高治疗效果和患者生活质量。
  • 疾病预测和预防:通过对大规模医疗数据的分析,可以发现潜在的疾病发生规律和风险因素,从而提前预测和预防疾病的发生,有助于公共卫生和健康管理工作。
  • 医疗资源优化:通过数据科学的方法,可以对医疗资源的分配和利用进行优化,提高医疗服务的效率和公平性。

总的来说,数据科学在医疗领域的发展将为医疗健康产业带来革命性的变化,为人类健康事业作出重要贡献。

*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/137137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s存储卷 PV和PVC

目录 emptyDir存储卷 hostPath存储卷 nfs共享存储卷 PVC 和 PV 生命周期 一个PV从创建到销毁的具体流程如下&#xff1a; 静态pvc 动态pvc 3、定义PVC 4、测试访问 搭建 StorageClass NFS&#xff0c;实现 NFS 的动态 PV 创建 1、在stor01节点上安装nfs&#xff0…

电商大促演变:拼多多百亿补贴的消费升级体验

出品| 大力财经 文 | 魏力 拼多多已经够便宜了&#xff0c;双十一还能怎么玩&#xff1f;作为一个曾经被认为是深耕五环外消费者的电商平台&#xff0c;这几年拼多多从五环外杀到市中心&#xff0c;现在的国人&#xff0c;不管是中产&#xff0c;还是职场小白&#xff0c;人人…

混沌系统在图像加密中的应用(小波混沌神经网络)

混沌系统在图像加密中的应用&#xff08;小波混沌神经网络&#xff09; 前言一、小波混沌神经网络模型二、拓展三、python代码 前言 小波混沌神经网络是一种神经网络模型&#xff0c;结合了小波变换和混沌理论&#xff0c;用于信号处理、分类和预测。该模型基于多层前向神经网…

VINS-Mono-后端优化 (三:视觉雅可比推导)

用逆深度是因为这样可以在优化中从优化3个变量降低到1个&#xff0c;降低优化的维度加快求解速度 用逆深度是因为当距离很远的时候&#xff0c; 1 x \frac{1}{x} x1​ x x x 就会无穷大&#xff0c;而3D点很近的情况也一般不会有&#xff0c;这也是为了数值稳定性 用逆深度的…

C语言求解:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位(约瑟夫问题)

完整代码&#xff1a; /* 有n个人围成一圈&#xff0c;顺序排号。从第一个人开始报数&#xff08;从1到3报数&#xff09;&#xff0c;凡报到3的人 退出圈子&#xff0c;问最后留下的是原来第几号的那位*/ #include<stdio.h>//约瑟夫问题 //递推关系f(n)(f(n-1)2)\mod n…

(动手学习深度学习)第13章 计算机视觉---图像增广与微调

13.1 图像增广 总结 数据增广通过变形数据来获取多样性从而使得模型泛化性能更好常见图片增广包裹翻转、切割、变色。 图像增广代码实现

线性代数 | 矩阵运算 加减 数乘 矩阵的幂运算

文章目录 1 矩阵加减和数乘2 矩阵与矩阵的乘法2.1 相乘条件&#xff1a;看中间&#xff0c;取两头2.2 相乘计算方法 3 矩阵的幂3.1 观察归纳法3.2 邻项相消法3.3 化为对角 4 判断是否可逆&#xff08;证明题或者要求求出逆矩阵&#xff09;4.1 直接观察4.2 由定义式推得4.2.1 待…

包教包会:Mysql主从复制搭建

笑小枫的专属目录 一、无聊的理论知识1. 主从复制原理2. 主从复制的工作过程3. MySQL四种同步方式 二、docker下安装、启动mysql1. 安装主库2. 安装从库 三、配置Master(主)四、配置Slave(从)五、链接Master(主)和Slave(从)六、主从复制排错1. 错误&#xff1a;error connectin…

win10 下 ros + Qt 工程CMakeLists.txt

win10 下 ros Qt 工程CMakeLists.txt 系统&#xff1a;win10 ros: melodic Qt: 5.12.12 源码目录: D:\workspace\catkin_qt 示例代码 https://github.com/ncnynl/ros-qt.git 由于示例代码是Qt4 &#xff0c;目前我是用QT5,所以CMakeLists.txt 修改如下 CMakeLists.txt #####…

asp.net core weapi 结合identity完成登录注册

1.安装所需要的nuget包 <PackageReference Include"Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version"6.0.24" /><PackageReference Include"Microsoft.EntityFrameworkCore" Version"6.0.24" /><PackageR…

算法--数据结构

这里写目录标题 本节内容链表与邻接表链表主要思想链表操作初始化在head结点后面插入普通插入删除操作 例子 双链表&#xff08;双向循环链表&#xff09;主要思想操作初始化双向插入删除第k个点 邻接表主要思想 栈和队列栈主要思想主要操作 队列主要思想操作 单调栈与单调队列…

通用工作站设计方案 :807-ORI-S3R500 -多路PCIe3.0的单CPU通用工作站

ORI-S3R500 -多路PCIe3.0的单CPU通用工作站 (研华工业计算机IPC-610&#xff0c;IPC940 升级款) 一、机箱功能和技术指标&#xff1a; 系统 系统型号 ORI-SR500 主板支持 EEB(12*13)/CEB(12*10.5)/ATX(12*9.6)/Mi cro ATX 前置硬盘 最大支持2个3.5寸1个2.5寸SATA …

驱动基石之_tasklet中断下半部_工作队列_中断线程化处理

tasklet中断下半部 linux的中断分为两个部分&#xff1a; 1.中断上半部&#xff1a;在中断上半部期间&#xff0c;不允许被其他中断打断&#xff0c;直到中断上半部的服务函数执行完。 2.中断下半部&#xff1a;中断下半部&#xff0c;在执行中断下半部服务函数的期间&#xf…

10 个适用于 Windows 的最佳 PDF 编辑器,用于轻松编辑 PDF 文件

PDF 是当今最流行的文件格式之一。Adobe 于 1993 年开发了 PDF 文件格式。PDF&#xff08;便携式文档格式&#xff09;主要用于存储复杂的文本文档和电子书。PDF 文件包含固定的布局属性&#xff0c;并且可以存储大量文本和图形。PDF 文件格式主要用于分发大型文档。 使用 PDF…

【中间件篇-Redis缓存数据库03】Redis高级特性和应用(发布 订阅、Stream)

Redis高级特性和应用(发布 订阅、Stream) 发布和订阅 Redis提供了基于“发布/订阅”模式的消息机制&#xff0c;此种模式下&#xff0c;消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道( channel)发布消息&#xff0c;订阅该频道的每个客户端都可以收到该消息。 …

asp.net校园招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 校园招聘管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 应用技术&#xff1a;asp.net c#s…

HackTheBox-Starting Point--Tier 2---Base

文章目录 一 题目二 过程记录2.1 打点2.2 权限获取2.3 横向移动2.4 权限提升 一 题目 Tags Web、Vulnerability Assessment、Custom Applications、Source Code Analysis、Authentication、Apache、PHP、Reconnaissance、Web Site Structure Discovery、SUDO Exploitation、Au…

XOR Construction

思路&#xff1a; 通过题目可以得出结论 b1^b2a1 b2^b3a2 ....... bn-1^bnan-1 所以就可以得出 (b1^b2)^(b2^b3)a1^a2 b1^b3a1^a2 有因为当确定一个数的时候就可以通过异或得到其他所有的数&#xff0c;且题目所求的是一个n-1的全排列 那么求出a的前缀异或和arr之后…

原型制作神器ProtoPie的使用Unity与网页跨端交互

什么是ProtoPie&#xff1f; ProtoPie是一款面向设计师的软件原型设计工具&#xff0c;例如制作App界面交互展示&#xff0c;制作好的原型可以一键发布到Web服务器&#xff0c;就可以浏览器访问。由于其内置了大量常用交互类型&#xff0c;以及"程序化"模块&#xf…

【Redis】掌握篇--Redis与SSM进行整合

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Redis的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Redis与SSM的整合 1.添加Redis依赖 …