博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Andrew Ng机器学习公开课笔记 – Factor Analysis
阅读量:6277 次
发布时间:2019-06-22

本文共 2201 字,大约阅读时间需要 7 分钟。

网易公开课,第13,14课 

notes,9

本质上因子分析是一种降维算法 

参考,,浅谈主成分分析和因子分析

把大量的原始变量,浓缩成少数几个因子变量 

原始变量,代表浅层的表面现象,所以一定是很多和繁杂的 
而因子变量,是代表深层的本质,因,是无法直接观察到的

所以因子分析,就是拨开现象发现本质的过程。。。很牛逼的感觉

举个例子,观察一个学生,你可以统计到很多原始变量,

代数,几何,语文,英语各科的成绩,每天作业时间,每天笔记的量。。。

这些都是现象,那么他们的本质是什么, 

逻辑因子,记忆因子,计算因子,表达因子

这些都是些更本质的东西,但是你直接观察不到, 所以我们要做的是,根据表示现象的原始变量,分析出潜在的因子变量,以达到降维

既然要找出latent变量,自然想到要用到EM算法

 

先看看,这个问题是怎么引出的?

对于前面看到的算法,一般都是m>>n,即训练集远远大于向量维数的

如果m和n近似,或小于n的情况下,会有什么问题?

其实简单点想,

AX = B

其中A是参数向量,而X为变量向量,如果X的维是n

如果要求出A,其实就是在解一个方程组,变量为n个,那么至少要n个方程,如果训练集大小m,即方程数小于n,那一定是没有解的,或无限解

看看formal的形式,对于混合高斯EM算法的M-step,

其中算均值是没有问题的, 

但在协方差矩阵时,得到的是奇异矩阵, 即 不存在 
关于奇异矩阵,可以参考,

简单点理解,就想我上面说的,如果用这个矩阵当成方程组去求解,是无解的,即方程数不够 

专业点说,就是不满秩,矩阵秩(rank)的意思,线性无关的纵列的极大数目

其实就是方程是有效的,无法被剩余的方程线性组合得到的,比如

x+y = 0

2x+2y = 0 ,3x+3y=0……

可以一直写下去,但这样形成的rank仍然为1,因为无法得到解,后面的方程都是无效的

为何 不存在,因为在计算逆的时候,需要计算1/|x|,其中|x|表示矩阵的行列式,对于奇异矩阵行列式是为0的,所以无穷大 

为何奇异矩阵行列式为0? 
我只能用一个2×2矩阵来举例, 
a,b 
c,d

行列式等于, a×d - b×c,如果是奇异矩阵,这个一定为0

好,是奇异矩阵,对于EM算法的问题是什么?

在计算混合高斯分布的密度是,需要算, 

行列式为0,会导致无穷大,所以没有解

 

Restrictions of 

那么怎么解决上面的问题?很显然我们是无法拟合出一个完整的的,所以对它做些限制 

我们假设是个对角矩阵,diagonal

简单想想对角矩阵是什么,只有对角线上的值不为0,其他值都为0 

意味着,各个特征间是互相对立的,没有关系的,因为协方差为0即表示没有关系,所以现在只需要算出,每个特征的方差即可

 

这样对m就没有要求,有样本就可以算出方差

还可以进一步假设,在对角线上的值都是相等的,即是方差的平均值

当然这样假设来限制,丢失的信息比较多,应该有更好的办法

 

Marginals and conditionals of Gaussians

先看看混合高斯分布中,如何求出边界和条件高斯分布

没太搞明白,直接列出结果

对于如下的联合分布,

则其中x1的边缘分布,也是符合高斯分布,p(x1) = p(x1,x2)对x1求积分

而条件分布,p(x1|x2) = p(x1,x2)/p(x2)

其中,

 

The Factor analysis model

其中x是n维的原始变量,而z是k维的因子变量

 ,而 ,所以 就是n维向量,这个就是一个转换,将k维的z转换为维的x

 是偏移量, 是误差

所以可以理解为,所有的高维的原始变量都是可以用低维的因子变量通过线性变换得到的

所以我们可以用因子变量来作为后续算法的输入,达到降维的目的

比如上面学生的例子,我们可以用下面3维的因子变量来替代上面的高维的原始变量

x:(代数 80,几何 90,语文 60,英语 70 。。。)

z:(逻辑因子 80,记忆因子70,表达因子 60)

我们再看下,中给的图示,就更清楚一些

比如对于高维数据集,这里假设是2维,

如何用低维的,即一维的,因子变量转换得到,

首先是,其中 ,把一维映射到二维

 

加上平移,

最后,加上误差扰动,即点不可能刚好在这个线上,需要加上符合高斯分布的误差

就得到最开始的原始数据集

说了半天,我们下步要干什么?再看下这个式子,

我们的目的是,用z替换x, 那么只要知道参数 ,我们就可以用z表示x, 即达到目的

那么我们的目标就是优化参数,使得x达到最大似然估计,即我们这样转换出的x和真实的x是匹配的

但上面只给出z的分布,怎么求x的分布?

这里就用x,z的联合分布,通过边缘分布来求x的分布,原理说不清,所以也是只是列出结果

通过一系列计算过程,可以参考讲义,得到,

通过上面边缘分布的定义,我们知道,

x的分布为,

所以得到优化目标函数为,

但是这个目标函数是无法直接解的

 

EM for factor analysis

所以还是要使用EM,

E-Step,

 

其中, 

根据上面关于条件分布的定义,

于是,

 

M-Step,

优化目标函数,其中z是满足高斯分布的连续变量,故用积分

然后的过程就是对各个参数求偏导,求值。

求解过程,具体参考讲义吧,看着虐心。。。呵呵

本文章摘自博客园,原文发布日期:2014-08-07

转载地址:http://gdbva.baihongyu.com/

你可能感兴趣的文章
python基础之元组、文件操作、编码、函数、变量
查看>>
NOIP1999邮票面值设计[搜索|DP]
查看>>
gnuplot使用1
查看>>
<转>SQL语句大全
查看>>
[Javascript] Either Functor
查看>>
搭建一个分布式MongoDB鉴权集群
查看>>
Jquery 对象集合的迭代扩展forEach
查看>>
看懂理解 keyboard中 , navigation的设置: 切换工作区和移动窗口到不同的工作区.
查看>>
mysqldump和xtrabackup备份原理实现说明
查看>>
[Angular2 Form] Create and Submit an Angular 2 Form using ngForm
查看>>
Atitit.数据检索与网络爬虫与数据采集的原理概论
查看>>
POJ3494Largest Submatrix of All 1’s[单调栈]
查看>>
ofstream的使用方法
查看>>
FFPEG 转码记录------解决了有流,但是没有码率和FPS?
查看>>
Adding ASP.NET MVC5 Identity Authentication to an existing project
查看>>
电台大神打油诗
查看>>
Win8Metro(C#)数字图像处理--2.27图像加法运算
查看>>
字符、字符串和文本的处理之Char类型
查看>>
【读书笔记::深入理解linux内核】内存寻址【转】
查看>>
java 内存泄漏和内存溢出
查看>>