前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >呐你们要的算法(二)No.20

呐你们要的算法(二)No.20

作者头像
大蕉
发布2018-02-05 17:30:21
5100
发布2018-02-05 17:30:21
举报
文章被收录于专栏:一名叫大蕉的程序员

今天聊聊PCA算法。

PCA(Principal Component Analysis),主成分分析,是什么玩意呢?

就是一个将一个n维的特征数据降低到k维的算法。

有小伙伴就要问了,说我的特征也就几十个吖,这样做有什么用吖?

那确实没什么卵用,对于维度太低的数据,PCA确实起不到什么大的作用,但是也可以作为一个特征清洗的前置,可能会有一点点提升喔。

但是现在很多数据动辄几千维几万维,甚至几百万维,在这种情况下,不对数据进行降维就交给其他的机器学习模型,可能学个几年都学不出来,这是非常有可能的。所以在这种场景下,数据降维变得特别重要。

那怎么降呢?降维不就损失一些特征了吗?那还怎么把他们区分开吖?那我大数据不就变成小数据了?

确实降维会造成一些信息的损失,所以我们也要尽量避免信息过多损失。但是你还真别说,有时候信息的损失,会顺便带走一些噪声,效果反而更好,这也说不定。

总之,安心安心,数据量不会变小,只是把现有的n维空间的数据,映射到k维的超平面上面去。比如从二维的面,映射到一维的线上面去,而且这样做并不妨碍把他们分开,这不就达到降维的目的了吗?

是的,其实PCA就是在做这样的事情,只是维度太高可能不太好想象,但是总体就是跟上面是一样的。

PCA就是在尽量少降低样本之间的可分类性的同时,去将数据进行降维。那怎么做呢?这个时候要谈到一个东西叫协方差,就是两个变量之间的相关性,数值越大代表两个变量的趋势是同向的,为负值代表两个变量的趋势是相反的,数值为0代表不相关。

好了,那这样代表什么呢?就是如果两个变量他们之间的正相关性非常强,那我就可以理解去掉他们其中一个,对我的结果并不会造成什么非常大的影响,总体数据还是可分的,而且还少了一个维度的数据,模型训练起来也比较快。

举个?。

在我们实际统计的过程中,拿到两个特征。一个是买书数量,一个是买书开销。根据经验,这两个特征应该是正相关的嘛,这两个都是代表着一个趋势,买书数量越多一班来说买书开销越大,所以就算去掉其中一个也不会对分类结果造成比较大的影响(硬造的例子,不要吐槽)。

好了终于要正儿八经说PCA的事情了。

假设有m条数据,n个特征,需要降低到k个特征。原始数据表示为一个m*n的矩阵X。

PCA分六步走。(下面图里计算结果是错的,计算过程是对的,懒得重做)

1、对矩阵X进行转置。

2、矩阵进行零归均值化。

3、对X进行变换,也就是Cov = X * X.T / m,得到协方差矩阵

4、对协方差矩阵进行求特征值,进行对角化。

5、对特征值按行进行排序,然后取前k项得到矩阵K。

6、Y=KX则成为降维后的的矩阵。

其实整体来说就三步是核心,求协方差矩阵,求特征值,对特征值排序取前k。至于说k这个参数怎么取呢,业界的经验值是90% - 95 % 特征值,没什么权威的说法,只能说看情况。

PCA是一个无监督的算法,有什么特征值特别多的,丢进去看看呗,反正又不亏。

好了到这里PCA也就讲完了,下面讲点什么好呢?大家再留言告诉我吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一名叫大蕉的程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档