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

news2025/1/11 20:03:03

一、引言

乳腺癌作为女性健康领域的一大挑战,对全球范围内的女性健康产生了深远影响。据世界卫生组织(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.coloradmin.cn/o/1198761.html

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

相关文章

【LeetCode刷题笔记】滑动窗口

992. K 个不同整数的子数组 解题思路: 滑动窗口 , 题目问题转化为: 求 「最多存在 K 个不同整数的子数组的个数」 与 「最多存在 K - 1 个不同整数的子数组的个数」 之差, 就是题目所求的 「恰好存在 K 个不同整数的子数组的个数」 , 最终问题就变成求解滑动窗口内,以 R …

Mac媒体播放器 Fig Player 1.3.7

Fig Player是一款功能强大的多媒体播放器软件&#xff0c;适用于macOS操作系统。它支持广泛的音频和视频格式&#xff0c;如MP3、MP4、AVI、MKV等&#xff0c;并提供了直观易用的用户界面&#xff0c;使用户可以轻松浏览和管理媒体库。 Fig Player具有快速加载和播放媒体文件的…

在 Azure 上构建和部署自然语言处理模型

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是人工智能领域中的重要分支之一&#xff0c;它涉及对人类语言进行理解和分析。在 Azure 平台上&#xff0c;我们可以利用丰富的工具和服务来构建和部署自然语言处理模型&#xff0c;实现从文本…

PTA_乙级_1086

#include <iostream> #include<string> #include<algorithm> using namespace std;int reverseNum(int n){//将数字n转为字符串string nStrto_string(n);//翻转字符串reverse(nStr.begin(),nStr.end());//转为数字int resstoi(nStr);return res; }int main()…

六:ffmpe音频参数的使用

-aframes 设置要输出的音频帧数 -b:a 设置音频码率 -ar 设定采样率 -ac 设定声音的Channel数 -acodec 设定声音的编解码器&#xff0c;如果用copy标识原始编解码数据必须被copy -an 不处理音频 -af 音频过滤器 写笔记前查阅了其它说明&#xff0c; -aframes&#xff1a;等价…

基于JavaWeb+SSM+Vue校内校园二手交易微信小程序系统的设计和实现

基于JavaWebSSMVue校内校园二手交易微信小程序系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应…

【算法|二分查找No.6】leetcode 153. 寻找旋转排序数组中的最小值

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

回收站清空了怎么恢复?数据恢复的 6 种方法

众所周知&#xff0c;计算机中的回收站是一个存储空间&#xff0c;用于存储从计算机系统中删除的所有文件、文件夹或数据。它是大多数计算机系统&#xff08;包括Windows、Mac等&#xff09;上的必备功能。当从计算机中删除文件或文件夹时&#xff0c;它会在回收站中存储指定的…

MySQL最新2023年面试题及答案,汇总版(5)【MySQL最新2023年面试题及答案,汇总版-第三十五刊】

文章目录 MySQL最新2023年面试题及答案&#xff0c;汇总版(5)01、对MySQL的锁了解吗&#xff1f;02、MySQL中有哪几种锁&#xff1f;03、如何删除索引&#xff1f;04、索引能干什么?05、MySql, Oracle&#xff0c;Sql Service的区别&#xff1f;06、varchar与char的区别&#…

体验前所未有的显示器管理体验:BetterDisplay Pro Mac

在现代的数字化时代&#xff0c;显示器是我们日常生活和工作中不可或缺的一部分。从笔记本电脑到台式机&#xff0c;从平板电脑到手机&#xff0c;几乎所有的电子设备都配备了显示器。然而&#xff0c;对于专业人士和从事设计行业的人来说&#xff0c;仅仅依靠系统自带的显示器…

网网络安全基础之php开发 文件读取、写入功能的实现

前言 续之前的系列&#xff0c;这里php开发的文件操作的内容读取以及文本写入的部分 文件读取代码的实现 css代码 本系列的php博客都是这个css&#xff0c;名字都是index.css /* css样式初始化 */ * {font-family: Poppins, sans-serif;margin: 0;padding: 0;box-sizing: …

Python读取csv文件并绘制曲线

前言 有时候我们的数据保存在csv文件中&#xff0c;但是想要更加直观的看出数据的好坏&#xff0c;最好利用matplotlib来画出曲线图 数据准备 我的数据格式如下&#xff1a; 在画图时&#xff0c;我需要把第一行去掉 # 去除第一个元素 xdata xdata.drop(xdata.index[0])…

简单描述下微信小程序的相关文件类型以及微信小程序和uniapp的区别?

前言 微信小程序是一种基于微信平台的轻量级应用&#xff0c;其文件类型涵盖了不同用途的文件。了解这些文件类型能帮助开发者更好地构建小程序。 微信小程序是微信平台上的一种轻量级应用程序&#xff0c;为用户提供了一种便捷的方式来在微信生态系统内进行各种操作和获取服务…

【已解决】ModuleNotFoundError: No module named ‘sklearn‘

问题描述 Traceback (most recent call last): File "/home/visionx/nickle/temp/SimCLR/linear_evaluation.py", line 210, in <module> from sklearn.manifold import TSNE ModuleNotFoundError: No module named sklearn 解决办法 pip install numpy…

Longhorn跨AZ实现存储高可用

Longhorn跨AZ实现存储高可用 longhorn基础组件功能及其作用这里就不做介绍了 方案一 Longhorn跨AZ的高可用的就是一个PVC的replicas 均匀打散的不同的AZ区域之间&#xff0c;这样当某个AZ挂掉后&#xff0c;engine会立即使用另外一个数据副本&#xff0c;并重建这个副本&…

pip如何切换至国内镜像

目录 前言一、pip介绍二、超时问题三、切换至国内镜像源1.操作环境2.切换国内镜像 四、国内pip镜像源总结 前言 大家好&#xff0c;我是&#x1f40c;蜗牛老师。今天讲在 Python 编程学习或开发中遇到的一个小问题&#xff0c;又是我们经常会遇到的一个问题。那就是切换镜像&a…

【算法】牛的旅行(图的直径,floyd算法求最短路)

题目 农民John的农场里有很多牧区&#xff0c;有的路径连接一些特定的牧区。 一片所有连通的牧区称为一个牧场。 但是就目前而言&#xff0c;你能看到至少有两个牧区不连通。 现在&#xff0c;John想在农场里添加一条路径&#xff08;注意&#xff0c;恰好一条&#xff09;。 一…

SpringBoot代码生成器mapper model

Spring Boot 是一个由 Pivotal 团队提供的全新框架&#xff0c;设计目的是简化新 Spring 应用的初始搭建和开发过程。它采用特定的配置方式&#xff0c;使开发人员能够快速上手并构建基于 Spring 的应用程序。Spring Boot 提供了一套默认配置&#xff0c;包括 Spring、Spring M…

Java TreeMap

TreeMap 是一个基于 key 有序的 key value 散列表。 map 根据其键的自然顺序排序&#xff0c;或者根据 map 创建时提供的 Comparator 排序不是线程安全的key 不可以存入null底层是基于红黑树实现的 TreeMap 的类结构图&#xff1a; 实现了 NavigableMap 接口&#xff0c;Na…