PCA作图里面的箭头是干嘛用的

2022/7/11 来源:不详

第一名白癜风医院 http://pf.39.net/bdfzj/140115/4327469.html

作图的目的是希望在图里面发现问题或者解释问题,当然更本质一点就是你想解决什么问题?

前几天做了一个PCA的图,图是画出来了,但是问题有很多,比如说主成分是是啥意思,图里面的箭头有什么含义?为了不做无意义的重复,所以写一篇文章尝试做一个解释。

我们以R语言自带的数据集iris作为例子来演示。

data(iris)

iris翻译成中文就是鸢(yuan,第一声)尾花(如下图),我建议你在R语言里用?iris了解更多这个数据集的出处。

先让我们用head简单看下这个数据集的前面几行。其中前面四列是一朵鸢尾花的一些形态特征衡量值,自行翻译各个单词的含义。最后一列是这朵花的所属物种,根据分类,这些花来自于"setosa,versicolor,virginica"

head(iris)

Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies

15.13.51.40.2setosa

24.93.01.40.2setosa

34.73.21.30.2setosa

44.63.11.50.2setosa

55.03.61.40.2setosa

65.43.91.70.4setosa

在平常人眼里,看到这些数值可能没有任何想法,也不知道这到底是什么品种,但是对于一个研究鸢尾花的人,这些数值可能会在他们的脑海里重构出一朵鸢尾花,然后迅速判断出这是什么品种。我和阅读文章的人都一样,也不知道如何区分鸢尾花的品种,如果想去研究这种规律,应该怎么做呢?

人类的学习过程过程大多数多看多提出一些模型规律,然后基于这个规律去判断,如果错了改正模型,直到找到一个好用的标准为止。因此,后面我们也就是在当前的数据集下多试试,看看能不能提出一些模型。

可视化是非常强大的工具,让我们先看看能不能用“Sepal.Length”和“Sepal.Width”进行区分

library(ggplot2)

ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width))+geom_point(aes(colour=Species))

从上图中,我们发现根据萼片(sepal)的宽度和长度似乎能够区分出"setosa"和"versicolor","virginica",但是"versicolor","virginica"不太好分。

让我们再试试花瓣(petal)的长度和宽度。从下图,我们可以发现在这两个属性下,不同品种的鸢尾花似乎有了明显的分界线。

ggplot(iris,aes(x=Petal.Length,y=Petal.Width))+geom_point(aes(colour=Species))

我们可以建立一个模型就是

当花瓣长度小于2时就一定是setosa

当花瓣的宽度在0.75\~1.75之间,花瓣的长度在3\~5,则是versicolor,

当花瓣的宽度大于1.75时,花瓣的长度大于5,则是virginica

这个模型依旧还不完善,存在一些点难以区分。不过我们还可以以花瓣长度和萼片长度,花瓣宽度和萼片宽度等你能想到的组合进行作图,说不定能找到更好的模型。更好的情况是,如果人类能够想象出一个四维的空间,在这个空间里面同时展现这四个变量,或许就能更加直观的找到规律,可惜,我们目前还没有这种能力

有没有一种方法能够把这种多维数据降维,也就是抓住数据集的主要矛盾呢?当然是有,这个方法就是多年前,由卡尔·皮尔森提出的主成分分析,通过将原来众多具有一定相关性的变量,重新组合成一组新的互相无关的综合变量。比如说我们可以将花瓣长度和宽度组合成花瓣的面积,当然实际计算可能更加复杂,你需要看机器学习中的数学(4)-线性判别分析(LDA),主成分分析(PCA)。

反正PCA最终的目的就是让原本的数据在降维后方差最大,也就是能把数据分开。我们一般人记住这一点,然后会用软件,能解读结果就好。

R语言能做主成分分析功能很多,比如说pr

转载请注明:
http://www.3g-city.net/gjyby/751.html
  • 上一篇文章:

  • 下一篇文章:
    • 没有热点文章
    • 没有推荐文章
    网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有2014-2024 冀ICP备19027023号-6
    今天是: