zoukankan      html  css  js  c++  java
  • 朴素贝叶斯分类器

    朴素贝叶斯分类器

    贝叶斯公式

     x代表样本,c代表已知类别
    P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) ( 1 ) P(c|x) = frac{P(c)P(x|c)}{P(x)}qquad(1) P(cx)=P(x)P(c)P(xc)(1)

    前提假设:

     为了方便计算 P ( x ∣ c ) P(x|c) P(xc),朴素贝叶斯分类器采用了一个假设:**对已知类别,假设所有属性相互独立。**基于这个假设,式(1)可重写为:
    P ( c ∣ x ) = P ( c ) P ( x ∣ c ) P ( x ) = P ( c ) P ( x ) ∏ i = 1 d P ( x i ∣ c ) P(c|x)= frac{P(c)P(x|c)}{P(x)}=frac{P(c)}{P(x)}prod_{i=1}^{d}P(x_i|c) P(cx)=P(x)P(c)P(xc)=P(x)P(c)i=1dP(xic)
    其中d为属性的数目, x i x_i xi x x x在第 i i i个属性上的取值。

    朴素贝叶斯分类器表达式

     由于对所有类别来说 P ( x ) P(x) P(x)相同,根据贝叶斯判定准则:对每个样本 x x x选择能使后验概率 P ( c ∣ x ) P(c|x) P(cx)最大的类别标记有:
    h n b ( x ) = a r g c ∈ y m a x P ( c ) ∏ i = 1 d P ( x i ∣ c ) h_{nb}(x) = arg_{c in y}maxP(c)prod_{i=1}^{d}P(x_i|c) hnb(x)=argcymaxP(c)i=1dP(xic)
     一句话概括:朴树贝叶斯分类器的训练过程就是用训练集 D D D估计先验概率 P ( c ) P(c) P(c),为每个属性估计条件概率 P ( x i ∣ c ) P(x_i|c) P(xic)
     令 D c D_c Dc表示第 D D D的第 c c c类样本子集,则估计先验概率
    P ( c ) = ∣ D c ∣ ∣ D ∣ P(c) = frac{|D_c|}{|D|} P(c)=DDc
     对于离散属性,令 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 ) = ∣ D c , x i ∣ ∣ D c ∣ P(x_i|c)=frac{|D_{{c},{x_i}}|}{|D_c|} P(xic)=DcDc,xi

    举例

     下面是训练集 D D D ,年龄 、收入、学生、信誉为属性, d = 4 d=4 d=4,购买计算机为类别,类别数 y = 2 y=2 y=2

    编号年龄收入学生信誉购买计算机
    1 ≤ 30 le30 30
    2 ≤ 30 le30 30
    3 30 ∼ 40 30sim40 3040
    4 ≥ 41 ge41 41
    5 ≥ 41 ge41 41
    6 ≥ 41 ge41 41
    7 30 ∼ 40 30sim40 3040
    8 ≤ 30 le30 30
    9 ≤ 30 le30 30
    10 ≥ 41 ge41 41
    11 ≤ 30 le30 30
    12 30 ∼ 40 30sim40 3040
    13 30 ∼ 40 30sim40 3040
    14 ≥ 41 ge41 41

     下面是一个测试样本 x x x,判断是否购买计算机

    编号年龄收入学生信誉购买计算机
    1 ≤ 30 le30 30?

    首先计算先验概率 P ( c ) P(c) P(c),有:
    P ( 购 买 计 算 机 = 是 ) = 9 14 = 0.64 P(购买计算机= 是) = frac{9}{14}=0.64 P(=)=149=0.64
    P ( 购 买 计 算 机 = 否 ) = 5 14 = 0.36 P(购买计算机= 否) = frac{5}{14}=0.36 P(=)=145=0.36
    再为每个属性估计条件概率 P ( x i ∣ c ) P(x_i|c) P(xic)
    P 年 龄 ≤ 30 ∣ 购 买 计 算 机 = 是 = 2 9 = 0.22 P_{年龄le30|购买计算机=是}=frac{2}{9}=0.22 P30==92=0.22
    P 年 龄 ≤ 30 ∣ 购 买 计 算 机 = 否 = 3 5 = 0.60 P_{年龄le30|购买计算机=否}=frac{3}{5}=0.60 P30==53=0.60
    P 收 入 = 中 ∣ 购 买 计 算 机 = 是 = 4 9 = 0.44 P_{收入=中|购买计算机=是}=frac{4}{9}=0.44 P===94=0.44
    P 收 入 = 中 ∣ 购 买 计 算 机 = 否 = 2 5 = 0.40 P_{收入=中|购买计算机=否}=frac{2}{5}=0.40 P===52=0.40
    P 学 生 = 是 ∣ 购 买 计 算 机 = 是 = 6 9 = 0.67 P_{学生=是|购买计算机=是}=frac{6}{9}=0.67 P===96=0.67
    P 学 生 = 是 ∣ 购 买 计 算 机 = 否 = 1 5 = 0.20 P_{学生=是|购买计算机=否}=frac{1}{5}=0.20 P===51=0.20
    P 信 誉 = 中 ∣ 购 买 计 算 机 = 是 = 6 9 = 0.67 P_{信誉=中|购买计算机=是}=frac{6}{9}=0.67 P===96=0.67
    P 信 誉 = 中 ∣ 购 买 计 算 机 = 否 = 2 5 = 0.40 P_{信誉=中|购买计算机=否}=frac{2}{5}=0.40 P===52=0.40
    所以根据朴素贝叶斯分类器表达式有:
    P ( 购 买 计 算 机 = 是 ) × P 年 龄 ≤ 30 ∣ 购 买 计 算 机 = 是 × P 收 入 = 中 ∣ 购 买 计 算 机 = 是 × P 学 生 = 是 ∣ 购 买 计 算 机 = 是 × P 信 誉 = 中 ∣ 购 买 计 算 机 = 是 ≈ 0.03 P(购买计算机=是) imes P_{年龄le30|购买计算机=是} imes P_{收入=中|购买计算机=是} \ imes P_{学生=是|购买计算机=是} imes P_{信誉=中|购买计算机=是}approx 0.03 P(=)×P30=×P==×P==×P==0.03
    P ( 购 买 计 算 机 = 否 ) × P 年 龄 ≤ 30 ∣ 购 买 计 算 机 = 否 × P 收 入 = 中 ∣ 购 买 计 算 机 = 否 × P 学 生 = 是 ∣ 购 买 计 算 机 = 否 × P 信 誉 = 中 ∣ 购 买 计 算 机 = 否 ≈ 0.01 P(购买计算机=否) imes P_{年龄le30|购买计算机=否} imes P_{收入=中|购买计算机=否} \ imes P_{学生=是|购买计算机=否} imes P_{信誉=中|购买计算机=否}approx 0.01 P(=)×P30=×P==×P==×P==0.01
    由于 0.03>0.01,所以朴素贝叶斯分类器将测试样本 x x x判别为“购买计算机 = 是”。

    拉普拉斯修正(Laplacian correction)

     如果有一个测试样本的属性“信誉 = 低”,那么条件概率
    P ( 信 誉 = 低 ∣ 购 买 计 算 机 = 是 ) = 0 9 = 0 P(信誉 = 低 | 购买计算机=是) = frac{0}{9}=0 P(==)=90=0,即使其他属性明显是“购买计算机= 是”,但分类结果都将是“购买计算机 = 否”。为了避免测试样本中其他属性信息被训练集中未出现的属性值“抹去”,可用拉普拉斯修正。
     令 N N N表示训练集 D D D中可能的类别数, N i N_i Ni表示第 i i i个属性的取值数则
    先验概率为
    P ^ ( c ) = ∣ D c ∣ + 1 ∣ D ∣ + N widehat P(c)=frac{|D_c|+1}{|D|+N} P (c)=D+NDc+1
    后验概率为
    P ^ ( x i ∣ c ) = ∣ D c , x i ∣ + 1 ∣ D c ∣ + N i widehat P(x_i|c)=frac{|D_{c,x_i}|+1}{|D_c|+N_i} P (xic)=Dc+NiDc,xi+1
     例如上文例子中,先验概率可以估计为:
    P ^ ( 购 买 计 算 机 = 是 ) = 9 + 1 14 + 2 = 0.625 widehat P(购买计算机= 是) = frac{9+1}{14+2}=0.625 P (=)=14+29+1=0.625
    P ^ ( 购 买 计 算 机 = 否 ) = 5 + 1 14 + 2 = 0.375 widehat P(购买计算机= 否) = frac{5+1}{14+2}=0.375 P (=)=14+25+1=0.375
    后验概率可以估计为:
    P ( 年 龄 ≤ 30 ∣ 购 买 计 算 机 = 是 ) = 2 + 1 9 + 3 = 0.25 P(年龄le30|购买计算机=是)=frac{2+1}{9+3}=0.25 P(30=)=9+32+1=0.25
    P ( 信 誉 = 低 ∣ 购 买 计 算 机 = 是 ) P(信誉 = 低 | 购买计算机=是) P(==)可以估计为:
    P ( 信 誉 = 低 ∣ 购 买 计 算 机 = 是 ) = 0 + 1 9 + 3 = 0.083 P(信誉 = 低 | 购买计算机=是) = frac{0+1}{9+3}=0.083 P(==)=9+30+1=0.083

  • 相关阅读:
    不懂数据库索引的底层原理?那是因为你心里没点b树
    你必须了解的java内存管理机制(三)-垃圾标记
    一次给女朋友转账引发我对分布式事务的思考
    看完此文,妈妈还会担心你docker入不了门?
    再过半小时,你就能明白kafka的工作原理了
    IEEE 754浮点数表示标准
    ROM正弦波发生器
    对分布式工程的初步认识和理解
    泛型(二)
    泛型(一)
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860117.html
Copyright © 2011-2022 走看看