本文主要是介绍机器学习——贝叶斯分类器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、贝叶斯决策论
贝叶斯决策论是概率框架下实施决策的基本方法。
假设有 N N N种可能的类别标记,即 Y = { c 1 , c 2 , . . . , c N } Y=\{c_1,c_2,...,c_N \} Y={c1,c2,...,cN}, λ i j \lambda_{ij} λij是将一个真实标记为 c j c_j cj的样本误分类为 c i c_i ci所产生的损失。基于后验概率 P ( c i ∣ x ) P(c_i|\bm x) P(ci∣x)可获得将样本 x \bm x x分类为 c i c_i ci所产生的期望损失,即在样本 x \bm x x上的“条件风险”
R ( c i ∣ x ) = ∑ j = 1 N λ i j P ( c j ∣ x ) R(c_i|\bm x)=\sum_{j=1}^N \lambda_{ij} P(c_j|\bm x) R(ci∣x)=j=1∑NλijP(cj∣x)
为最小化总体风险,只需要在每个样本上选择能使条件风险 R ( c ∣ x ) R(c|\bm x) R(c∣x)最小的类别标记。
即, h ∗ ( x ) = a r g m i n x ∈ Y R ( c ∣ x ) h^*(\bm x)=argmin_{x \in Y} {R(c|\bm x) } h∗(x)=argminx∈YR(c∣x)
h ∗ h^* h∗被称为贝叶斯最优分类器,与之对应的总体风险被称为贝叶斯风险
若要使用贝叶斯判定准则来最小化决策风险,首先要获得后验概率 P ( c ∣ x ) P(c|\bm x) P(c∣x),但是在现实任务中难以直接获得。所以机器学习所要实现的是基于有限的训练样本集尽可能准确地估计出后验概率 P ( c ∣ x ) P(c|\bm x) P(c∣x)。
解决上述问题有两种策略:
判别式模型 | 生成式模型 | |
---|---|---|
思路 | 直接对 P ( c ∣ x ) P(c |\bm x ) P(c∣x)建模 | 先对联合概率分布 P ( x , c ) P(\bm x,c) P(x,c)建模,再由此获得 P ( c ∣ x ) P(c |\bm x ) P(c∣x) |
代表算法 | 1、决策树 2、BP神经网络 3、SVM | 贝叶斯分类器 |
贝叶斯分类器 ≠ \neq =贝叶斯学习
二、极大似然估计
1、贝叶斯主义认为:分布的参数是分布情况;
2、频率主义包括统计学习;
3、极大似然估计是统计学的一大贡献;
4、极大似然估计需要假设某种概率分布形式。
估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。
假设 P ( x ∣ c ) P(\bm x |c) P(x∣c)具有确定的形式并且被参数向量 θ c \bm \theta_c θc唯一确定,则需要利用训练集 D D D估计参数 θ c \bm \theta_c θc.
令 D c D_c Dc表示训练集 D D D中第 c c c类样本组成的集合,假设这些样本是独立同分布的,则参数 θ c \bm \theta_c θc对于数据集 D c D_c Dc的似然是
P ( D c ∣ θ c ) = ∏ x ∈ D c P ( x ∣ θ c ) P(D_c|\bm \theta_c)=\prod_{\bm x \in D_c} P(\bm x|\bm \theta_c) P(Dc∣θc)=x∈Dc∏P(x∣θc)
对 θ c \bm \theta_c θc进行极大似然估计,最大化似然 P ( D c ∣ θ c ) P(D_c|\bm \theta_c) P(Dc∣θc)的参数值 θ ^ c \hat {\bm \theta}_c θ^c.极大似然估计是在 θ c \bm \theta_c θc所有可能取值中,找到一个能使数据出现的“可能性”最大的值。
但是上式中的连乘操作易造成下溢,通常使用对数似然(log-likelihood)
L L ( θ c ) = log P ( D c ∣ θ c ) = ∑ x ∈ D c log P ( x ∣ θ c ) LL(\bm \theta_c)=\log P(D_c|\bm \theta_c)=\sum_{\bm x \in D_c} \log P(\bm x| \bm {\theta_c}) LL(θc)=logP(Dc∣θc)=x∈Dc∑logP(x∣θc)
此时,参数 θ c \bm \theta_c θc的极大似然估计 θ ^ c \hat {\bm \theta}_c θ^c为
θ ^ c = arg max θ c L L ( θ c ) \hat {\bm \theta}_c=\arg \max_{\bm \theta_c} LL(\bm \theta_c) θ^c=argθcmaxLL(θc)
三、朴素贝叶斯分类器
P ( x ∣ c ) P(\bm x| c) P(x∣c)的主要障碍:所有属性上的联合概率难以从有限训练样本估计获得;计算上组合爆炸;数据上样本稀疏;属性越多,问题越严重。
朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立,即假设每个属性独立地对分类结果发生影响。基于属性条件独立性假设:
P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) = P ( c ) P ( x ) ∏ i = 1 d P ( x i ∣ c ) P(c|\bm x)=\frac {P(c) P(\bm x|c)} {P(\bm x)}=\frac {P(c)} {P(\bm x)} \prod_{i=1}^d P(x_i|c) P(c∣x)=P(x)P(c)P(x∣c)=P(x)P(c)i=1∏dP(xi∣c)
其中 d d d为属性数目, x i x_i xi为 x \bm x x在第 i i i个属性上的取值。
由于对于所有类别来说 P ( x ) P(\bm x) P(x)相同,因此贝叶斯判定准则有:
h n b ( x ) = arg max c ∈ Y P ( x ) ∏ i = 1 d P ( x i ∣ c ) h_{nb}(\bm x)=\arg \max_{c \in Y} P(x) \prod_{i=1}^d P(x_i|c) hnb(x)=argc∈YmaxP(x)i=1∏dP(xi∣c)
这即为朴素贝叶斯分类器的表达式。
朴素贝叶斯分类器的训练过程就是基于训练集 D D D来估计类先验概率 P ( c ) P(c) P(c),并为每个属性估计条件概率 P ( x i ∣ c ) P(x_i|c) P(xi∣c).
令 D c D_c Dc表示训练集 D D D中第 c c c类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率
P ( c ) = ∣ D c ∣ D P(c)=\frac {|D_c|} {D} P(c)=D∣Dc∣
离散属性:令 D c , x i D_{c,x_i} Dc,xi表示 D c D_c Dc中在第 i i i个属性上取值为 x i x_i xi的样本组成的集合,则条件概率 P ( x i ∣ c ) P(x_i|c) P(xi∣c)可估计为
P ( x i ∣ c ) = ∣ D c , x i ∣ D c P(x_i|c)=\frac {|D_{c,x_i}|} {D_c} P(xi∣c)=Dc∣Dc,xi∣
连续属性:可考虑概率密度函数
四、拉普拉斯修正
为了避免其他属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率值时通常要进行“平滑”,常用“拉普拉斯修正”。
具体来说,令 N N N表示训练集 D D D中可能得类别数, N i N_i Ni表示第 i i i个属性可能的取值数,则
P ^ ( c ) = ∣ D c ∣ + 1 ∣ D ∣ + N \hat P(c)=\frac {|D_c|+1} {|D|+N} P^(c)=∣D∣+N∣Dc∣+1
P ^ ( x i ∣ c ) = ∣ D c , x i ∣ + 1 ∣ D c ∣ + N i \hat P(x_i|c)=\frac {|D_{c,x_i}|+1} {|D_c|+N_i} P^(xi∣c)=∣Dc∣+Ni∣Dc,xi∣+1
拉普拉斯修正避免了因训练集样本不充分而导致概率估值为零的问题,并且在训练集变大时,修正过程所引入的先验的影响也会逐渐变得可忽略,使得估值逐渐趋向于实际概率值。
拉普拉斯修正实质上假设了属性值与类别均匀分布,这是在朴素贝叶斯学习过程中额外引入的关于数据的先验。
这篇关于机器学习——贝叶斯分类器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!