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

简介: 降维·预测·救命: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):
[1] 1.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(0, 1),
     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(0, 1, by = 0.1), col = "gray", lty = "dotted")
legend(0.40, 0.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可以用于降维,帮助去除数据中的冗余信息,凸显出最重要的特征,从而有助于更好地理解乳腺癌数据集的内在结构。通过这种降维的方式,可以更好地可视化数据、识别潜在的模式,并为后续建模提供更清晰的特征空间。

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

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

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

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

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

目录
相关文章
|
17天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
|
13天前
|
机器学习/深度学习 数据可视化
R语言MCMC的lme4二元对数Logistic逻辑回归混合效应模型分析吸烟、喝酒和赌博影响数据
R语言MCMC的lme4二元对数Logistic逻辑回归混合效应模型分析吸烟、喝酒和赌博影响数据
|
3天前
|
机器学习/深度学习 算法 数据库
数据分享|R语言用核Fisher判别方法、支持向量机、决策树与随机森林研究客户流失情况
数据分享|R语言用核Fisher判别方法、支持向量机、决策树与随机森林研究客户流失情况
|
9天前
|
机器学习/深度学习
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享(上)
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享
|
9天前
|
机器学习/深度学习 数据可视化
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享(下)
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享
|
15天前
|
机器学习/深度学习 自然语言处理 算法
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享(下)
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享
|
15天前
|
机器学习/深度学习 算法 大数据
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享(上)
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享
|
17天前
|
机器学习/深度学习 算法 Python
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-1
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-1
|
22天前
|
数据可视化
主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化
主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化
|
23天前
R语言样条曲线、泊松回归模型估计女性直肠癌患者标准化发病率(SIR)、死亡率(SMR)
R语言样条曲线、泊松回归模型估计女性直肠癌患者标准化发病率(SIR)、死亡率(SMR)