[笔记]生成学习算法·GDA·NB
来源:互联网 发布:女士皮鞋品牌 知乎 编辑:程序博客网 时间:2024/06/09 22:44
生成学习算法
判别学习算法(Discriminative learning algorithm)
直接学习
该种模型只是通过一条分隔线把两种类别区分开。
生成学习算法(Generative learning algorithm)
根据特征和类别情况,对
在计算分析得到其概率后,根据贝叶斯公式(Bayes rule):
可推导出y在给定x的概率。
根据贝叶斯公式可以变化为:
表达式含义为:
如果
高斯判别分析
GDA(Gaussian discriminative analysis)是我们要学习的第一个生成学习算法。
GDA的两个前提:
- 假设输入特征x∈Rn,并且是连续值
p(x|y) 满足多维正态分布(multivariate normal distribution)
多维正态分布
期望向量[均值向量](mean vector),
协方差矩阵(covariance matrix),
协方差为:
a.均值为0,协方差矩阵为单位矩阵
b.均值为0,协方差矩阵
c.均值为0,协方差矩阵
GDA模型
参数ϕ, ∑,
其中考虑的是
求出极大似然估计为:
分母是对应标签(0/1)的样本数,分子是对应标签(0/1)的
这个算法工作起来就是这样的:
讨论:GDA和Logistic回归
GDA模型和logistic回归有一个很有趣的关系。
如果把
其中,θ是ϕ, ∑,
讨论:哪个更好?
如果p(x|y)是一个多维的高斯分布,那么p(y|x)必然能推出一个logistic函数;反之则不能。这是因为GDA做了更强的假设,(x| y)服从高斯分布。
如果数据服从或大致服从高斯分布,那么GDA的性能优于Logistic回归;如果你不确定数据的分布情况,那么Logistic回归表现会更好。
GDA因为是强假设,所以对于建模会使用更少的数据;Logistic由于假设相对较弱,所以有着不错的适应性(鲁棒性),但建模时使用更多的数据。
鲁棒性:
能推出
朴素贝叶斯
在GDA模型中,特征向量x是连续的实数向量。如果x是离散值,我们需要不同的学习算法。
举例讲解:垃圾邮件分类(文本分类问题)
首先要输入一封邮件,然后与词典进行比对,如果出现了该词,则设xi=1,否则xi=0,例如:
我们要对
所以我们要用强假设限定
根据链式法则和朴素贝叶斯假设得:
数据的联合似然性(joint likelihood)为:
得到极大似然估计:
解释
m就是训练样本的数量,m封标记着“垃圾“(y=1)和“正常“(y=0)的邮件。
完成上述参数的设置,就可以得到:
存在问题:
假设新邮件出现了一个以前邮件从来没有出现的词,模型会认为这个词在任何一封邮件出现的概率为0,这在统计学中是不科学的。
拉普拉斯平滑(Laplace smoothing)
我们使用Laplace平滑来避免朴素贝叶斯出现上述问题。
一般式:
朴素贝叶斯问题,通过Laplace平滑:
问题解决。
- [笔记]生成学习算法·GDA·NB
- 机器学习--生成学习算法之GDA
- 【cs229-Lecture5】生成学习算法:1)高斯判别分析(GDA);2)朴素贝叶斯(NB)
- 生成学习算法.高斯判别分析(GDA).GDA与Logistic模型
- 生成学习算法.高斯判别分析(GDA).GDA与Logistic模型
- 斯坦福机器学习笔记1:GDA高斯判别分析算法的原理及matlab程序实现
- 生成学习算法(Generative Learning):GDA(高斯判别)和Navie Bayes(朴素贝叶斯)(一)
- 【机器学习】机器学习(四、五、六):线性分类、高斯判别分析(GDA)、朴素贝叶斯(NB)
- GDA
- 关于NB算法的一些学习笔记——朴素贝叶斯算法理解
- 高斯判别分析(GDA)和朴素贝叶斯(NB)
- [Machine Learning] Generative learning algorithm-GDA and NB
- 高斯判别分析(GDA)和朴素贝叶斯(NB)
- 高斯判别分析(GDA)和朴素贝叶斯(NB)
- 机器学习算法 高斯识别分析(GDA) 多元高斯分布 CS229
- NB算法
- NB-IoT学习笔记_汇总
- CS229学习笔记之生成学习算法
- 如何在C++中调用C程序?
- 设计模式-模板方法模式
- 浅析C++中的this指针
- 230. Kth Smallest Element in a BST(Java)
- 进程间通信之消息队列
- [笔记]生成学习算法·GDA·NB
- PID控制算法+倒立摆控制应用
- Ubuntu + Windows 10 安装 rEFInd
- JdbcTemplate的保存和查询方法
- 个性化vim配置
- 浅谈JS中的call、apply和bind
- 51nod 1284 2 3 5 7的倍数 容斥原理
- c语言头文件怎么写?
- 数据封装