朴素贝叶斯分类

来源:互联网 发布:战争雷霆 海战 知乎 编辑:程序博客网 时间:2024/05/22 16:02

今天谈一谈朴素贝叶斯分类,我这篇文章加上了机器学习的标签,因为朴素贝叶斯分类和KNN分类不一样,它有一个训练的过程,虽然只是简单的计算概率,相比其它机器学习算法来说比较low,但确实是学习了一些东西。而且我个人认为人类认知世界其实靠的就是概率。下面是烂到家的导图一张


先说说贝叶斯定理吧。

P(h|D)=  P(D|h)P(h)  /  P(D)

其中P(h|D)表示在知道D发生的情况下h发生的概率。

我们把X看作分类中的特征集,yi代表第i个分类,xj代表第j个特征

所以:

P(yi|X)=P(X | yi)P(yi) / P ( X)

在分类过程中我们比较P(y | X)的大小,当yi的概率最大,那么我们就认为这个事物属于类别i

因为  P(X)是不变的 所以可以省略变为:

P(yi |X)=P(yi)P(X|yi)

    =P(yi)P(x1|yi)P(x2|yi)...P(xn|yi)


朴素贝叶斯分类的流程如下:

                            (准备阶段 – 人工)

                                     确定特征属性 -->  获取训练样本 -->

                            (分类器训练阶段 – 机器)

                                     -->  计算P(yi) --> 计算所有的P(aj|yi)  -->

                            (应用阶段 – 机器)

                                     -->  对所有的类别计算 P(yi)P(X|yi)  --> 以P(yi)P(X|yi)最大的类别作为X的所属类别。


注意:

我们的数据中有的特征可能是年龄、收入、身高这种线性的值,而不是性别、国家、职业这种方便计算概率的离散型的值

我们有两种方法处理这种特征:

1.离散化:

将线性数据离散化。

例:

年龄:

小于18岁

18岁到30岁

30岁到50岁

50岁以上

这样把线性的数据年龄变成了离散型数据分成了四类。但是我们不能保证我们分类的取值范围是正确的。

2.正态分布:

我们可以通过正态分布来计算概率,这种方法我们大学都应该在概率统计课上学过。


这里面f(x)就是P(x | yi)


P(x | yi)=(1/sqrt(2π)) e ^ ( -((x-μ)^2)  / 2σ^2)

其中μ代表X的平均值,σ代表样X的样本标准差。 X是在yi类中xj的数值集合。


朴素贝叶斯的优点在于简单,速度快,而且训练需要的数据量比较小。

而缺点是不能学习特征之间的相互作用,比如说一个人喜欢米也喜欢奶酪,但不喜欢奶酪加米。贝叶斯学不到这些。毕竟sometimes naive再见





0 0