您的位置:首页 > 其它

机器学习算法(七):朴素贝叶斯方法

2015-07-18 10:37 148 查看

朴素贝叶斯方法

简介

朴素贝叶斯方法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对于给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。

朴素贝叶斯方法实际上学习到生成数据的机制,所以属于生成模型。条件独立假设是用于分类的特征在类确定的条件下都是条件独立的。这一假设使朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率,因为忽略掉了各项之间的联系。

朴素贝叶斯方法的学习与分类

朴素贝叶斯方法对条件概率作了条件独立性的假设。具体地,条件独立性假设是

P(X=x|Y=ck)=P(X(1)=x(1),...,X(n)=x(n)|Y=ck)=∏j=1nP(X(j)=x(j)|Y=ck)P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k)=\prod _{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)

朴素贝叶斯方法分类时,对给定的输入x,通过学习到的模型计算后验概率分布P(Y=ck|X=x)P(Y=c_k|X=x),将后验概率最大的类作为x的类输出。后验概率的计算根据贝叶斯定理进行:

P(Y=ck|X=x)=P(X=x|Y=ck)P(Y=ck)∑kP(X=x|Y=ck)P(Y=ck)P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum _k P(X=x|Y=c_k)P(Y=c_k)}

将条件独立假设代入后,朴素贝叶斯分类器可以表示为:

y=f(x)=argmax_ckP(Y=ck)∑jP(X(j)=x(j)|Y=ck)∑kP(Y=ck)∑jP(X(j)=x(j)|Y=ck)y=f(x)=argmax \_{c_k} \frac{P(Y=c_k) \sum_j P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum _k P(Y=c_k) \sum_j P(X^{(j)}=x^{(j)}|Y=c_k)}

上式中的分母对所有的ckc_k都是相同的,故在计算的时候可以忽略。

朴素贝叶斯方法将实例分类到后验概率最大的类中,这等价于期望风险最小化。

朴素贝叶斯方法的参数估计

极大似然估计

在朴素贝叶斯方法中,学习意味着估计P(Y=ck)P(Y=c_k)和P(X(j)=x(j)|Y=ck)P(X^{(j)}=x^{(j)}|Y=c_k)。可以应用极大似然估计方法估计相应的概率。先验概率P(Y=ck)P(Y=c_k)的极大似然估计是

P(Y=ck)=∑Ni=1I(yi=ck)N,k=1,2,...,KP(Y=c_k)=\frac{\sum _{i=1}^N I(y_i=c_k)}{N},k=1,2,...,K

设第j个特征x(j)x^{(j)}可能取值的集合为{aj1,aj1,...,ajSja _{j1},a _{j1},...,a _{jS _j}},条件概率P(X(j)=ajl|Y=ck)P(X^{(j)}=a _{jl}|Y=c_k)的极大似然估计是

P(X(j)=ajl|Y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)∑Ni=1I(yi=ck)P(X^{(j)}=a _{jl}|Y=c_k)=\frac{\sum _{i=1}^N I(x _i^{(j)}=a _{jl},y_i=c_k)}{\sum _{i=1}^N I(y_i=c_k)}

式中,x(j)ix _i^{(j)}是第i个样本的第j个特征;ajla _{jl}是第j个特征可能取的第l个值;I为指示函数。

贝叶斯估计

用极大似然估计对某一新实例进行分类时,可能因为实例中某个特征在训练数据中并未出现过,而导致分类结果有偏差。可以采用贝叶斯估计来解决。具体地,条件概率的贝叶斯估计是:

Pλ(X(j)=ajl|Y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)+λ∑Ni=1I(yi=ck)+SjλP_{\lambda}(X^{(j)}=a _{jl}|Y=c_k)=\frac{\sum _{i=1}^N I(x _i^{(j)}=a _{jl},y_i=c_k)+ \lambda}{\sum _{i=1}^N I(y_i=c_k)+ S_j\lambda}

等价于在随机变量各个取值的频数上赋予一个正数λ\lambda。当λ=0\lambda=0时就是极大似然估计。常取λ=1\lambda=1,这时称为拉普拉斯平滑。同样,先验概率的贝叶斯估计是

Pλ(Y=ck)=∑Ni=1I(yi=ck)+λN+KλP _{\lambda}(Y=c_k)=\frac{\sum _{i=1}^N I(y_i=c_k)+ \lambda}{N+K \lambda}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: