朴素贝叶斯算法
----生成模型
优点:学习预测效率高,适合多分类;
朴素:假设条件独立即各特征之间独立,方便后续计算条件概率,但是,这样也就降低了一定的准确率。
学习算法:首先要搞清楚算法流程是什么(算法),流程中需要计算什么,为什么需要这些信息(策略),知道这些信息后为什么可以用来决策(模型)
算法流程
朴素贝叶斯估计法
输入:训练数据
T
=
{
(
x
1
,
y
1
)
,
.
.
.
.
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1),....,(x_N,y_N)\}
T={(x1,y1),....,(xN,yN)},其中
x
i
=
(
x
i
1
,
.
.
.
,
x
i
n
)
x_i=(x_i^1,...,x_i^n)
xi=(xi1,...,xin)(表明第
i
i
i个样本有
n
n
n个特征对应的取值),
x
i
j
x_i^j
xij是第
i
i
i个样本的第
j
j
j个特征,其中,
x
i
j
∈
{
a
j
1
,
.
.
.
,
a
s
j
}
x_i^j\in \{a_{j1},...,a_{s_j}\}
xij∈{aj1,...,asj},
a
j
l
a_{jl}
ajl是第
j
j
j个特征可能取得第
l
l
l个值,第
j
j
j个特征属性可能有
s
j
s_j
sj个取值。
y
i
∈
{
c
1
,
.
.
.
,
c
k
}
y_i\in \{c_1,...,c_k\}
yi∈{c1,...,ck}。所以,训练样本可以总结成:
N
N
N个样本 、
n
n
n个特征属性,第
j
j
j个特征属性有
s
j
s_j
sj个取值。
对于实例
X
X
X
输出:实例
X
X
X的分类。
(1)使用朴素贝叶斯估计法–计算先验概率、条件概率。
p
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
N
,
k
=
1
,
2
,
.
.
.
,
K
p(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)}{N},k=1,2,...,K
p(Y=ck)=N∑i=1NI(yi=ck),k=1,2,...,K,
p
(
x
j
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
N
I
(
x
i
j
=
a
j
l
,
y
i
=
c
k
)
∑
i
=
1
N
I
(
y
i
=
c
k
)
p(x^j=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^j=a_{jl},y_i=c_k)}{\sum_{i=1}^NI(y_i=c_k)}
p(xj=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xij=ajl,yi=ck) -----穷举:计算了每个特征在已知类别条件下的条件概率)
(2)对于给定的实例
X
=
(
x
1
,
.
.
.
,
x
n
)
T
X=(x^1,...,x^n)^T
X=(x1,...,xn)T,计算:
p
(
Y
=
c
k
)
∏
j
=
1
n
p
(
x
j
∣
Y
=
c
k
)
,
k
=
1
,
2
,
.
.
.
,
K
p(Y=c_k)\prod_{j=1}^np(x^j|Y=c_k),k=1,2,...,K
p(Y=ck)∏j=1np(xj∣Y=ck),k=1,2,...,K.
(3)确定实例
X
X
X的分类:
y
=
a
r
g
m
a
x
c
k
p
(
Y
=
c
k
)
∏
j
=
1
n
p
(
x
j
∣
Y
=
c
k
)
,
k
=
1
,
2
,
.
.
.
,
K
y=argmax_{c_k}p(Y=c_k)\prod_{j=1}^np(x^j|Y=c_k),k=1,2,...,K
y=argmaxckp(Y=ck)∏j=1np(xj∣Y=ck),k=1,2,...,K后验概率最大化原理是由期望风险最小化函数得到(可以先搞清楚模型框架)
贝叶斯估计法
上述中的朴素贝叶斯估计法(极大似然估计)可能出现所要估计的概率值为0的情况,会影响到后验概率的计算结果。
先验概率 :
p
λ
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
λ
N
+
K
λ
p_\lambda(Y=c_k)=\frac{\sum_{i=1}^NI(y_i=c_k)+\lambda}{N+K\lambda}
pλ(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ
条件概率:
p
(
x
j
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
N
I
(
x
i
j
=
a
j
l
,
y
i
=
c
k
)
+
λ
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
S
j
λ
p(x^j=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^NI(x_i^j=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^NI(y_i=c_k)+S_j\lambda}
p(xj=ajl∣Y=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xij=ajl,yi=ck)+λ
------等价于在随机变量各个取值的频数行赋予一个正数
λ
\lambda
λ*