机器学习笔记——朴素贝叶斯
引例
问题:现在周同学想购买一杯奶茶,如何判断奶茶是好喝(Y)还是不好喝(N)。
概念
- 为了判断奶茶好不好喝,引入四个特征:甜度、牛奶、冰块、茶叶。与几个概念
后验概率:给定观测向量X(x1=甜度,x2=牛奶…),观察特定类别的概率P(y|x),类别:Y={y0=好喝,y1=不好喝},特征:X(x1=甜度,x2=牛奶,x3=茶叶,x4=冰块),抽象化如下。
风险:决策为Y时实际情况却为N。如:误诊,判断病人得肺炎,而实际上没有。
误判损失:λ为损失,假设损失的权重为0和1(0-1条件风险),
将肺炎呈阳性的人判断为阳性则λ=0(i=j),
将肺炎呈阳性的人判断为阴性则λ=1 (i!=j)。
贝叶斯分类器
最小化分类错误率(风险)的贝叶斯分类器:
最大后验概率(MAP)
训练集
测试组数 | 甜度 | 牛奶 | 冰块 | 茶叶 | 好喝(Y)/不好喝(N) |
---|---|---|---|---|---|
1 | 全糖 | 奶精 | 无 | 红茶 | Y |
2 | 无糖 | 牛奶 | 无 | 乌龙茶 | N |
3 | 全糖 | 牛奶 | 有 | 红茶 | Y |
4 | 无糖 | 牛奶 | 无 | 绿茶 | Y |
5 | 全糖 | 奶精 | 无 | 红茶 | Y |
6 | 无糖 | 奶精 | 一半 | 绿茶 | N |
7 | 半糖 | 牛奶 | 无 | 红茶 | Y |
8 | 少糖 | 奶精 | 有 | 绿茶 | N |
9 | 全糖 | 牛奶 | 无 | 红茶 | Y |
10 | 无糖 | 牛奶 | 无 | 绿茶 | N |
11 | 无糖 | 奶精 | 有 | 红茶 | Y |
12 | 无糖 | 牛奶 | 无 | 绿茶 | N |
13 | 全糖 | 奶精 | 一半 | 红茶 | N |
14 | 半糖 | 奶精 | 无 | 红茶 | Y |
15 | 半糖 | 牛奶 | 一半 | 红茶 | Y |
16 | 无糖 | 奶精 | 无 | 乌龙茶 | N |
- 假设周同学现在选择了全糖,牛奶,无冰块,红茶,则判断好不好喝即判断p(好喝|全糖、牛奶、无冰块、红茶)和p(不好喝|全糖、牛奶、无冰块、红茶),何者的概率更大?
由上述公式可得MAP为:
对于似然概率我们假设甜度、牛奶、冰和茶叶之间是相互独立的,即X1,X2,X3,X4之间是各自独立的向量。在条件独立性的假设下可以得到:
注:若没有条件独立性的假设,则甜度、牛奶、冰和茶叶为4维空间,可能性便有3x2x3x3=54种,计算量会呈指数型增长;其次,若假设不存在,若要判断P(半糖,奶精,无冰,乌龙茶|Y),需要从整个特征空间寻找,如果找不到,则会产生0的情况。
在条件独立的假设下,MAP可以改成下式:
P
(
类
别
∣
特
征
)
=
P
(
类
别
)
P
(
特
征
)
∏
i
=
1
d
P
(
特
征
i
∣
类
别
)
P(类别|特征)=\frac{P(类别)}{P(特征)}\prod_{i=1}^{d}P(特征_{i}^{}|类别)
P(类别∣特征)=P(特征)P(类别)i=1∏dP(特征i∣类别)
由于对所有类别来说分母P(特征)是相同的,因此贝叶斯分类器可转化如下:
回到问题判断p(好喝|全糖、牛奶、无冰块、红茶)和p(不好喝|全糖、牛奶、无冰块、红茶),何者的概率更大?
解答如下:
P
(
Y
∣
全
糖
、
牛
奶
、
无
冰
块
、
红
茶
)
=
P
(
全
糖
∣
Y
)
P
(
牛
奶
∣
Y
)
P
(
无
冰
块
∣
Y
)
P
(
红
茶
∣
Y
)
P
(
Y
)
P
(
全
糖
)
P
(
牛
奶
)
P
(
无
冰
块
)
P
(
红
茶
)
P(Y|全糖、牛奶、无冰块、红茶)=\frac{P(全糖|Y)P(牛奶|Y)P(无冰块|Y)P(红茶|Y)P(Y)}{P(全糖)P(牛奶)P(无冰块)P(红茶)}
P(Y∣全糖、牛奶、无冰块、红茶)=P(全糖)P(牛奶)P(无冰块)P(红茶)P(全糖∣Y)P(牛奶∣Y)P(无冰块∣Y)P(红茶∣Y)P(Y)
分子求解如下:
测试组数 | 甜度 | 牛奶 | 冰块 | 茶叶 | 好喝(Y)/不好喝(N) |
---|---|---|---|---|---|
1 | 全糖 | 奶精 | 无 | 红茶 | Y |
3 | 全糖 | 牛奶 | 有 | 红茶 | Y |
4 | 无糖 | 牛奶 | 无 | 绿茶 | Y |
5 | 全糖 | 奶精 | 无 | 红茶 | Y |
7 | 半糖 | 牛奶 | 无 | 红茶 | Y |
9 | 全糖 | 牛奶 | 无 | 红茶 | Y |
11 | 无糖 | 奶精 | 有 | 红茶 | Y |
14 | 半糖 | 奶精 | 无 | 红茶 | Y |
15 | 半糖 | 牛奶 | 一半 | 红茶 | Y |
P(全糖|Y)=4/9
测试组数 | 甜度 | 牛奶 | 冰块 | 茶叶 | 好喝(Y)/不好喝(N) |
---|---|---|---|---|---|
1 | 全糖 | 奶精 | 无 | 红茶 | Y |
3 | 全糖 | 牛奶 | 有 | 红茶 | Y |
4 | 无糖 | 牛奶 | 无 | 绿茶 | Y |
5 | 全糖 | 奶精 | 无 | 红茶 | Y |
7 | 半糖 | 牛奶 | 无 | 红茶 | Y |
9 | 全糖 | 牛奶 | 无 | 红茶 | Y |
11 | 无糖 | 奶精 | 有 | 红茶 | Y |
14 | 半糖 | 奶精 | 无 | 红茶 | Y |
15 | 半糖 | 牛奶 | 一半 | 红茶 | Y |
P(牛奶|Y)=5/9
测试组数 | 甜度 | 牛奶 | 冰块 | 茶叶 | 好喝(Y)/不好喝(N) |
---|---|---|---|---|---|
1 | 全糖 | 奶精 | 无 | 红茶 | Y |
3 | 全糖 | 牛奶 | 有 | 红茶 | Y |
4 | 无糖 | 牛奶 | 无 | 绿茶 | Y |
5 | 全糖 | 奶精 | 无 | 红茶 | Y |
7 | 半糖 | 牛奶 | 无 | 红茶 | Y |
9 | 全糖 | 牛奶 | 无 | 红茶 | Y |
11 | 无糖 | 奶精 | 有 | 红茶 | Y |
14 | 半糖 | 奶精 | 无 | 红茶 | Y |
15 | 半糖 | 牛奶 | 一半 | 红茶 | Y |
P(无冰块|Y)=6/9
测试组数 | 甜度 | 牛奶 | 冰块 | 茶叶 | 好喝(Y)/不好喝(N) |
---|---|---|---|---|---|
1 | 全糖 | 奶精 | 无 | 红茶 | Y |
3 | 全糖 | 牛奶 | 有 | 红茶 | Y |
4 | 无糖 | 牛奶 | 无 | 绿茶 | Y |
5 | 全糖 | 奶精 | 无 | 红茶 | Y |
7 | 半糖 | 牛奶 | 无 | 红茶 | Y |
9 | 全糖 | 牛奶 | 无 | 红茶 | Y |
11 | 无糖 | 奶精 | 有 | 红茶 | Y |
14 | 半糖 | 奶精 | 无 | 红茶 | Y |
15 | 半糖 | 牛奶 | 一半 | 红茶 | Y |
P(红茶|Y)=8/9
测试组数 | 甜度 | 牛奶 | 冰块 | 茶叶 | 好喝(Y)/不好喝(N) |
---|---|---|---|---|---|
1 | 全糖 | 奶精 | 无 | 红茶 | Y |
2 | 无糖 | 牛奶 | 无 | 乌龙茶 | N |
3 | 全糖 | 牛奶 | 有 | 红茶 | Y |
4 | 无糖 | 牛奶 | 无 | 绿茶 | Y |
5 | 全糖 | 奶精 | 无 | 红茶 | Y |
6 | 无糖 | 奶精 | 一半 | 绿茶 | N |
7 | 半糖 | 牛奶 | 无 | 红茶 | Y |
8 | 少糖 | 奶精 | 有 | 绿茶 | N |
9 | 全糖 | 牛奶 | 无 | 红茶 | Y |
10 | 无糖 | 牛奶 | 无 | 绿茶 | N |
11 | 无糖 | 奶精 | 有 | 红茶 | Y |
12 | 无糖 | 牛奶 | 无 | 绿茶 | N |
13 | 全糖 | 奶精 | 一半 | 红茶 | N |
14 | 半糖 | 奶精 | 无 | 红茶 | Y |
15 | 半糖 | 牛奶 | 一半 | 红茶 | Y |
16 | 无糖 | 奶精 | 无 | 乌龙茶 | N |
P(Y)=9/16
代入原式得:
P
(
Y
∣
全
糖
、
牛
奶
、
无
冰
块
、
红
茶
)
=
P
(
全
糖
∣
Y
)
P
(
牛
奶
∣
Y
)
P
(
无
冰
块
∣
Y
)
P
(
红
茶
∣
Y
)
P
(
Y
)
=
(
4
/
9
)
∗
(
5
/
9
)
∗
(
6
/
9
)
∗
(
8
/
9
)
∗
(
9
/
16
)
≈
0.082
P(Y|全糖、牛奶、无冰块、红茶) \\={P(全糖|Y)P(牛奶|Y)P(无冰块|Y)P(红茶|Y)P(Y)} \\={(4/9)*(5/9)*(6/9)*(8/9)*(9/16)} \\\approx0.082
P(Y∣全糖、牛奶、无冰块、红茶)=P(全糖∣Y)P(牛奶∣Y)P(无冰块∣Y)P(红茶∣Y)P(Y)=(4/9)∗(5/9)∗(6/9)∗(8/9)∗(9/16)≈0.082
同理可得
P
(
N
∣
全
糖
、
牛
奶
、
无
冰
块
、
红
茶
)
=
P
(
全
糖
∣
N
)
P
(
牛
奶
∣
N
)
P
(
无
冰
块
∣
N
)
P
(
红
茶
∣
N
)
P
(
N
)
=
(
1
/
7
)
∗
(
3
/
7
)
∗
(
4
/
7
)
∗
(
1
/
7
)
∗
(
7
/
16
)
≈
0.0021
P(N|全糖、牛奶、无冰块、红茶) \\={P(全糖|N)P(牛奶|N)P(无冰块|N)P(红茶|N)P(N)} \\={(1/7)*(3/7)*(4/7)*(1/7)*(7/16)} \\\approx0.0021
P(N∣全糖、牛奶、无冰块、红茶)=P(全糖∣N)P(牛奶∣N)P(无冰块∣N)P(红茶∣N)P(N)=(1/7)∗(3/7)∗(4/7)∗(1/7)∗(7/16)≈0.0021
P(Y|全糖、牛奶、无冰块、红茶)>P(N|全糖、牛奶、无冰块、红茶)
因此在特征为全糖、牛奶、无冰块、红茶的情况下,有较大的可能性选择好喝的判断。
拉普拉斯修正
为了避免未出现的特征在训练集中被抹去,常采用拉普拉斯修正。
测试组数 | 甜度 | 牛奶 | 冰块 | 茶叶 | 好喝(Y)/不好喝(N) |
---|---|---|---|---|---|
1 | 全糖 | 奶精 | 无 | 红茶 | Y |
2 | 无糖 | 牛奶 | 无 | 乌龙茶 | N |
3 | 全糖 | 牛奶 | 有 | 红茶 | Y |
4 | 无糖 | 牛奶 | 无 | 绿茶 | Y |
5 | 全糖 | 奶精 | 无 | 红茶 | Y |
6 | 无糖 | 奶精 | 一半 | 绿茶 | N |
7 | 半糖 | 牛奶 | 无 | 红茶 | Y |
8 | 少糖 | 奶精 | 有 | 绿茶 | N |
9 | 全糖 | 牛奶 | 无 | 红茶 | Y |
10 | 无糖 | 牛奶 | 无 | 绿茶 | N |
11 | 无糖 | 奶精 | 有 | 红茶 | Y |
12 | 无糖 | 牛奶 | 无 | 绿茶 | N |
13 | 全糖 | 奶精 | 一半 | 红茶 | N |
14 | 半糖 | 奶精 | 无 | 红茶 | Y |
15 | 半糖 | 牛奶 | 一半 | 红茶 | Y |
16 | 无糖 | 奶精 | 无 | 乌龙茶 | N |
可以从训练集中很容易发现,P(乌龙茶|Y)=0/9,因此很容易使得概率为0,显然不合适,由此引入拉普拉斯修正。