每天进步一点点《ML - 从极大似然到EM算法》
一:极大似然
1:概念引入
极大似然参数估计是概率论中学习过的内容,就是预先定义概率分布模型,根据一堆的同概率分布的一堆样本数据去估计该概率模型中的未知参数。
举个例子:有很多西瓜x,我们可以得到每一个西瓜的体积数值,每一个样本就是一个西瓜,每个西瓜是一个N维参数向量表示,为了简单起见我们先只用体积参数来叙述。
这样一来,我们能够对这一一堆西瓜做一个概率分布统计,假如西瓜的体积服从高斯分布的话,就是
5:怎么最大化求参数呢?
答案就是求偏导数,对每个位置参数求偏导,偏导数为0,即可得到相应的参数值。
6:总结一下运算过程
写出似然函数,整个得根据提前设定的模型来写。
对似然函数取对数,并整理,并且期望最大化。
对每个参数求偏导数,令偏导数为 0,得到似然方程
解似然方程,得到的参数
7:极大似然的用途
之前我们再学习Logistic Regression的时候,就推导过,逻辑回归的优化函数其实就是极大似然函数的相反数,J(θ)=-H(θ),这里不再推导。
二:EM算法
1:问题描述
我们最常见的问题可能没有上述那么简单,我们这一对西瓜可能是不同品种的,也就是不同类别的,一个可能是来自新疆吐鲁番的,一个可能是来自黄土高原的,甚至是来自海南岛的,他们的类别不同,所服从的概率分布可能也不同,可能分别服从于
也就是说我们不能统一估计他们的概率分布,得想办法知道他们的种类,同种类同类别的次啊能遵从相同的分布。假设我们还是有一堆的西瓜X={x_1,x_2,x_3,x_…,x_n},且个数是N,但是我们只是知道它们有M个品种,但是具体哪个是哪个的品种我们无法得知。且他们分别服从各自的高斯模型分布。
2:问题引入
我们如果知道了哪个西瓜是哪个类别,那么我们就能把同类别的放在一起,利用极大似然估计进行模型估计了,这样我们就能得到同类别的分布模型,方后续的工作。
问题就是我们如何知道哪个西瓜属于哪个类别呢?我们可以根据模型计算出一个概率,比如三个类别的高斯分布下,计算处各自类别的概率,哪个概率大就最可能属于某个类别。我们都知道,高斯模型,概率越大,越接近平均值,越靠近数据分布的中心,越有可能属于这个分布对应的类别。相反概率越小,越远离数据分布的中心,可能就是越不属于这个分布对应的类别。那么就得先估计出各自模型参数来。
那么问题来了,我们需要得知模型得先直到参数,得知道参数得先搞清楚类别。
以上描述就是有一个先有鸡还是先有蛋的矛盾了,知道了类别可以估算出概率模型,知道了概率模型可以去得出样本的类别归属。
3:EM算法
为了解决上述的矛盾,EM算法提出一个类似于 k-means的算法计算流程,流程如下:
1)先给出一共有多少类别,给每个类别预先估计出各自的参数值
2)将所有样本分别利用各个类别对应的概率模型进行计算,将样本归属于概率最大的那个概率模型对应的样本类别。
3)得到一轮分类后,利用极大似然重新计算各个类别对应的模型参数。
4)重复步骤二,直到类别不再发生变化。
4:k-means
这个很像k-means算法,这里啰嗦一下,给出k-means算法的过程
1)给出一共多少个类别,预先鱼变给出几个类别的质心。
2)将所有样本分别计算与各个质心的距离,找到距离最近的质心,就归属于该质心对应的类别
3)得到一轮分类后,重新计算类别之间的质心
4)重复步骤二,直到类别不再发生变化。
5:EM算法总结
因此EM算法和k-means很相似,k-means算法通过样本之间的距离来衡量样本和各个类别的相似度,将样本归属到距离最小的质心对应的类别,EM算法则是根据各个类别的概率模型计算的概率值来衡量样本到各个类别的相似度,将样本归属到概率最大的模型对应的类别。
如果每个样本都是多维度的数据,不仅仅是一个维度的话,那么每一个维度都需要建立一个概率分布,各个维度的概率相乘,即是这个点属于该模型的概率,或者说是和该模型的相似程度。这一点在异常值检测那一篇里面有讲过。
每天进步一点点《ML - 从极大似然到EM算法》相关推荐
- 每天进步一点点《ML - 感知机》
一些前提的约定,还是沿用上篇文章的哈.先来致敬下男神. 一:感知机 感知机是一种线性二分类模型,其目的是找到能将训练数据线性可分的分离超平面.超平面线性模型为 联想起之前学到逻辑斯特回归的决策边界,Z ...
- 感知机介绍及MATLAB实现
文章目录 前言 1 感知机简介 2 感知机结构 3 感知机学习过程 3.1 数据传播过程 3.2 参数更新过程 4 代码实现 4.1 准备数据 4.2 感知机训练学习 4.3 感知机仿真测试 总结 2 ...
- 每天进步一点点《ML - 线性回归》
本系列Machine Learning 的学习博文很大部分全是受教于 Andrew Ng 的Stanford录制的ML视频,我的男神. 致敬男神! 第一次写这样系列的博文,单纯是为了记录自己的所学,做 ...
- 【ML】基于机器学习的心脏病预测研究(附代码和数据集,多层感知机模型)
写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 之前创作过心脏病预测研究文章如下: [ML]基于机器学 ...
- 每天进步一点点《ML - 支持向量机》
一些前提的约定,还是沿用上篇文章的哈.先来致敬下男神. 一:支持向量机(support vector machine) 在感知机那一章节我们讲了,对样本的分类过程中,可以用维度空间内的某个超平面划分开 ...
- 每天进步一点点《ML - 正则化代价函数》
本系列Machine Learning 的学习博文很大部分全是受教于 Andrew Ng 的Stanford录制的ML视频,我的男神. 一:欠拟合(Under fitting)与过拟合(Over fi ...
- 每天进步一点点《ML - 高斯混合模型》
上一篇文章学习了极大似然估计和EM算法,这一章节就是学习EM算法的具体应用场景,高斯混合模型,是一中聚类的算法. 一:高斯混合模型(GMM) 我们将一个分布复杂的数据分布,用多个高斯概率分布来共同表示 ...
- 每天进步一点点《ML - Sklearn库简单学习》
一:Sklearn介绍 Sklearn是一个强大的机器学习库,基于python的.官方文档(http://scikit-learn.org/stable/ ).如下列举部分的使用场景. 由图中,可以看 ...
- 每天进步一点点《ML - 异常点检测》
一些前提的约定,还是沿用上篇文章的哈.先来致敬下男神. 一:异常点检查(Anomaly Detection) 这一章节相对来说简单很多,也可以说是很大程度是概率论的知识内容了. 异常点,和大部分正常状 ...
最新文章
- 架构思维-高业务复杂度系统建设思路
- pandas使用fillna函数将dataframe中的缺失值按照列均值进行填充(fill missing values with the mean of the column)
- 七夕节脱单“神助攻”!AI教你写情话
- RAID类型及软RAID的组建
- DPDK之makefile编译选项修改和gdb调试(三)
- Python 之字符串常用方法
- 深入理解javascript原型和闭包(18)——补充:上下文环境和作用域的关系
- 技术干货|基于Apache Hudi 的CDC数据入湖
- js中的showModalDialog的实战应用
- 二刻拍案惊奇之——国人为什么那么轻视技术
- 浅谈相对定位与绝对定位
- 敏捷开发一千零一问系列之五:怎样让队员主动要活?
- 达梦数据库ODBC连接异常问题
- X509 证书 检验是否过期,私钥签名,公钥验签
- matlab求系统根轨迹代码_第九讲? 根轨迹法
- 网站pv和uv比例多少合适
- POST /product/:id 获取单个商品
- SQL 高级教程:SQL BETWEEN 操作符
- hankerrank 刷题二( Python 基础)
- [hadoop3.x]HDFS中的内存存储支持(七)概述
热门文章
- Rust:剑指C++
- php使用http请求头实现文件下载
- 三议(巧用:before和inline-block伪元素解决)跨浏览器不定长宽,中心为基点,百分比定位~...
- 寻java、.net、或C#兼职程序开发人员(上海)
- 面试官系统精讲Java源码及大厂真题 - 40 打动面试官:线程池流程编排中的运用实战
- 图片服务 - thumbor安装
- Struts2 Hibernate集成示例教程
- LSA类型讲解——LSA-2(第二类LSA——Network LSA)、LSA-3(第三类LSA——Network Summary LSA)详解
- java 获取发布后的路径问题_Java中的路径问题实例分析
- 【Python】random库