热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

因子分析_主成分分析_独立成分分析_斯坦福CS229_学习笔记

PartVIII因子分析主成分分析独立成分分析在上个部分介绍了EM算法,在此部分因子分析中,我们会再次应用到。因子分析、主成分分析和独立成分分析都作为

Part VIII 因子分析 主成分分析 独立成分分析


在上个部分介绍了EM算法,在此部分因子分析中,我们会再次应用到。

因子分析、主成分分析和独立成分分析都作为对于数据维度进行处理的手段,对于我们理解数据、更好的表示数据都起到或多或少的作用,因此将三者放在一起进行叙述。



目录

Part VIII 因子分析 主成分分析 独立成分分析

1 因子分析(Factor Analysis,FA)

1.1 背景

1.2 思想与推导

2 主成分分析(Principal Components Analysis,PCA)

3 独立成分分析(Independent Components Analysis,ICA)

4 小结




1 因子分析(Factor Analysis,FA)

首先介绍因子分析(FA)的提出背景,接着给出算法的思想,最后结合EM算法给出其参数的推导。


1.1 背景

之前介绍的各种算法&#xff0c;我们都有着一个不容忽视假设&#xff1a;样本的数量m足够充足&#xff0c;这样就使得通过训练&#xff08;迭代&#xff09;&#xff0c;能够求解出参数从而构造出模型。但是现实有时候是残酷的&#xff0c;有时候会存在样本的数量匮乏的情况&#xff08;m<

但是在当前样本数量m<

这是一个很强的限制&#xff0c;因为这种限制认为各个参数之间是独立的&#xff0c;实际情况下是不可取的。在协方差阵为对角阵的基础之上&#xff0c;还可以进一步限制&#xff0c;即协方差阵中的对角元素取值相同。这两种强限制条件大多数情况下感觉都不太适用。

在没有限制条件即原有条件下&#xff0c;需满足m\geqslant n&#43;1

&#xff08;2&#xff09;原始数据空间x为n&#xff08;图中n&#61;2&#xff09;维。可以将低维空间变量通过变换矩阵\Lambda

&#xff08;3&#xff09;每个样本加上n维偏移向量\mu

&#xff08;4&#xff09;每个样本加上n维高斯扰动ε~N(0,ψ)从而得到高维向量x

由上&#xff0c;可将因子分析模型总结如下&#xff1a;

从高维向量x可由潜在的低维高斯型向量z线性表示出发&#xff0c;存在着以下假设&#xff0c;并且在下列分布中隐变量z与随机高斯噪声\epsilon

第一行表示潜在型高斯变量分布。

第二行表示随机高斯噪声的影响。

第三行表示x由z线性表示形式。

结合上述定义&#xff0c;不难得到&#xff08;确保明白这点&#xff09;

接下来&#xff0c;对于x和z的联合分布建模。由于p(x,z)&#61;p(x|z)*p(z)&#xff0c;两个高斯型密度函数的乘积仍然为高斯型&#xff0c;因此将x&#xff0c;z联合分布建模为高斯型如下&#xff1a;

之所以在左端写成矩阵形式&#xff0c;仅仅是为了接下来的表述方便。那么参数\mu _{zx}

那么就有&#xff1a;

                                                            \mu _{zx}&#61;\begin{bmatrix} EZ\\EX \end{bmatrix}&#61;\begin{bmatrix} \vec{0}\\ \mu \end{bmatrix}

到这里就很清晰了。还是老套路&#xff0c;接下来利用最大似然法求解参数从而得到x&#xff0c;z的联合分布。此时参数为\mu

能够直接求偏导解出上述参数算你厉害。

此方程比较复杂&#xff0c;很难直接解出&#xff0c;因此就需要利用上一讲介绍EM算法进行求解了。在上一讲最后利用高斯混合模型对于EM算法的流程已经进行过介绍了。对于高斯混合模型而言&#xff0c;隐变量z为离散型&#xff0c;而在因子分析中隐变量z则为连续性&#xff1b;其实就是将求和改为积分即可。下面给出EM算法的解参数步骤&#xff1a;

&#xff08;1&#xff09;E-step&#xff1a;在E-step中&#xff0c;我们需要根据参数计算得到后验概率Q_{i}(z^{(i)})

那么可得以下结论&#xff1a;x_{1}|x_{2}\sim N(\mu _{1|2},\Sigma _{1|2})

因此&#xff0c;根据此结论和前文的推导&#xff0c;可得后验分布z^{(i)}|x^{(i)};\mu ,\Lambda, \epsilon \sim N(\mu _{z^{(i)}|x^{(i)}},\Sigma _{z^{(i)}|x^{(i)}})

以上&#xff0c;E-step顺利走通。

&#xff08;2&#xff09;M-step&#xff1a;在M-step&#xff0c;我们要最大化&#xff1a;

简化此式得到&#xff1a;

然后分别对于参数\mu ,\Lambda ,\Sigma

在每次迭代中&#xff0c;更新参数的值直到收敛从而得到最终参数的结果。

由此&#xff0c;求解出三个参数&#xff0c;原有的n维&#xff08;高维&#xff09;空间样本x便可由k维&#xff08;低维&#xff09;空间隐变量z线性表示了。




2 主成分分析&#xff08;Principal Components Analysis&#xff0c;PCA&#xff09;

主成分分析&#xff08;PCA&#xff09;作为另外一种数据降维的手段得到了广泛的应用。

主成分分析的思想在于&#xff0c;在数据维度&#xff08;n维&#xff09;较大时&#xff0c;各个维度之间或多或少都会存在着相关性&#xff0c;而实际上我们并不需要全部使用维度进行处理&#xff0c;因为或许选取数据的某k维就代表了很大部分的n维特征。PCA的过程就是提取这k维的过程。

解释PCA可以从将近10种思路出发&#xff0c;这里选取比较好理解的最大方差的思路出发进行解释。

以2维数据压缩为1维数据为例&#xff0c;PCA要做的找到一个新的维度&#xff0c;是数据在新维度上的方差最大&#xff08;即投影长度最长&#xff0c;如u1的方向所示&#xff09;。因为根据信息论的观点&#xff0c;数据所包含的方差越大&#xff0c;那么数据所包含的信息量越大。如果新的投影方向u1能够包含原有数据的大部分信息&#xff08;假设85%以上&#xff09;&#xff0c;那么可以认为在保证了数据信息的精度上进行了压缩。

再举一个例子&#xff0c;假设原有5个2维样本如下图所示。

分别将原始数据按照如图所示的两个方向进行投影&#xff0c;得到左图与右图。

这就很清晰了&#xff0c;左图的数据明显比右图更能保留原始的数据信息。

那么包含了数据最多的新的投影方向是什么方向呢&#xff1f;听上去是一个解最值的问题&#xff0c;实际上也正是这样。

首先对于数据预处理。预处理的目的在于使各个维度的数据在接下来的处理中拥有着相同的尺度。预处理步骤如下。

&#xff08;1&#xff09;计算    \mu &#61;\frac{1}{m}\sum_{i&#61;1}^{m}x^{(i)}

因此&#xff0c;优化问题即为在|u|&#61;1的条件下&#xff0c;使下式最大化

利用拉格朗日乘数法即可解决&#xff0c;这里设X^{T}X&#61;\Sigma

对u求偏导&#xff0c;并另偏导等于0&#xff0c;得\Sigma u-\lambda u&#61;0

又因为x&#61;As,s&#61;Wx

从而推出&#xff1a;

接下来又到了求参环节了&#xff0c;这里我们的参数是W&#xff0c;同样利用最大似然法进行参数的求解。写出最大似然方程&#xff1a;

对W求偏导&#xff0c;可得每次迭代的更新公式为&#xff1a;

为了表述方便&#xff0c;可将解得的W写成如下形式&#xff1a;

根据W&#xff0c;那么原有数据中的每个信号的来源即可分离开了。即每个s_{i}&#61;w_{i}^{T}*x。由此ICA从原有混合数据中将来源于不同信号源的数据进行分离的任务便完成了。




4 小结

或许有人会疑惑同样是作为数据降维的手段&#xff0c;好像最后的形式也差不多&#xff0c;因子分析&#xff08;FA&#xff09;和主成分分析&#xff08;PCA&#xff09;有什么区别呢&#xff1f;看完二者的推导&#xff0c;谈谈我的看法。

首先&#xff0c;差别还是挺明显的&#xff0c;二者的思想出发点就不同。FA是想从众多特征中找出一些共性&#xff08;即隐变量z&#xff09;&#xff0c;利用共性对于原有数据进行表达&#xff1b;而PCA则是从众多特征中找出一些具有代表性的特征对于原有特征进行表达。

其次&#xff0c;二者的着重点也不一致。FA着重于各个变量间的协方差&#xff1b;而PCA则着重于总体的方差。

再者&#xff0c;FA相比较而言做了一些假设&#xff0c;较为受到限制&#xff1b;而PCA则无需假设&#xff0c;应用更广。

最后&#xff0c;PCA的实际应用范围是大于FA的。PCA在许多方面都发挥着不小的作用。

独立成分分析&#xff08;ICA&#xff09;的目的在于从多个信号混杂的数据中&#xff0c;解算出每个信号原有的数据。为此ICA做了一些假设&#xff0c;包括确定信号的分布函数。在ICA中应该留意&#xff0c;高斯分布的数据并不能直接应用ICA做分解。


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有