专栏首页一名叫大蕉的程序员呐你们要的算法(二)No.20

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

今天聊聊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也就讲完了,下面讲点什么好呢?大家再留言告诉我吧。

本文分享自微信公众号 - 一名叫大蕉的程序员(DaBananaTalk)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习虾扯蛋之SVD奇异值分解No.48

    机器学习说难不难,说简单也不简单。跟着小蕉有饭吃。 今天分享的是机器学习里面一个寻找主要成分的算法,SVD (Singularly Valuable Decom...

    大蕉
  • 机器学习的敲门砖:kNN算法(中)

    关于作者:Japson。某人工智能公司AI平台研发工程师,专注于AI工程化及场景落地。持续学习中,期望与大家多多交流技术以及职业规划。

    大蕉
  • 靠谱的数据开发从业指南No.82

    有小伙伴让我聊聊数据开发的职业规划和从业指南,因为数据开发从业人员的知识量实在是太太太大了,今天恰好这个机会好好聊聊。

    大蕉
  • pca

    混乱的数据中通常包含三种成分:噪音、旋转和冗余。在区分噪音的时候,可以使用信噪比或者方差来衡量,方差大的是主要信号或者主要分量;方差较小的则认为是噪音或者次要分...

    pydata
  • 相关系数图矩阵

    今天要跟大家分享的是相关系数图矩阵! 相关系数矩阵大家肯定都不陌生吧,作为识别变量之间的关系以及共线性程度,会在很多数据环境下用到。 但是相关系数矩阵毕竟全是数...

    数据小磨坊
  • Vulnhub靶机渗透-Tr0ll:2

    既然web没什么突破口,那么我们还是从ftp试试看,考虑生成个社工字典,根据WEB给出的Author以及Editor:

    HACK学习
  • 基于Spark的机器学习实践 (十) - 降维

    通过讲解PCA算法的原理,使大家明白降维算法的大致原理,以及能够实现怎么样的功能。结合应用降维算法在分类算法使用之前进行预处理的实践,帮助大家体会算法的作用。

    JavaEdge
  • 大数据奇葩说:盘点10个有趣的大数据

    大数据早已成了我们耳熟能详的词汇,大数据也逐渐得到的政府,企业和个人的重视。基于此,大数据究竟在如何影响着我们的生活? ? 大数据(Big data) 因为他...

    腾讯大数据
  • MLK | 机器学习的降维"打击"

    ? 在机器学习中,我们有的时候会遇到维度灾难,当模型的训练入参有很多的时候,往往是需要很多的时间和资源去训练的,而这不是我们想要看到的结果。一般情况下,我们都是...

    Sam Gor
  • 学习React中ref的两个demo

    虚拟Dom虽然能够提升网页的性能, 但虚拟 DOM 是拿不到用户输入的。为了获取文本输入框的一些操作, 还是js原生的事件绑定机制最好用~

    zhaoolee

扫码关注云+社区

领取腾讯云代金券