Factor_Analysis(因子分析)
Factor Analysis 简书:较好理解的解释,其中公式有一定的推导(仅展现关键步骤,细节大多需要自行补充),基本为结论式。

感性层面理解:首先,明确FA和PCA的区别。PCA做的是对某个样本,试图寻找到一组方差尽量大的线性表示(基向量),以便降维;FA做的是,假想存在一些隐变量,它们影响着我们的观测结果(即我们得到的数据样本),我们试图找到两者的联系:$x = \Lambda z + \mu + \epsilon$,在简书中有说明其MLE函数形式,不难看出它的MLE形式难以求解,故采用EM(机器学习之最大期望(EM)算法,讲得不错)迭代以求最优解。此外,FA通常用于$m<<n$的庆幸

心路历程:首先,我去推了一下EM,发现自己之前学的时候,由于是在GMM求解的时候需要的,所以并没有很仔细地推导,所以就再去推导了一次推了我一页草稿纸。其次,没有找到:$\mu_{x_1|x_2} = \mu_1 + \Sigma_{12} \Sigma_{22}^{-1} (x_2 - \mu_2)$ 以及 $\Sigma_{1|2} = \Sigma_{11} - \Sigma_{12} \Sigma_{22}^{-1} \Sigma_{21}$ 的公式名称,如果看官知晓其名称,望告知不才,感激不尽。最后,还是忘记了矩阵求导,又去查了一下,而我也尚未进行公式回带和化简整合。自闭了,一大堆

疑问:简书作者在开头提到:由于存在隐变量,同时不能由MLE得到close form。(close form:即闭式解,通俗解释就是$\nabla f(x) = 0$的$x$表达式),这里不理解为何没有闭式解,目前推的结果(MLE式子),大概猜测是因为$m<<n$的缘故,这样带来的结果就是$\left| \Sigma \right| = 0$(其实本身$\left| \Sigma \right|$是不等于0的,但是由于$m<<n$,所以它等于0,其实就是由于样本数量不足,或者说难以得到如此高维并且充足的样本)。显然,$\left| \Sigma \right| = 0$会在后续中遇到诸多麻烦,最容易想的就是$\Sigma$是不可逆的,这显然很难进行接下来的计算,虽然我算的不多,但是$\Sigma^{-1}$几乎都是需要的。然而,可以引入伪逆,所以肯定还有我没有想到的原因,或者说伪逆会带来较差的表现等等。

备注:由于博客园写推导公式较为麻烦,所以没有在博客上进行推导,不过建议看官如果并未学习过上述知识,还是手推几次以便加强理解和记忆(当然也有一些少年仅仅看就能得到很好理解,并且运用巧妙)。比如在EM算法中,求解lower_bound之前,分子分母同乘一个量以便之后用Jensen不等式化简(orz)等等(好像其他的操作就比较平凡了)。最近闲来无事的时候,发现很多学习过的算法,特别是需要一定数学式子或者思维来求解的(我竟然想去求LCM解烤鸡??),似乎都忘了需要求解的表达式(嘴上讲讲天花乱坠,手里推推苦思冥想),虽然求解过程都不难,但是对于我来说,其中一些技巧还是需要理解的有些计算量也是大啊

Factor_Analysis的更多相关文章

  1. zoj Simple Equation 数论

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5176 AX+BY = XY  => (X-B)*(Y-A)= ...

  2. Python机器学习笔记 使用scikit-learn工具进行PCA降维

    之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...

  3. OtterTune源码解析

    为了方便后面对ottertune进行魔(hu)改(gao),需要先搞清楚它的源码结构和pipeline OtterTune分为两大部分: server side: 包括一个MySQL数据库(用于存储调 ...

随机推荐

  1. 利用EasyUI 数据网格(DataGrid)的loader属性实现后端分页

    该属性在easyui官方文档中并没有详细阐述,通过简单的资料查询和摸索,实现了easyUI数据网格的后端分页功能. 在官网文档中这样阐述loader属性: 定义如何从远程服务器加载数据.返回false ...

  2. 开源框架---tensorflow c++ API中./configure步骤细节

    u@u160406:~/tf1.13/tensorflow$ git checkout r1.13 分支 r1.13 设置为跟踪来自 origin 的远程分支 r1.13.切换到一个新分支 'r1.1 ...

  3. querySelector和getElementById方法的区别

    一.querySelector() 的定义 querySelector() 方法选择指定 CSS 选择器的第一个元素 querySelectorAll() 方法选择指定的所有元素 二.与 getEle ...

  4. node中的npm的使用

    1.node中npm的使用 nodejs软件 1.安装nodejs 自带了npm  npm install Bootstrap 好比python自带pip  pip3 install requests ...

  5. JDBC课程3--通过ResultSet执行查询操作

    内容:  ResultSet 结果集,封装了使用JDBC 进行查询;JDBCTools.release(rs,st, conn); 这个模块进行了更新, 同时结束的时候也关闭ResultSet,结束该 ...

  6. 大数据之路week06--day07(Hadoop生态圈的介绍)

    Hadoop 基本概念 一.Hadoop出现的前提环境 随着数据量的增大带来了以下的问题 (1)如何存储大量的数据? (2)怎么处理这些数据? (3)怎样的高效的分析这些数据? (4)在数据增长的情况 ...

  7. Selenium常用API的使用java语言之13-多表单切换

    在 Web 应用中经常会遇到 frame/iframe 表单嵌套页面的应用, WebDriver 只能在一个页面上对元素识别与 定位, 对于 frame/iframe 表单内嵌页面上的元素无法直接定位 ...

  8. Selenium常用API的使用java语言之10-获取断言信息

    不管是在做功能测试还是自动化测试,最后一步需要拿实际结果与预期进行比较.这个比较的称之为断言. 我们通常可以通过获取title .URL和text等信息进行断言.text方法在前面已经讲过,它用于获取 ...

  9. BZOJ1209 最佳包裹 (三维凸包 增量法)

    题意 求三维凸包的表面积. N≤100N\le100N≤100 题解 暴力往当前的凸包里加点.O(n2)O(n^2)O(n2).题解详见大佬博客 扰动函数shakeshakeshake是为了避免四点共 ...

  10. Learning Spark (Python版) 学习笔记(一)----RDD 基本概念与命令

    <Learning Spark>这本书算是Spark入门的必读书了,中文版是<Spark快速大数据分析>,不过豆瓣书评很有意思的是,英文原版评分7.4,评论都说入门而已深入不足 ...