• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    教学以及管理操作教程

    教学以及管理操作教程

    ¥1,000.00 ¥100.00
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      教学以及管理操作教程

      教学以及管理操作教程

      ¥1,000.00 ¥100.00
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • 【机器学习】无监督学习之PCA

      【机器学习】无监督学习之PCA

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2015年11月4日
      测试开头

      主成分分析试图在保证数据信息丢失最少的原则下,将多变量的截面数据集进行最佳综合简化,简单地说就是根据多个指标之间的联系,选出它们的某种线性组合,从而化为少数几个综合指标。


      贡献率指某个主成分的方差占全部方差的比重,也就是某个特征值占全部特征值合计的比重。贡献率越大,说明该主成分所包含的原始变量的信息越强。主成分个数k的选取,主要根据主成分的累计方差贡献率来决定,一般要求累计贡献率达到80%-85%以上,这样才能保证新的综合变量能包括原始变量的绝大多数信息。


      碎石图(Scree plot)也可以作为判断主成分个数的标准,它以成分数为横坐标,特征值为纵坐标。碎石图相当于特征值变化趋势图,特征值由陡峭变为平坦的转折点即为选择主成分的最佳个数。

      主成分与原始变量之间的关系为:

      ①主成分保留了原始变量绝大多数信息:

      ②主成分个数远远少于原始变量的个数:

      ③各个主成分之间互不相关;

      ④每个主成分都是原始变量的线性组合。

      主成分分析的步骤

      ①计算相关系数矩阵;

      ②计算相关系数矩阵的特征根及对应的特征向量;

      ③选出最大的特征根,对应的特征向量等于第一主成分的系数:选出第二大的特征根,对应的特征向量等于第二主成分的系数;

      ④计算累积贡献率,选择恰当的主成分个数;

      ⑤写出前k个主成分的表达式。


      R语言实现PCA

      R语言中,有两个进行主成分分析的函数,首先是pricomp(),其调用格式有两种:

      princomp(formula, data = NULL, subset,na.action, …)

      其中,formula类似于lm( )中的参数,用于指定模型表达式,但主成分分析中没有响应变量;

      data指定数据框;subset用于选择数据矩阵的行,选出数据的一个子集进行分析;a. action表示

      数据包含缺失值时应该采取什么措施。

      princomp(x, cor = FALSE, scores = TRUE, covmat = NULL,
               subset = rep_len(TRUE, nrow(as.matrix(x))), ...)

      x是用于主成分分析的数据集:cor默认为FALSE,表示使用样本的协方差阵作主成分分析,

      若cot=TRUE则使用相关系数矩阵R求主成分;

      例

      【机器学习】无监督学习之PCA

      > agri=read.table("D:/ProgramFiles/RStudio/agriculture.txt",header=TRUE)

      > agri=agri[,-1] #剔除第一列序号

      > agri.pr=princomp(agri,cor=TRUE) #用相关阵计算

      > options(digits=4) #结果显示4位有效数字

      > summary(agri.pr,loadings=TRUE) #loadings=TURE选项列出主成分对应原始变量的系数

      Importance of components:

      Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9

      Standard deviation 2.1590 1.4455 1.0213 0.71234 0.56140 0.4389 0.33821 0.212900 0.177407

      Proportion of Variance 0.5179 0.2322 0.1159 0.056380.03502 0.0214 0.01271 0.005036 0.003497

      Cumulative Proportion 0.5179 0.7501 0.8660 0.92234 0.95736 0.9788 0.99147 0.996503 1.000000

      Loadings:

      Comp.1 Comp.2Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9

      x1 0.342-0.368 -0.375 -0.355 0.312 0.559 0.113 0.233

      x2 0.614 0.155 -0.761-0.110

      x3 -0.446 0.206 0.467 -0.203 -0.692

      x4 0.601 -0.598 0.310 0.395 0.139

      x5 0.376 0.307 0.396 -0.508 0.580

      x6 0.379 0.124 0.122 0.620 0.154 0.638

      x7 0.432 -0.246 -0.148 -0.241 -0.777 -0.235

      x8 0.950 -0.231

      x9 0.446 -0.224 -0.136 -0.246 0.532 -0.613

      分析结果的Standard deviation表示主成分的标准差,即相应特征值(等于方差)的平方根;Proportion of Variance表示方差贡献率,CumulativeProportion表示累计方差贡献率。第一主成分F1的贡献率为51.79%,第二主成分F2的贡献率为23.22%,第三主成分F3的贡献率为11.59%.前三个主成分的累计方差页献率达到86.6%,因此最终选取3个主成分即可,其余6个舍去。写出主成分与原变量的线性关系式为

      【机器学习】无监督学习之PCA

      有时,主成分分析也辅以图像帮助理解。首先,判断主成分个数时可以绘制主成分的碎石图,以成分数为横坐标,特征值即成分的方差为纵坐标,碎石图由陡峭变为平坦的转折点即为主成分选择的最佳个数。在R中使用函数screeplot()绘制,调用格式为:

      screeplot(x, npcs = min(10, length(x$sdev)),

      type = c("barplot", "lines"),

      main = deparse(substitute(x)), …)

      >screeplot(agri.pr,type=”line”,main=”碎石图”)

      【机器学习】无监督学习之PCA


      图中第三个主成分对应的方差由陡峭开始变得平坦,说明后几个主成分的方差贡献率很

      低,所以最终选择3个主成分即可。

      另外,函数biplot()可以绘制数据关于主成分的散点图,并自动标明原坐标在主成分下的方向。

      其调用格式为bipIot(x,choices=1:2), x同样是princomp()返回的对象,参数choices选择主成分,

      默认为前两个。

      > biplot(agri.pr)


      【机器学习】无监督学习之PCA

      例2:

      【机器学习】无监督学习之PCA

      利用R程序包labdsv中的方法pca()进行主成分分析

      > food=read.table("D:/ProgramFiles/RStudio/food.txt",header=T) #读入数据

      > food=food[,-1]

      > library(labdsv)

      > food.pca=pca(food,dim=4,cor=TRUE) #利用相关系数矩阵计算

      > summary(food.pca)

      Importance ofcomponents:

      [,1] [,2] [,3] [,4]

      Standard deviation 1.7108 1.4901 1.1594 0.89521

      Proportion of Variance0.3252 0.2467 0.1494 0.08905

      CumulativeProportion 0.3252 0.5719 0.7213 0.81033

      > loadings.pca(food.pca)

      Loadings:

      PC1 PC2 PC3 PC4

      X1 -0.550 -0.242

      X2 -0.320 -0.616 0.457

      X3 0.186 -0.697 -0.470

      X4 0.456 -0.168 0.505

      X5 0.509 -0.142 -0.263

      X6 -0.329 0.408 -0.270

      X7 0.501 0.119 -0.112 -0.367

      X8 0.388 0.333 0.130 0.113

      X9 0.141 0.493 0.201

      使用函数varplot.pca()绘制4个因子的碎石图以及累计方差图

      > op=par(mfrow=c(1,2)) #分割图形区域

      > varplot.pca(food.pca)

      Hit Return to Continue

      layout(1)


      【机器学习】无监督学习之PCA

      第一主成分对X4~ X8的载荷系数较大,说明第一主成分主要反映猪牛羊肉、家禽和水产品等方面,可以归为肉制品类:第二主成分对X1, X8, X9的载荷系数较大,分别对应粮食、食糠和酒,归为粮食类;第三主成分与关、X;的相关性较高,载荷系数均超过0.6,反映蔬菜、食油类;第四主成分与各原始变量的相关性分配比较平均,因此我们认为第四主成分反映的是所有食品的综合情况。


      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      【数据科学】R语言做数据准备
      2015年11月4日

      下一篇文章

      【机器学习】无监督学习之K-means
      2015年11月5日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?