都说了解PCA,那你知道ICA吗?

Backgroud

做一个数据分析业务之前,往往需要对反映事物的多个特征变量进行大量的观测,收集大量数据以便进行分析寻找规律。多个特征变量确实会提供丰富信息,但是很多情况下变量之间可能会存在相关性,如果用全部特征变量去拟合模型,可能在训练集的效果上会表现的很好,但是在测试集的效果上可能很差。这就存在模型“过度自信”的问题。因此需要找到一种合理的方法,在减少需要分析的特征变量同时,尽量减少特征变量包含信息的损失,以达到对所收集数据进行全面分析的目的。

数据降维

降维字面意思就是降低维度,简单解释是将重复的特征变量(重复值这两个变量之间关系紧密)删去多余,也就是要建立更少的新特征变量,使得这些新的特征变量互不相关,并且这些新变量还能够保持反应业务问题的主要信息。

降维主要优点

    • 去除噪声

    • 降低计算复杂度

    • 使得数据集更易使用

    • 使得结果更易理解

降维常见方法

    • 主成分分析(PCA)

    • 奇异值分解(SVD)

    • 线性判决分析(LDA)

    • 独立成分分析(ICA)

    • 因子分析(FA)

    • t-分布邻域嵌入算法(T-SNE)

    • Others I don't konw

PCA与ICA

PCA:主成分分析是一种常用的降维算法,可通过线性组合的方法将多个特征综合为少数特征,且综合后的特征相互独立,又可以表示原始特征的大部分信息

PCA理解:某数据含有1000样本,其中每组数据有100个特征变量,现在想把特征变量变成10个,即可通过主成分分析将shape为(1000,100)的数据编程shape为(1000,10)的数据。

图片

这里原数据的100个特征变量变成后面的10个新变量,而这10个新变量又分别是由这100个旧变量组成。详细解释如下图:

图片

注意:由主成分分析得到新的10个变量,也就是得到新模型a1b1+a2b2+...a10b10后,可将特征值b1~b10按照从大到小排列,并做贡献度分析,求出进一步的对问题占主要帮助的特征,一般选取贡献率85%~95%的特征成分作为进一步的主成分。

举例说明:比如筛选后b1,b2,b3的累积贡献率超过85%,则最终将a1,a2,a3做为该样本的主成分,从而实现降维。

PCA求解步骤

  1. 求数据协方差矩阵(为了判断两个数据的特征关系)

  2. 计算协方差矩阵的特征值和特征变量

  3. 特征值从大到小排序做贡献度分析

  4. 选出最终主成分,并将数据转换到有新的特征向量构建的新数据空间中。

主成分的真正意义

  • 新的变量由旧的变量组成但不一定已旧的变量来描述新变量

  • 降维一般是为了更好的回归或者分类,所以PCA只是一个过程结果,用来辅助构建模型。

ICA:独立成分分析最早应用于盲源信号分离。起源于“鸡尾酒会问题”,描述如下:在嘈杂的鸡尾酒会上,许多人在同时交谈,可能还有背景音乐,但人耳却能准确而清晰的听到对方的话语。这种可以从混合声音中选择自己感兴趣的声音而忽略其他声音的现象称为“鸡尾酒会效应”。对于盲源分离问题,ICA是指在只知道混合信号,而不知道源信号、噪声以及混合机制的情况下,分离或近似地分离出源信号的一种分析过程。ICA是一种用来从多变量(多维)统计数据里找到隐含的因素或成分的方法,被认为是PCA和FA的一种扩展。

ICA模型

图片

ICA理论的目标是在只有观察数据X的情况下,求得一个分离矩阵W(又称解混矩阵),随后利用分离矩阵W来分离观察数据X,使得获得的成分Y是独立源成分S的最优逼近。

常用ICA算法

    • Informax ICA

    • Extend ICA

    • FastICA

FastICA是对搜索算法的改进!改进之处在于:改善了传统梯度的收敛速度。更多关于ICA内容可查阅相关资料即可,最好通过编程对比多种ICA的区别。

ICA与PCA主要区别

  •  PCA是将数据降维并提取出不相关的属性,而ICA是将数据降维并提取出相互独立的属性(不相关就是两者没有线性关系,但是不排除其它关系存在,独立就是互不相干没有关联)

  •  ICA认为观测信号是若干个统计独立的成分的线性组合,ICA要做的是一个解混过程来找到这些独立源成分。而PCA是一个信息提取的过程,将原始数据降维,现已成为ICA将数据标准化的预处理步骤。

Python解析

①借助sklearn里面的PCA模块实现。

图片

数据结果:

图片

②不借助工具包sklearn实现

主要步骤:

  1. 原始数据组成N×M维度矩阵

  2. 将原始数据每一行进行零均值化

  3. 求出原始数据的协方差矩阵

  4. 求出协方差矩阵对应的特征值以及对应的特征向量

  5. 特征向量按对应特征值大小从上到下按行排列成矩阵,根据实际业务场景,取贡献度操作一定范围的前N行构成矩阵W。

  6. Y=WX就是降到N维后的目标矩阵数据(X为原始数据)

图片 图片

最后说明:在实际的使用PCA的过程中,正确估计用于描述数据的成分的数量是非常重要的环节,可以将累积方差贡献率看作关于成分数量的函数,从而确定所需要的成分的数量,上图结果曲线量化了前N个成分中包含了多少总的64维度的方差,可以看到30维度可以保持97%的方差。

总结:本文主要介绍了数据降维,以及PCA和ICA。并且利用Python实现主成分分析算法,所有源码数据关注公号“数据管道手册”回复“PCA”可得。另关于ICA部分,这里还没做代码分析,有需要的小伙伴可回复交流。

题外话之电影推荐:《盗梦空间》

”既然做梦,那就做大点!”

“You mustn't be afraid to dream a little bigger”


猜你喜欢

转载自blog.51cto.com/15127516/2683040