朴素贝叶斯(Naive Bayesian)分类器原理入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/programmer_wei/article/details/52092995

版权声明:本文为原创文章:http://blog.csdn.net/programmer_wei/article/details/52092995
NB分类算法是概率学派的经典算法,也是机器学习中的一个非常经典非常基础的分类算法,NB算法有很强的数学理论作为支撑,本文主要介绍了NB算法的基本原理与数学推导。

假设我们有一组训练数据:

(x1,c1),(x2,c2)......(xn,cn)

其中 ci 是每个数据的标签类别, xi 是特征向量,我们需要根据这些训练数据训练一个朴素贝叶斯分类器来对新数据进行分类。

既然是贝叶斯学派的算法,我们首先不得不引入贝叶斯公式,这也是算法的基础:

P(c|x)=P(c)P(x|c)P(x)

这里可以进行理解:
P(c|x) :对于给定特征属性x条件下,数据属于c类别的概率。
P(c) :样本空间中各个类别所占的比例。
P(x|c) :对于给定类别的条件下的特征属性组合是x的概率。
然而 P(x|c) 是不能直接求得的,因为这里涉及到x的 联合概率,即 P(x|c)P(x1,x2...xn|c) ,直接估计每个类别c下的特征属性x的频率是不准确的,首先x的排列组合空间数可能会非常大,会引起组合爆炸问题,其次x的所有排列组合中有很多情况是样本数据中并没有出现的,这就引起了数据稀疏的问题,所以 P(x|c) 是不能直接进行求解的。

为了解决上述问题,于是,在NB算法中作出一个非常重要的假设,那就是数据的每个属性是条件独立的,因为属性是相互独立的,那么我们就不需要使用联合概率来表示上面的 P(x|c)P(x1,x2...xn|c) 了,我们可以得到新的公式:

P(c|x)=P(c)P(x|c)P(x)=P(c)P(x)i=1dP(xi|c)

我们可以看到,因为有了 属性条件独立的假设 P(x|c)di=1P(xi|c) ,d为属性个数。这样我们 就很好进行计算了,只需要分别统计每个类别下的属性取值所占比例即可。这也就是我们的似然函数,我们可以将 di=1P(xi|c) 取对将连乘转换为累加,避免数据下溢,来进行计算。

参考文章:
《机器学习》周志华

猜你喜欢

转载自blog.csdn.net/programmer_wei/article/details/52092995