




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
医学大数据分析数据降维高等教育出版社CONTENTS目录1数据降维简介2主成分分析方法3Lasso算法4思考题1数据降维简介
数据降维(DimensionReduction)就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。降维的本质是学习一个映射函数f:x->y,其中x是原始数据点的表达,也是目前最常用的向量表达形式。y是数据点映射后的低维向量表达,通常y的维度小于x的维度。f可能是显式的或隐式的、线性的或非线性的。数据降维的概念监督学习中的训练数据降维图像处理的特征降维数据降维的优点在监督学习中,当训练数据的维数很多时候,很容易引起过拟合的问题,因为数据维度高意味着模型的变量多,也就是所用模型的复杂度很高。这种情况下使用数据降维对训练数据的自变量进行降维能有效解决过拟合问题,还能使模型的工程实现难度降低,更容易得到正确的参数估计值;并且有效地消除随机噪声因素的影响,更好地抓住数据的主要特征。图像处理常常涉及很高维的数据,比如对于一个长边有m个像素点,宽边有n个像素点的图片,表示它的向量为m*n维。处理这种高维数据是很困难的,因此我们常常使用数据降维的方法减少图像特征,使图像信息浓缩到较低维度的向量。数据降维的直观好处是降低维度,便于计算和可视化,其更深层次的意义在于提取有效信息,摒弃无用信息。数据降维的应用主成分分析法主成分分析法(PrincipalComponentAnalysis,PCA)是一种有效的常用数据降维方法,主要用在指标综合评价、减少特征数量等方面。Lasso方法Lasso(Leastabsoluteshrinkageandselectionoperator)是1996年由多伦多大学RobertTibshirani提出的,是另一种数据降维方法,该方法不仅适用于线性情况,也适用于非线性情况。数据降维主要有以下两种方法数据降维的方法2主成分分析方法
主成分分析主要用在指标综合评价、减少特征数量等方面,例如证券投资、医院综合评价、经济评价、教学质量评价、财务管理与分析等众多领域。主成分分析在医学领域有不少应用,例如臧书芹将PCA应用于直肠癌新辅助放射化学治疗效果磁共振影像,共提取到1409个组学特征,采用PCA法进行特征值降维,将影像组学特征重新组合为新的特征,选取前5个最能代表整个影像组学特征矩阵的特征。王琪如将PCA用百岁老人健康状况综合评价的37项生化指标进行降维后得到8个综合指标。主成分分析主要应用领域基本原理主成分分析的定义主成分分析是设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中取出几个较少的综合变量尽可能多地反映原来变量信息的方法。主成分分析的R语言实现在R语言中实现主成分分析可使用princomp()函数。主成分分析的优缺点主成分分析的优点是可以提取数据的主要信息,并且其误差最小。缺点是主成分分析将所有的样本(特征向量集合)作为一个整体对待,去寻找一个均方误差最小意义下的最优线性映射投影,而忽略了类别属性,而它所忽略的投影方向有可能刚好包含了重要的可分性信息。主成分分析的步骤主成分分析的步骤包括对各原始数据进行标准化,再求出相关矩阵,接着求出相关矩阵的特征值和特征值所对应的特征向量,最后提取主成分并获得主成分的表达式。01020304主成分分析基本原理不同指标在类型、量纲和数量级上存在差别,因此需要对数据进行标准化处理,通过适当的变化,转换为无量纲的标准化指标。对原始数据进行标准化处理
主成分分析步骤01计算样本相关系数矩阵
主成分分析步骤02
主成分分析步骤03计算主成分贡献率及累计贡献率
主成分分析步骤04计算主成分得分
主成分分析步骤05在R语言中实现主成分分析可使用princomp()函数,其格式有两种:格式一:princomp(formula,data=NULL,subset,na.action,...)格式二:princomp(x,cor=FALSE,scores=TRUE,covmat=NULL,subset=rep(TRUE,nrow(as.matrix(x))),...)上述函数中,cor默认值为FALSE,表示指示计算应该使用相关矩阵,如果cor=TRUE,表示计算应该使用协方差矩阵;scores默认为TRUE,指示是否计算每个主成分上的分数。princomp()函数的返回值参数包括sdev为标准差、loadings为特征向量矩阵、scores为每个主成分上的分数。主成分分析的R语言实现应用场景主成分分析应用实例为了研究全国各地区医疗发展状况,以31个地区为主要研究对象,选取10个指标,运用主成分分析,根据结果对全国各区域医疗水平状况作出分析与评价。研究数据来自2019中国卫生健康统计年鉴:X1:医疗卫生机构数(个) x2:三级医院数(个)x3:卫生人员数(人) X4:每千人口卫生技术人员数(人)x5:医院人员数(人) X6:医疗卫生机构床位数(张)x7:每千人口医疗卫生机构床位(张) X8:卫生总费用(亿元)x9:人均卫生总费用(元) x10:基本医疗保险参保人数(万人)主成分分析应用实例地区X1X2X3X4X5X6X7X8X9X10北京10058102326102122267371236265.742193.810106.41771天津5686431325256.790765682474.37864.745554.361089河北85088716239746.13657724219165.582197.12921.866883山西42079573308916.61976922083055.61087.742938.243215内蒙古24610802414247.41482811590066.271010.413995.952162辽宁3602913439191972672343144407.211605.713675.322278吉林22691512414246.81477981669946.181007.533707.671381黑龙江20349962996366.11954332501296.631342.253542.762893上海5293472382258.11598111390295.742087.098630.31840江苏332541617393147.34425904915226.113691.214597.187619浙江327541345893578.53761273320865.792826.044995.655252安徽24925684269565.32651333281235.191812.242897.372108福建27590773185036.31825731924734.881407.523598.893769江西36545693258475.31790902494905.371256.222717.894762山东814701819613607.45534396084596.063570.823568.749296河南71351948631676.54093616085196.342747.672874.4310411湖北364861305219306.93008843935146.652174.453698.895622湖南56239795578086.33283284824396.992147.283130.086906广东514512069183966.75527245169294.564619.234135.7610365广西33742774203606.52162012559405.21392.982851.555173海南532522813876.848091448004.8369.493991.16420重庆20524482727946.71666372201047.11179.673836.113249四川815372007463226.74382025988987.183055.643680.67715贵州28066583233816.81907932456396.821044.072916.381001云南24954693897706.22308632911946.031511.853149.364464西藏684412368065.515950167874.88139.284131.0470陕西35300644108968.52583662537116.571538.054010.091251甘肃278973720704561127961627376.17812.73095.172512青海639620593697.437119391466.49270.084513.492512宁夏445013657647.743680410055.96298.864383.5618新疆18450482271367.11462781788817.191088.834453.891040从原始表格可以看出,每一列数的单位是不统一的,因此需要对它作标准化处理,才能原始进行主成分分析。读入原始数据并对数据进行标准化将原始数据读入并将数据进行标准化可以使用如下代码实现:setwd("d:/test")data<-read.csv("./wsnj1.csv")#读入原始数据std_data=scale(data[2:11])#数据标准化rownames(std_data)=data[[1]]#数组各行名字定义为数据文件的第一列经过数据标准化以后,数据转换为如下图所示的格式,每一列数据的单位得到统一。01主成分分析应用实例主成分分析应用实例数据标准化结果计算相关系数矩阵
相关系数是用以反映变量之间相关关系密切程度的统计指标。使用如下代码求相关系数矩阵:cor(df)#求相关系数矩阵
求得相关系数矩阵如下图所示:02主成分分析应用实例求特征值和特征向量求特征值和特征向量可以直接使用eigen()函数,该函数返回的特征值存放在values里面,特征向量存放在vectors里面。y=eigen(cor(df))#求特征值与特征向量y$values#显示特征值y$vectors#显示特征向量03主成分分析应用实例输出前三个累计贡献率sum(y$values[1:3])/sum(y$values)#求前3个主成分的累计方差贡献率
从计算结果可以得到前三个因子的累计贡献率为93.05%。同时,可以利用如下命令画出碎石图,以方便我们更主观地找出主成分。screeplot(df.pr,type='line')#type表示画线的类型04主成分分析应用实例输出前三个累计贡献率04主成分分析应用实例图中横坐标表示第一主成分(Comp.1)到第十主成分(Comp.10),纵坐标表示标准差的平方。从上图可以看出,前三个主成分的标准差平方均大于1。主成分分析为了简化上述的计算过程,使用R语言的princomp()函数可以直接实现主成分分析并计算载荷矩阵(载荷矩阵是数据X的协方差矩阵的特征向量)。具体实现代码如下,其中cor=TRUE表示计算时使用相关矩阵,如果cor=FALSE则表示使用协方差矩阵,loadings表示是否计算载荷。df.pr<-princomp(std_data,cor=TRUE)#主成分分析summary(df.pr,loading=TRUE)#列出结果包含特征向量05主成分分析应用实例主成分分析结果05主成分分析应用实例F1=0.35x1+0.353x2+0.396x3+0.393x5+0.391x6+0.367x8+0.373x10F2=0.182x1-0.175x2-0.66x4-0.221x8-0.658x9F3=0.19x4+0.947x7-0.146x8-0.13x10综合得分函数为:F=0.624F1+0.199F2+0.106F3主成分分析05主成分分析应用实例第一主成分与x4(每千人口卫生技术人员数)、x7(每千人口医疗卫生机构床位)x9(人均卫生总费用)这几个指标无关,其余成分的相关性为35%左右。第二主成分与x3(卫生人员数)、x5(医院人员数)、x6(医疗卫生机构床位数)、x7(每千人口医疗卫生机构床位)、x10(基本医疗保险参保人数)这几个指标无关,其中x4(每千人口卫生技术人员数)和x9(人均卫生总费用)相关性为66%左右。第三主成分只与x4(每千人口卫生技术人员数)、x7(每千人口医疗卫生机构床位)、x8(卫生总费用)、x10(基本医疗保险参保人数)这几个指标有关,其中x7(每千人口医疗卫生机构床位)相关性较强。具体实现代码如下:s=df.pr$scores[,1:3]#从scores里面获得前3个主成分的得分scores=0.0for(iin1:3)scores=(y$values[i]*s[,i])/(sum(y$values[1:3]))+scoress1<-cbind(s,scores)#输出综合得分信息s2<-s1[order(s1[,4],decreasing=T),]#按综合得分降序write.csv(s2,file="./score2.csv")#生成CSV文件主成分分析05主成分分析应用实例根据上面的3个主成分的线性组合方程,我们可以将标准化后的数据带入计算,最终可以得到表6.2综合得分与排名表。从表6.2可以看出山东综合得分最高,西藏综合得分最低。3Lasso算法引子Lasso算法目前,三维医学图像分析和生物技术的兴起带来了高维数据。例如生物技术中,人体的DNA上有数以万计的基因数据。哪些基因是致病基因?哪些是无关基因?这是生物学家感兴趣的问题。另一方面,由于成本等问题的限制,无法收集到很多样本并进行基因检测。高维数据分析应运而生。对于高维数据,维数灾难所带来的过拟合问题,其解决思路是:1.增加样本量;2.减少样本特征,而现实中会存在所能获取到的样本数据量有限的情况,甚至样本量(n)远小于数据维度(d),即:d>>n。在这种情况下,变量选择方法变得更加重要。在本节,我们将介绍变量选择中一个非常经典的模型和实现——Lasso。基本概念Lasso算法Lasso(Leastabsoluteshrinkageandselectionoperator)是1996年由多伦多大学RobertTibshirani提出的,是另一种数据降维方法,该方法不仅适用于线性情况,也适用于非线性情况。Lasso是基于惩罚方法对样本数据进行变量选择,通过对原本的系数进行压缩,将原本很小的系数直接压缩至0,从而将这部分系数所对应的变量视为非显著性变量,将不显著的变量直接舍弃。Lasso不同于传统的逐步回归的最大之处是它可以对所有的独立变量同时进行处理,这一改进使得建模的稳定性大大提高。除此之外,Lasso还具有运算速度快、模型筛选出来的特征可解释性高、模型不容易出现过拟合现象等优点。而模型的发明者Tibshirani教授也因此获得当年有统计学诺贝尔奖之称的考普斯总统奖(COPSSaward)。
Lasso算法的基本原理
Lasso算法的基本原理Lasso模型特点
Lasso算法的基本原理特征选择模型的评价有两种常用方法:交叉验证法和CP统计量
Lasso算法的基本原理R语言中有多个包可以实现Lasso,包括使用lars包和glmnet包实现。lars包实现:lars包的lars()函数提供了通过回归变量x和因变量y求解其回归解路径的功能。Lasso算法在R语言中的实现glmnet包实现:glmnet主要用于拟合广义线性模型。筛选可以使损失达到最小的正则化参数lambda。Glmnet包提供了glmnet()函数用于拟合模型,
cv.glmnet()函数用于k倍交叉验证拟合模型,coef用于提取指定lambda时特征的系数。Lasso算法在R语言中的实现——lars包实现
Lasso算法在R语言中的实现——glmnet包实现glmnet主要用于拟合广义线性模型。筛选可以使损失达到最小的正则化参数lambda。Glmnet包提供了glmnet()函数用于拟合模型,
cv.glmnet()函数用于k倍交叉验证拟合模型,coef用于提取指定lambda时特征的系数。glmnet()函数的格式为:glmnet(x,y,family…)其中x为自变量,y为因变量,参数family规定了回归模型的类型:—family=”gaussian”适用于一维连续因变量—family=”mgaussian”适用于多维连续因变量—family=”poisson”适用于非负次数因变量(count)—family=”binomial”适用于二元离散因变量(binary)—family=”multinomial”适用于多元离散因变量(category)cv.glmnet()函数其格式为:cv.glmnet(x,y,weights=NULL,lambda=NULL,nfolds=10…)其中x为自变量,y为因变量,参数nfolds=10表示使用10倍交叉验证。应用案例-在糖尿病血液等化验指标的优化Lasso算法
糖尿病数据(diabetes)是关于糖尿病的血液等化验指标,来自于Efronetal.(2004),该数据包含在R程序包lars中,数据除了因变量y之外,还有两个自变量矩阵x和x2,前者是标准化的442*10矩阵,包含了age、sex、bmi、map、tc、ldl、hdl、tch、itg、glu共10个指标,后者是442*64矩阵,包括前者及一些交互作用。01020304在糖尿病血液等化验指标的优化获取糖尿病数据把数据中的自变量和因变量转换为矩阵利用lars()函数进行Lasso利用交叉验证法来选择特征Lasso算法的应用案例——在糖尿病血液等化验指标的优化05通过CP最小值选择特征06实现Lasso的另外一种方法--采用glmnet包获取糖尿病数据library(lars)#加载lars包data(diabetes)attach(diabetes)#获取糖尿病数据w<-cbind(diabetes$x,diabetes$y,diabetes$x2)糖尿病数据包含在R程序包的lars,因此如果没有安装到lars包,需要使用installed.packages(“lars”)命令进行安装。接着,获取糖尿病数据(diabetes)并传到w中。01Lasso算法的应用案例——在糖尿病血液等化验指标的优化把数据中的自变量和因变量转换为矩阵x<-as.matrix(w[,1:10])y<-as.matrix(w[,11])#y为因变量x2<-as.matrix(w[,12:75])上述代码把数据转换为矩阵形式,其中自变量x获得1-10列数据,自变量x2获得12-75列数据,因变量y获得第11列数据。02Lasso算法的应用案例——在糖尿病血液等化验指标的优化利用lars()函数进行Lassolaa<-lars(x2,y,type="lasso")#使用lasso方法plot(laa)lars()中x2为自变量,y为因变量,因为lars()函数默认方法为lasso,所以第3个参数也可以不写。用plot()画出其求解路径(solutionpath)的图像结果如图6.6所示。可以看到图中的竖线对应于lasso中迭代的次数,对应的系数值不为0的自变量即为选入的特征。03Lasso算法的应用案例——在糖尿病血液等化验指标的优化利用lars()函数进行Lasso03Lasso算法的应用案例——在糖尿病血液等化验指标的优化summary(laa)#汇总统计结果,共104步汇总结果如图所示:利用lars()函数进行Lasso03Lasso算法的应用案例——在糖尿病血液等化验指标的优化在运行结果中,Df表示步数,CP为评价回归的一个指标,值越小越好。本次Lasso一共尝试了104次。据此,选取CP最小的模型,就是第15步(CP=18.198)在这里我们可以看到lars一次给了其求解路径上的所有解,我们需要确定其中哪个解是我们真正要用到的。在lasso模型中,约束项由参数lambda进行控制,当给定了lambda,模型才能够确定下来。一个好的回归模型,需要给定一个合适的lambda,但是lamda的范围往往比较大。注意到lars算法给出的解路径上的解个数是有限的,不同的解即不同的beta就对应了不同的lambda,我们可以通过选定算法的step步数或者选定beta饱和度|beta|/max|beta|(此处||表示1范数,饱和度同样也表征了解的稀疏度)来选定模型的参数,接下来就要用到lars包中的cv.lars()函数。利用交叉验证法来选择变量cva<-cv.lars(x2,y,K=10,plot.it=TRUE)#10倍交叉验证,并绘制cv的变化图best<-cva$index[which.min(cva$cv)]coef<-coef.lars(laa,mode="fraction",s=best)#使得CV最小时的系数coef[coef!=0]#通过CV选择的特征04Lasso算法的应用案例——在糖尿病血液等化验指标的优化Lasso算法的应用案例——在糖尿病血液等化验指标的优化得到交叉验证的均方误差MSE分析结果如下图所示:利用交叉验证法来选择变量04从上图可以看到由交叉验证得到的最优回归系数(使得均方误差MSE最小)是稀疏的。通过10倍交叉验证法选择的变量如下图所示,一共选择了13个变量。通过CP最小值选择特征laa$Cp[which.min(laa$Cp)]#最小的Cp值及其步数coef1<-coef.lars(laa,mode="step",s=15)#使得Cp最小时的系数(s=15)coef1[coef1!=0]#通过CP选择的特征通过CP最小来选择变量如下图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国托盘轨道滚筒数据监测研究报告
- DB63T 1601-2025 高海拔高寒地区公路边坡生态防护技术验收规范
- 火灾紧急救助基本知识突发事件紧急救援基本知识
- 贴敷治疗操作规范
- 消防知识普及宣传教育培训课件
- 零售行业年度述职
- 现代农业产业链管理指南
- 黄疸肝炎患者后期护理
- 医疗器械经销代理合作合同
- 塔吊工劳务合同协议书
- 2025年光伏项目劳务分包合同模板
- 2024福建省能源石化集团有限责任公司秋季社会招聘120人笔试参考题库附带答案详解
- 2025年四川省对口招生(农林牧渔类)《农业经营与管理》考试复习题库(含答案)
- 2024年北京石景山区事业单位招聘笔试真题
- 脑心健康管理师的学习汇报
- 2024年高考物理考纲解读与热点难点突破专题12分子动理论气体及热力学定律教学案
- 2025年浙江杭州热联集团股份有限公司招聘笔试参考题库含答案解析
- 翡翠鉴定培训课件
- 电子商务文案策划与写作 课件 第5、6章 品牌类电子商务文案写作;推广类电子商务文案写作
- 2025年开封大学单招职业技能测试题库新版
- 财政投资评审咨询服务预算和结算评审项目投标文件(技术方案)
评论
0/150
提交评论