ML_Review_GMM(Ch10)
Note sth about GMM(Gaussian Mixtrue Model)
高斯混合模型的终极理解
高斯混合模型(GMM)及其EM算法的理解
这两篇博客讲得挺好,同时讲解了如何解决GMM参数问题的EM算法,其实GMM式子没有什么高深的地方,都是概率论的东西,主要是构思比较巧妙。
动机:
GMM是用来拟合某种分布的。哪种?任意一种!当然,前提是参数足够多的情况下,所以实作其实并非拟合任意模型。那么一般什么样的模型会被GMM较好拟合?首先,我们思考一下一维的高斯分布(即正态分布),然后我们思考一下二维的,三维的……会发现,高斯分布在二维类似椭圆,三维类似椭球,而这也是我理解它为什么说可以拟合任意分布的原因。因为椭圆(我们从二维来说),其实就是实轴(a)和虚轴(b)决定的一种图形,那么如果$a=b$就世缘,而如果$a \gg b$或者$a \ll b$,其实就非常得趋近于直线了。当然这是一个高斯分布的情况,而GMM本质就是混合(Mixtrue)了很多的高斯分布(Gaussian Model),然后保证权重和为1即可(单高斯分布也可看成是GMM的特殊情况,即某个权重为1,其余均为0)。
GMM算法过程没什么描述,流程就在公式里,本质就是用多个高斯分布的和去拟合我们目前拿到的样本数据(TrainingData)。
GMM算法公式概述:只打GMM的部分公式,EM的实在太长了,但强烈建议纸上手推
高斯混合模型的概率密度函数:
$$ p(y|\theta) = \sum_{k=1}^{K} \alpha\phi(y|\theta_k) $$
where
$$ \phi(y|\theta_k) \Leftrightarrow \phi(y|\theta_k) = \frac{1}{\sqrt{2\pi}\sigma_k} exp(-\frac{(y-\mu_k)^2}{2\sigma_k^2}) $$
$$ \alpha \geq 0 \quad and\quad \sum_{k=1}^{K}\alpha_k = 1, \qquad \theta_k = (\mu_k, \theta_k) $$
顺带写一写对其做极大似然估计的过程:
$$ p(x; \theta) = \sum_{k=1}^{K} \pi_kN(x;\mu_i,\sigma_k) \qquad s.t.\quad \sum_{k=1}^{K} \pi_k=1 $$
$$ P(x; \theta) = \prod_{i=1}^{N}p(x_i;\theta) $$
$$ lnP(x; \theta) = \sum_{i=1}^{N} ln( \sum_{k=1}^{K}\pi_kN(xi;\theta_k) ) $$
This formula, you will get ;_; if you try to caculate it's gradient, because it need reduction of fractions to a commomn denominator.It may make you mad,at least it made me mad.
细节理解:
1、为何$\sum_{k=1}{K} \alpha_k=1$,因为概率密度函数的定义域内积分要为1,显然GMM必须满足这个性质,而分配权重和为1,就可以满足这个性质,因为求积分可以分开求,最后累加,而每个分布的积分都是1,乘以和为1的权重,最后和才会为1。
2、为何需要EM算法,MLE不可以么?其实是先尝试过MLE,就会发现需要EM,因为在做MLE(手写)的时候会遇到一个问题(其实就是求出似然函数之后,取完对数发现需要求导的部分是$\sum ln (\sum)$这种形式,显然求导非常难算,可以简单想想,分式,或许需要通分,然后有N个式子。。。)。第一篇之中的“第二个细节”就是说的这个问题。
3、其实细想可以发现,在用EM的时候的一个假设很玄妙,他假设每个样本都是被GMM多个高斯分布结果中的某一个产生的,这样的假设合理么?合理——因为好算,因为我们可以加大参数让每个都拟合(可以拟合任意分布。。。)不合理——显然现实中决定某种事物出现的因素往往都是不唯一的。(虽然高斯分布已经是考虑了诸多微小影响之下的一种分布,我记得课本写过(大致意思):在譬如人的心情、人的操作失误、气温等一系列微小影响下,样本可以看作是服从正态分布的)。不得不说,GMM作为一种方法做到了很好的效果和深度(拟合任意分布),但是个人总觉得会遇一些极端情况。但是也想通了一点——本来就是预测,意外样本就是降低准确率的来源,哪有100%的预测。(不然不就每个人都去买股票致富了)
ML_Review_GMM(Ch10)的更多相关文章
- 20155211课下测试ch10补交
20155211课下测试ch10补交 1.假设下面代码中的foobar.txt中有6个ASCII字母,程序的输出是() A.c = f B.c = o C.c = b D.c = 随机数 答案:A 解 ...
- 2017-2018-1 20155331 课下测试(ch10)
2017-2018-1 20155331 课下测试(ch10) 假设下面代码中的foobar.txt中有6个ASCII字母,程序的输出是(A) Image 7.png A . c = f B . c ...
- CH10 泛型算法
概述 大多数算法都定义在algorithm头文件中. Note:算法永远不会执行容器操作 泛型算法本身不会执行容器的操作,而是通过迭代器来访问.修改等操作 10.1 题目要求读取数据存入vector, ...
- Hadoop 裡的 fsck 指令
Hadoop 裡的 fsck 指令,可檢查 HDFS 裡的檔案 (file),是否有 corrupt (毀損) 或資料遺失,並產生 HDFS 檔案系統的整體健康報告.報告內容,包括:Total blo ...
- 【JAVA并发编程实战】8、锁顺序死锁
package cn.study.concurrency.ch10; public class Account { private String staffAccount; //账号 private ...
- 网络分析之Pgrouting(转载)
网上关于Pgrouting的使用介绍太简单了,这里想详细的总结一下Pgrouting的使用,其实主要参照官方文档:http://workshop.pgrouting.org/ 第一步:配置环境 关于P ...
- 20145233 2016-2017 1 linux题目总结
20145233 2016-2017 1 linux题目总结 第一周考试知识汇总 判断:实验楼环境中所有的默认系统用户名和密码均为 shiyanlou.(x ). 填空:Linux Bash中,Ctr ...
- <<Numerical Analysis>>笔记
2ed, by Timothy Sauer DEFINITION 1.3A solution is correct within p decimal places if the error is l ...
- 转 Selenium+Python+Eclipse网页自动化集成环境配置(附简单的测试程序)
1 JDK.Python环境变量配置 下载JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html,直接双击安装, ...
随机推荐
- ble编程-外设发送数据到中心
一.外设 1.在外设的.h文件中定义如下 1 //周边管理者 2 3 @property (nonatomic , strong) CBPeripheralManager *peripheralM ...
- cocos-js 精灵移动转圈
cc.Class({ extends: cc.Component, properties: { carModel: { default: null, type: cc.Sprite }, bgMode ...
- Vue-resoure 实现get post jsonp请求
1.之前学习中,如何发起数据请求? 2.常见的数据请求类型?get post jsonp 3.常见的URL请求资源地址 get请求地址: http://vue.studyit.io/api/getl ...
- MySql 学习之 一条查询sql的执行过程
相信大家都接触过Mysql数据库,而且也肯定都会写sql.我不知道大家有没有这样的感受,反正我是有过这样的想法.就是当我把一条sql语句写完了,并且执行完得到想要的结果.这时我就在想为什么我写这样的一 ...
- javascript_07-break 和 continue
break 和 continue break 立刻退出循环 continue 立即退出当前循环,但退出循环后会从循环的顶部继续执行 //求 200-300 之间的所有的偶数的和,用 continue ...
- python之csv操作
在使用python爬虫时或者其他情况,都会用到csv存储与读取的相关操作,我们在这里就浅谈一下: CSV(Comma-Separated Values)逗号分隔符,也就是每条记录中的值与值之间是用分号 ...
- JAVA笔记整理(六),JAVA中的多态
JAVA引用变量有两个类型:一个是编译时类型,一个运行时类型 编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定.如果编译时类型和运行时类型不一样,就形成了多态. 因为子类其 ...
- 【问题】man命令打开的手册上链接怎么展开?
参考:How to follow links in linux man pages? 前言 在使用man查看命令帮助的时候,有些文字下面会有下划线.给人的感觉是一个链接,但是又打不开.那么到底是不是链 ...
- idea上 实现了Serializable接口,要自动生成serialVersionUID的方法
需要点进setting ->搜索Inspections-->右侧选择java 下拉 进入Serialization issue--->勾选Serializable class wit ...
- 使用Wireshark对手机抓包设置说明
一.原因 1.手机目前没有类似的抓包工具可以直接对手机进行抓包 2.一般数据交换的路线是:手机——>运营商——>服务器,可以在手机和运营商中间加一道网卡变成:手机——>PC网卡——& ...