学习笔记-贝叶斯分类器及其python实现
Posted 九七不会用python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记-贝叶斯分类器及其python实现相关的知识,希望对你有一定的参考价值。
朴素贝叶斯(NB)
[学生党学习笔记,如有错误谢谢各位大佬指出]
所用书籍:《统计学习方法》-李航
一、概述
朴素贝叶斯模型首先基于特征条件独立假设,学习输入的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
同时这也表明了朴素贝叶斯是一种生成式模型,是基于概率进行学习并分类的。
关于生成式模型与判别式模型,大家可以点链接看看这篇文章[戳这里]
相对于其它分类算法,朴素贝叶斯分类依赖于贝叶斯概率定理来预测未知数据集的类别,它的速度是非常快的。
贝叶斯定理实际上就是计算”条件概率”的公式。
条件概率:
P
(
A
∣
B
)
=
P
(
B
∣
A
)
∗
P
(
A
)
P
(
B
)
P(A|B)=\\fracP(B|A)*P(A)P(B)
P(A∣B)=P(B)P(B∣A)∗P(A)
在朴素贝叶斯分类器中,上式分别表示:
- P(A|B)是给定预测变量(B,属性)的类(A,target)的后验概率。【即在看到新数据后,我们要计算的该假设的概率】
- P(A)是类的先验概率。【即在得到新数据前某一假设的概率】
- P(B|A)是预测器给定类的概率的可能性。【该假设下得到这一数据的概率,称为似然度】
- P(B)是预测器的先验概率。【在任何假设下得到这一数据的概率,称为标准化常量】
朴素贝叶斯分类器假设类中特定特征和其它特征的存在无关,因为前提条件便是基于特征独立的。这也是这个算法被称为“朴素”的原因。
二、贝叶斯算法数学原理
这部分我建议大家去看李航老师的《统计学习方法》,我觉得写得很清楚,我这里就不过多赘述(也可能是我懒得打那些复杂的推导公式,我个人习惯在例子中搞明白)。
这里直接上例题(例子来源于上书):
例:由下表中的训练数据学习一个NB分类器并确定 x = ( 2 , S ) T x=(2,S)^T x=(2,S)T的类标记y,表中 x ( 1 ) x^(1) x(1), x ( 2 ) x^(2) x(2)为特征,取值的集合分别为 A 1 A_1 A1=1,2,3, A 2 A_2 A2=S,M,L,Y为类标记,Y ∈ \\in ∈C=1,-1.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
x ( 1 ) x^(1) x(1) | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 |
x ( 2 ) x^(2) x(2) | S | M | M | S | S | S | M | M | L | L | L | M | M | L | L |
Y Y Y | -1 | -1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -1 |
首先我们分析目标变量(Target)Y:
P
(
Y
=
1
)
=
9
15
,
P
(
Y
=
−
1
)
=
6
15
P(Y=1)=\\frac915,P(Y=-1)=\\frac615
P(Y=1)=159,P(Y=−1)=156
再看各特征的条件概率:
P
(
x
(
1
)
=
1
∣
Y
=
1
)
=
2
9
,
P
(
x
(
1
)
=
2
∣
Y
=
1
)
=
3
9
,
P
(
x
(
1
)
=
3
∣
Y
=
1
)
=
4
9
P(x^(1)=1|Y=1)=\\frac29,P(x^(1)=2|Y=1)=\\frac39,P(x^(1)=3|Y=1)=\\frac49
P(x(1)=1∣Y=1)=92,P(x(1)=2∣Y=1)=93,P(x(1)=3∣Y=1)=94
P
(
x
(
2
)
=
S
∣
Y
=
1
)
=
1
9
,
P
(
x
(
2
)
=
M
∣
Y
=
1
)
=
4
9
,
P
(
x
(
2
)
=
L
∣
Y
=
1
)
=
4
9
P(x^(2)=S|Y=1)=\\frac19,P(x^(2)=M|Y=1)=\\frac49,P(x^(2)=L|Y=1)=\\frac49
P(x(2)=S∣Y=1)=91,P(x(2)=M∣Y=1)=94,P(x(2)=L∣Y=1)=94
P
(
x
(
1
)
=
1
∣
Y
=
−
1
)
=
3
6
,
P
(
x
(
1
)
=
2
∣
Y
=
−
1
)
=
2
6
,
P
(
x
(
1
)
=
3
∣
Y
=
−
1
)
=
1
6
P(x^(1)=1|Y=-1)=\\frac36,P(x^(1)=2|Y=-1)=\\frac26,P(x^(1)=3|Y=-1)=\\frac16
P(x(1)=1∣Y=−1)=63,P(x(1)=2∣Y=−1)=62,P(x(1)=3∣Y=−1)=61
P
(
x
(
2
)
=
S
∣
Y
=
−
1
)
=
3
6
,
P
(
x
(
2
)
=
M
∣
Y
=
−
1
)
=
2
6
,
P
(
x
(
2
)
=
L
∣
Y
=
−
1
)
=
1
6
P(x^(2)=S|Y=-1)=\\frac36,P(x^(2)=M|Y=-1)=\\frac26,P(x^(2)=L|Y=-1)=\\frac16
P(x(2)=S∣Y=−1)=63,P(x(2)=M∣Y=−1)=62,P(x(2)=L∣Y=−1)=61
再对于给定的
x
=
(
2
,
S
)
T
x=(2,S)^T
x=(2,S)T:
P
(
Y
=
1
)
P
(
X
(
1
)
=
2
∣
Y
=
1
)
P
(
X
(
2
)
=
S
∣
Y
=
1
)
=
9
15
∗
3
9
∗
1
9
=
1
45
P(Y=1)P(X^(1)=2|Y=1)P(X^(2)=S|Y=1)=\\frac915*\\frac39*\\frac19=\\frac145
P(Y=1)P(X(1)=2∣Y=1)P(X(2)=S∣Y=1)=机器学习之用 Python 从零实现贝叶斯分类器
机器学习贝叶斯分类器代码实现(python+sklearn)