朴素贝叶斯分类模型

朴素贝叶斯分类模型是一种简单的构造分类器的方法。朴素贝叶斯分类模型是将问题分为特征向量和决策向量,并假设问题的特征向量都是相互独立地作用于决策向量的,即问题的特征之间都是互不相关的。尽管有这样过于简单的假设,但朴素贝叶斯分类模型能指数级降低贝叶斯网络构建的复杂性,同时还能较好地处理训练样本的噪声和无关属性,所以朴素贝叶斯分类模型仍然在很多现实问题中有着高效的应用,例如入侵检测和文本分类等领域。目前许多研究学者也在致力于改善特征变量间的独立性的限制使得朴素贝叶斯分类模型可以应用到更多问题上。

  1. 朴素贝叶斯分类算法入门,可以先阅读这篇文章:带你理解朴素贝叶斯分类算法 忆臻 知乎

贝叶斯公式:
P ( B ∣ A ) = P ( A ∣ B ) P ( B ) P ( A ) , 即 : P ( 类 别 ∣ 特 征 ) = P ( 特 征 ∣ 类 别 ) P ( 类 别 ) P ( 特 征 ) P(B|A)=\frac{P(A|B)P(B)}{P(A)},即:P(类别|特征)=\frac{P(特征|类别)P(类别)}{P(特征)} P(BA)=P(A)P(AB)P(B)P()=P()P()P()

  1. 朴素贝叶斯的思想基础:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别

  2. 朴素贝叶斯分类模型

来自贝叶斯网络模型算法 赵卫东 中国大学mooc

假设问题的特性向量为 X , X i = { X 1 , X 2 , … , X n } X,Xi=\{X_1, X_2, …,X_n\} XXi={X1,X2,,Xn}是特征属性之一,并且 X 1 , X 2 , … , X n X_1, X_2, …,X_n X1,X2,,Xn之前相互独立,那么 p ( X ∣ Y ) p(X|Y) p(XY)可以分解为多个向量的积,即有 p ( X ∣ Y ) = ∏ i = 1 n p ( X i ∣ Y ) p(X|Y)=\prod^n_{i=1}p(X_i|Y) p(XY)=i=1np(XiY)接下来使用朴素贝叶斯分类器来解决这个问题: p ( Y ∣ X ) = p ( Y ) ∏ i = 1 n p ( X i ∣ Y = y ) p ( X ) p(Y|X)=\frac{p(Y)\prod^n_{i=1}p(X_i|Y=y)}{p(X)} p(YX)=p(X)p(Y)i=1np(XiY=y)
其中, p ( X ) p(X) p(X)是常数,先验概率 p ( Y ) p(Y) p(Y)可以通过训练集中每类样本所占的比例进行估计。给定 Y = y Y=y Y=y,如果要估计测试样本 X X X的分类,由朴素贝叶斯分类得到 y y y的后验概率为: p ( Y = y ∣ X ) = p ( Y = y ) ∏ i = 1 n p ( X i ∣ Y = y ) p ( X ) p(Y=y|X)=\frac{p(Y=y)\prod^n_{i=1}p(X_i|Y=y)}{p(X)} p(Y=yX)=p(X)p(Y=y)i=1np(XiY=y)对此,我们需要找到使 p ( Y ) ∏ i = 1 n p ( X i ∣ Y = y ) p(Y)\prod^n_{i=1}p(X_i|Y=y) p(Y)i=1np(XiY=y)最大的类别 y y y即可
从计算分析中可见, p ( X i ∣ Y ) p(X_i|Y) p(XiY)的计算是模型关键的一步,这一步的计算视特征属性的不同也有不同的计算方法

  • 对于离散型的特征属性 X i X_i Xi,可以用类 Y Y Y中的属性值等于 X i X_i Xi的样本比例来进行估计。
  • 对于连续性的特征属性 X i X_i Xi,通常先将 X i X_i Xi离散化,然后计算属于类 Y Y Y的训练样本落在 X i X_i Xi对应离散区间的比例估计 p ( X i ∣ Y ) p(X_i|Y) p(XiY)。也可以假设 p ( X i ∣ Y ) p(X_i|Y) p(XiY)的概率分布,如正态分布,即 g ( x , η , σ ) = 1 2 π σ e − ( x − η ) 2 2 σ 2 g(x,\eta ,\sigma )=\frac{1}{\sqrt{2\pi }\sigma }e^-\frac{(x-\eta)^2}{2\sigma^2} g(x,η,σ)=2π σ1e2σ2(xη)2,而 P ( X k ∣ Y ) = g ( X k , η y , σ y ) P(X_k|Y)=g(X_k,\eta_{y},\sigma_{y}) P(XkY)=g(Xk,ηy,σy),因此只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,对训练样本代入上述公式即可得到需要的估计值。
  • 而在 p ( X i ∣ Y ) = 0 p(X_i|Y)=0 p(XiY)=0 的时候,该概率与其他概率相乘的时候会把其它概率覆盖,因此需要引入Laplace修正。做法是对所有类别下的划分计数都加1,从而避免了等于零的情况出现,并且在训练集较大时,并不会对结果产生影响,并且解决了上述频率为0的尴尬局面。

来自朴素贝叶斯分类的原理与流程

1、设 x = { a 1 , a 2 , . . . , a m } x=\{a_1,a_2,...,a_m\} x={a1,a2,...,am}为一个待分类项,而每个 a a a x x x的一个特征属性。
2、有类别集合 C = { y 1 , y 2 , . . . , y n } C=\{y_1,y_2,...,y_n\} C={y1,y2,...,yn}
3、计算 P ( y 1 ∣ x ) , P ( y 2 ∣ x ) , . . . , P ( y n ∣ x ) P(y_1|x),P(y_2|x),...,P(y_n|x) P(y1x),P(y2x),...,P(ynx)
4、如果 P ( y k ∣ x ) = m a x { P ( y 1 ∣ x ) , P ( y 2 ∣ x ) , . . . , P ( y n ∣ x ) } P(y_k|x)=max\{P(y_1|x),P(y_2|x),...,P(y_n|x)\} P(ykx)=max{P(y1x),P(y2x),...,P(ynx)},则 x ∈ y k x \in y_k xyk
那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:

找到一个已知分类的待分类项集合,这个集合叫做训练样本集。
统计得到在各类别下各个特征属性的条件概率估计。即
P ( a 1 ∣ y 1 ) , P ( a 2 ∣ y 1 ) , . . . , P ( a m ∣ y 1 ) ; P ( a 1 ∣ y 2 ) , P ( a 2 ∣ y 2 ) , . . . , P ( a m ∣ y 2 ) ; . . . ; P ( a 1 ∣ y n ) , P ( a 2 ∣ y n ) , . . . , P ( a m ∣ y n ) P(a_1|y_1),P(a_2|y_1),...,P(a_m|y_1);P(a_1|y_2),P(a_2|y_2),...,P(a_m|y_2);...;P(a_1|y_n),P(a_2|y_n),...,P(a_m|y_n) P(a1y1),P(a2y1),...,P(amy1);P(a1y2),P(a2y2),...,P(amy2);...;P(a1yn),P(a2yn),...,P(amyn)
如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:
P ( y i ∣ x ) = P ( x ∣ y i ) P ( y i ) P ( x ) P(y_i|x)=\frac{P(x|y_i)P(y_i)}{P(x)} P(yix)=P(x)P(xyi)P(yi)
因为分母对于所有类别为常数,所以我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:
P ( x ∣ y i ) P ( y i ) = P ( a 1 ∣ y i ) P ( a 2 ∣ y i ) . . . P ( a m ∣ y i ) P ( y i ) = P ( y i ) ∏ j = 1 m P ( a j ∣ y i ) P(x|y_i)P(y_i)=P(a_1|y_i)P(a_2|y_i)...P(a_m|y_i)P(y_i)=P(y_i)\prod^m_{j=1}P(a_j|y_i) P(xyi)P(yi)=P(a1yi)P(a2yi)...P(amyi)P(yi)=P(yi)j=1mP(ajyi)

  1. 朴素贝叶斯分类模型应用流程的三个阶段
    朴素贝叶斯分类模型_第1张图片

  2. scikit-learn 朴素贝叶斯类库,转:scikit-learn 朴素贝叶斯类库使用小结
    在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。分别是 G a u s s i a n N B GaussianNB GaussianNB M u l t i n o m i a l N B MultinomialNB MultinomialNB B e r n o u l l i N B BernoulliNB BernoulliNB。其中GaussianNB就是先验为高斯分布(正态分布)的朴素贝叶斯,MultinomialNB就是先验为多项式分布的朴素贝叶斯,而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。这三个类适用的分类场景各不相同,一般来说,如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。如果如果样本特征的分大部分是多元离散值,使用MultinomialNB比较合适。而如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。

  3. 朴素贝叶斯分类器还可以进行提升(Boosting),提升方法的主要思想是
    学习多个分类器组成一个分类器序列,序列中后面的分类器对前面的分类器导致的错误分类的数据给予更高的重视,即调整前一个分类器分类错误的训练集的权值,并对训练集重新计算权值以调整下一个分类器,以此类推,最终得到提升后的强分类器。
    朴素贝叶斯分类模型结构简单,只有两层结构。由于特征向量间的相互独立,算法简单易于实现。同时算法有稳定的分类效率,对于不同特点的数据集其分类性能差别不大。朴素贝叶斯分类在小规模的数据集上表现优秀,并且分类过程时空开销小。算法也适合增量式训练,在数据量较大时,可以人为划分后分批增量训练

  4. 贝叶斯垃圾邮件过滤器
    垃圾邮件是如何用贝叶斯方法过滤掉的
    机器学习项目(一)——垃圾邮件的过滤技术

你可能感兴趣的:(#,机器学习)