生成模型、高斯判别分析、朴素贝叶斯——斯坦福CS229机器学习个人总结(二)

本文是斯坦福CS229机器学习课程的个人总结,主要探讨生成学习算法,包括判别模型与生成模型的概念,详细介绍了高斯判别分析(GDA)和朴素贝叶斯方法,特别是如何处理连续型和离散型特征,并讲解了朴素贝叶斯在文本分类中的应用,如多元伯努利事件模型(NB-MBEM)和多项式事件模型(NB-MEM)。此外,文章还讨论了拉普拉斯平滑在解决数据稀疏性问题中的作用。
摘要由CSDN通过智能技术生成

1、生成学习算法(Generative Learning Algorithm)

1.1、判别模型与生成模型

判别模型:训练出一个总模型,把新来的样本放到这个总模型中,直接判断这个新样本是猫还是狗。

生成模型:先训练出一个猫的模型,再训练出一个狗的模型。把新来的样本放到猫的模型里,看它生成的概率是多少,再把它放到狗的模型里,看它生成的概率是多少。如果用猫的模型生成的概率比较大,就把新样本判断为猫,如果用狗的模型生成的概率比较大,就把新样本判断为狗。

- 判别模型 生成模型
区别 反映异类数据之间的差异 反映同类数据之间的相似度
形式化 直接对 p(yx) 建模 p(xy) 建模,再求 p(yx)
生产性能 高(直接判断) 低(逐个生成概率并对比)
学习难度 简单,容易学习 复杂,较难学习
转化关系 判别模型不能转化为生成模型 生成模型能转化为判别模型
其他 黑盒,不可视;
能清晰分辨出各类差异特征;
使用范围更广
研究单类问题更灵活;
可以把整个场景描述出来;
要满足特定条件才能使用
常见模型 logistic回归;
SVM;
神经网络等
高斯判别分析;
贝叶斯算法;
隐马尔科夫模型等

1.2、生成模型的一般做法

因为目前还没有做过相关工程,而且本人也还只是处于学习阶段,下面只是一些自己的总结,若有错误的地方,请指正。
判别模型是直接对 p(yx) 建模进行估计,生成模型是先求 p(xy) 再求 p(yx) ,它们之间是怎么转换的?
首先引出贝叶斯规则:

p(yx)=p(xy)p(y)p(x)(1)

再配合上联合概率我一般是这么记的,这样就可以随便切来切去不会搞混了:
p(yx)p(x)=p(x,y)=p(xy)p(y)(2)

上面说了,我们需要生成一个猫的模型:
p(y=x)=p(xy=)p(y=)p(x)(3)

再生成一个狗的模型:
p(y=x)=p(xy=)p(y=)p(x)(4)

然后比较是 p(y=x) “这个样本是猫的概率”更大,还是 p(y=x) “这个样本是狗的概率”更大。
我们可以看到(3)式和(4)式的分母是一样的,就只比较分子的大小,所以问题就变成了是 p(xy=)p(y=) 更大还是 p(xy=)p(y=) 更大。
形式化一下就是:
argmaxyp(yx)=argmaxyp(xy)p(y)(5)

p(y) ,先验概率(Prior),表示:对于给定观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小”,比如猫或者狗在我们的生活中出现的频率(这个看起来是一样的,但如果是狗和狼,就有 p(y=)>p(y=) ,因为狼比狗更常见);
p(xy) ,似然性(Likelihood),表示:“这个猜测生成我们观测到的数据的可能性大小”。(如果样本里有一项特征表达出“鼻子较长”这个信息,那么假设样本是猫的同时观察到“鼻子较长”,和假设样本是狗的同时观察到“鼻子较长”的可能性是不一样的,明显后者的可能性更高)

每一个猜测都有属于自己的先验概率 p(y=n) 与似然性 p(xy=n) 的乘积,用来对 p(y=nx) 做估计,表示“同一组输入产生的每个猜测的可能性大小”。
比如同一组数据 x ,通过对 p(y=n)p(xy=n) 的建模与计算,产生了 p(y=x) p(y=x) p(y=x) 三个概率,通过对比这三个概率的大小,选取概率最大的那个猜测作为最终的预测结果,这就是生成模型的一般做法。

2、高斯判别分析(Gaussian Discriminant analysis)

高斯判别分析(GDA)名字中虽然有“判别”二字,却是地地道道的生成算法。

GDA解决的是连续型随机变量的分类问题。

什么是连续型随机变量呢?举两个例子:
公交车15分钟一趟,某人的等车时间 x 是区间 [0,15) 中的一个数, x 是连续型随机变量,因为 x 可以取小数甚至无理数。
抛20枚硬币,硬币朝上的数量 x 只能取 0 ~ 20 之间的整数,不能取 0.1,3 这样的小数或者无理数,所以这里的 x 是离散型随机变量。

而且只有连续型随机变量的分布函数可以积分,得到概率密度函数,这样才能用多元高斯分布对 p(xy) 建模,进而使用高斯判别式啊。

下面给出高斯判别分析的假设:

y ~ Bernoulli(ϕ)

xy=0 ~ N(μ0,Σ)

xy=1 ~ N(μ1,Σ)

接着给出一个 k 维向量 x ,以 (μ,Σ) 为参数的多元高斯分布原始定义为:
f(x)=12πk|Σ|exp(12(xμ)TΣ1(xμ))(6)

由此可以得到下面的分布( x 是n维向量):
p(y)p(xy=0)p(xy=1)=ϕy(1ϕ)1y=12πn|Σ|exp(12(xμ0)TΣ1(xμ0))=12πn|Σ|exp(12(xμ1)TΣ1(xμ1))(7)

这里有先验概率 p(y) (因为是伯努利分布,所以 y 的取值是0或者1),具体猜测的似然性 p(xy=0) p(xy=1) ,在生成模型中,会对 p(y=n)p(xy=n) 进行计算,分别得到输入 x 被分类为0与被分类为1的概率,然后再对这两个概率进行比较,取较大的那个最为分类结果。
而这些分布里面一共有 ϕ,μ0,μ1,Σ 4个参数,如果我们求得了这几个参数,就可以对实际的输入 x 进行计算了。
进一步地,得到我们的似然函数(m是样本数量):
l(ϕ,μ0,μ1,Σ)=logi=1mp(x(i),y(i);ϕ,μ0,μ1,Σ)=logi=1mp(x(i)y(i);μ0,μ1,Σ)p(y(i);ϕ)(8)

然后通过最大似然估计得到我们的参数:
ϕμ0μ0Σ=1mi=1mI{ y(i)=1}=mi=1I{ y(i)=0}x(i)mi=1I{ y(i)=0}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值