极大似然估计、最小二乘法及朴素贝叶斯
1. 问题定义
样本集
D
D
D中的样本都是独立同分布,且样本数为
m
m
m
D
=
{
(
X
1
,
Y
1
)
,
(
X
2
,
Y
2
)
,
.
.
.
,
(
X
m
,
Y
m
)
}
D=\{(X_1, Y_1), (X_2, Y_2), ...\ ,(X_m,Y_m)\}
D={(X1,Y1),(X2,Y2),... ,(Xm,Ym)}
其中,
X
k
=
{
x
1
,
x
2
,
.
.
.
,
x
n
}
X_k=\{x_1, x_2, ...\ ,x_n\}
Xk={x1,x2,... ,xn}是第
k
k
k个样本的
n
n
n个特征项,
X
k
∈
R
n
X_k\in\mathbb{R}^n
Xk∈Rn。
Y
k
Y_k
Yk是第
k
k
k个样本的类别,
Y
k
∈
R
1
Y_k\in\mathbb{R}^1
Yk∈R1。
Y
k
∈
Y
=
{
y
1
,
y
2
,
.
.
.
,
y
v
}
Y_k\in Y=\{y_1, y_2, ...\ ,y_v\}
Yk∈Y={y1,y2,... ,yv},其中
Y
Y
Y是类别的空间,
Y
∈
R
v
Y\in\mathbb{R}^v
Y∈Rv。
要解决的问题为,在已知样本和其所属的类别的条件下,求得某个样本是某一类别的概率。
2. 贝叶斯决策
首先看经典的贝叶斯公式:
(1) P ( y ∣ x ) = P ( x ∣ y ) P ( y ) P ( x ) P(y|x) = \frac{P(x|y)P(y)}{P(x)}\tag{1} P(y∣x)=P(x)P(x∣y)P(y)(1)
按照上述问题定义,可将贝叶斯公式写为:
(2)
P
(
y
∣
X
)
=
P
(
X
∣
y
)
P
(
y
)
P
(
X
)
P(y|X) = \frac{P(X|y)P(y)}{P(X)}\tag{2}
P(y∣X)=P(X)P(X∣y)P(y)(2)
由于每个类别都是独立的,则:
(3)
P
(
y
∣
X
)
=
P
(
X
∣
y
)
P
(
y
)
∑
i
=
1
v
P
(
X
∣
y
i
)
P
(
y
i
)
P(y|X) = \frac{P(X|y)P(y)}{\sum_{i=1}^{v}P(X|y_i)P(y_i)}\tag{3}
P(y∣X)=∑i=1vP(X∣yi)P(yi)P(X∣y)P(y)(3)
在这里,我们称:
P
(
y
)
P(y)
P(y)为先验概率
P ( X ∣ y ) P(X|y) P(X∣y)为条件概率
P ( y ∣ X ) P(y|X) P(y∣X)为后验概率
P ( X ) P(X) P(X)为先验概率
3. 朴素贝叶斯
根据上式(3)我们能够看到,在某一个样本所具有的的特征 X X X条件下,该样本属于某一种类别的概率 P ( y ∣ X ) P(y|X) P(y∣X)的相对大小与分母无关(在各个条件概率计算过程中,分母的值都相同,而且等于各个条件概率中分子值的和,因此,在计算得到各个分子后求和,也就得到了分母的值)。
因此,在构建朴素贝叶斯时,我们可以先忽略分母 P ( X ) P(X) P(X),着重求解分子。
对于分子中的先验概率 P ( y ) P(y) P(y),我们可以通过样本数据集 D D D来统计得到。
而对于分子中的条件概率 P ( X ∣ y ) P(X|y) P(X∣y),我们也可以根据样本数据集中出现的样本来估计条件概率。但是,在实际中, X X X往往包含多个特征,在样本中往往不能包含属性值的所有可能组合(假设每个属性都是二值属性,那么就有 2 n 2^n 2n中属性之间的组合),那么在样本集中,很多的 P ( X ∣ y ) P(X|y) P(X∣y)都会为0。然而,这些样本仅仅可能是我们的数据集中并没有观察到而并非真的不存在。
这时,朴素贝叶斯的条件独立性假设就发挥作用了。
通过条件独立性假设,我们可以将公式(3)改写为:
(4) P ( y ∣ X ) = P ( X ∣ y ) P ( y ) ∑ i = 1 v P ( X ∣ y i ) P ( y i ) = P ( x 1 , x 2 , . . . , x n ∣ y ) P ( y ) ∑ i = 1 v P ( X ∣ y i ) P ( y i ) = ∏ j = 1 n P ( x j ∣ y ) P ( y ) ∑ i = 1 v P ( X ∣ y i ) P ( y i ) P(y|X) = \frac{P(X|y)P(y)}{\sum_{i=1}^{v}P(X|y_i)P(y_i)} = \frac{P(x_1,x_2,... \ ,x_n|y)P(y)}{\sum_{i=1}^{v}P(X|y_i)P(y_i)} = \frac{\prod_{j=1}^{n}P(x_j|y)P(y)}{\sum_{i=1}^{v}P(X|y_i)P(y_i)}\tag{4} P(y∣X)=∑i=1vP(X∣yi)P(yi)P(X∣y)P(y)=∑i=1vP(X∣yi)P(yi)P(x1,x2,... ,xn∣y)P(y)=∑i=1vP(X∣yi)P(yi)∏j=1nP(xj∣y)P(y)(4)
上式将每个样本的属性集合 X X X中的每一个属性看做是相互独立的,所以可以将 P ( x 1 , x 2 , . . . , x n ∣ y ) P(x_1,x_2,... \ ,x_n|y) P(x1,x2,... ,xn∣y)拆分成 ∏ j = 1 n P ( x j ∣ y ) P ( y ) \prod_{j=1}^{n}P(x_j|y)P(y) ∏j=1nP(xj∣y)P(y),在该假设下,就基本解决了样本集中属性组合不能覆盖所有可能性的问题。
根据公式(4),我们就可以求得在已知的属性下,该样本属于各个类别的概率值,那判断的结果为:
(5)
h
(
X
)
=
arg
min
y
∈
Y
∏
j
=
1
n
P
(
x
j
∣
y
)
P
(
y
)
h(X) = \mathop{\arg\min}_{y\in Y} \prod_{j=1}^{n}P(x_j|y)P(y)\tag{5}
h(X)=argminy∈Yj=1∏nP(xj∣y)P(y)(5)
离散属性与连续属性的处理
在估计条件概率的时候,若
x
i
x_i
xi为离散属性,那么我们计算每个属性占该类样本的比例记好了:
(6)
P
(
x
i
∣
y
)
=
∣
D
y
,
x
i
∣
∣
D
y
∣
P(x_i|y) = \frac{|D_{y,x_i}|}{|D_y|}\tag{6}
P(xi∣y)=∣Dy∣∣Dy,xi∣(6)
如果
x
i
x_i
xi是连续值,就需要用概率密度函数来计算其概率,即假定对于某一类别中样本的属性
x
i
x_i
xi满足如下正态分布:
p
(
x
i
∣
y
)
∼
N
(
μ
y
,
i
,
σ
y
,
i
2
)
p(x_i|y) \sim N(\mu_{y,i},\sigma_{y,i}^2)
p(xi∣y)∼N(μy,i,σy,i2),其中
μ
y
,
i
,
σ
y
,
i
2
\mu_{y,i},\sigma_{y,i}^2
μy,i,σy,i2分别表示第
y
y
y类样本在第
i
i
i个属性上的均值和方差。则:
(7)
P
(
x
i
∣
y
)
=
1
2
π
σ
y
,
i
e
x
p
(
−
(
x
i
−
μ
y
,
i
)
2
2
σ
y
,
i
2
)
P(x_i|y) = \frac{1}{\sqrt{2\pi}\sigma_{y,i}}exp(-\frac{(x_i-\mu_{y,i})^2}{2\sigma_{y,i}^2})\tag{7}
P(xi∣y)=2πσy,i1exp(−2σy,i2(xi−μy,i)2)(7)
拉普拉斯修正(Laplacian correction)
朴素贝叶斯分类器在实际使用中还需要注意的一个问题是:若某个离散类型的属性值在训练集中没有与某个类同时出现过,那么当我们使用 P ( x i ∣ y ) = ∣ D y , x i ∣ ∣ D y ∣ P(x_i|y) = \frac{|D_{y,x_i}|}{|D_y|} P(xi∣y)=∣Dy∣∣Dy,xi∣对齐进行估计是, P ( x i ∣ y ) P(x_i|y) P(xi∣y)会等于0。但如果这时有个测试集样本,在该属性 x i x_i xi的取值正好是训练集中所没有出现的,但其他的属性都非常符合该类的特征,但是由于计算公式是各个条件概率相乘计算得到,则不管其他属性取值如何,计算得到该测试集样本属于该类的概率 P ( x i ∣ y ) P(x_i|y) P(xi∣y)始终为0,这显然是不合常理的。
这一问题本质上是我们的训练集不够完整,没有足够的样本。为了避免该问题,我们通常在估计概率值时,对其进行“平滑”(smoothing)操作,通常使用“拉普拉斯修正”(Laplacian correction)。
具体的方法为:
(8)
P
^
(
y
)
=
∣
D
y
∣
+
1
∣
D
∣
+
v
\hat{P}(y) = \frac{|D_y| + 1}{|D|+v}\tag{8}
P^(y)=∣D∣+v∣Dy∣+1(8)
其中,
v
v
v表示可能的类别数。
(9)
P
^
(
x
i
∣
y
)
=
∣
D
y
,
x
i
∣
+
1
∣
D
∣
+
w
i
\hat{P}(x_i|y) = \frac{|D_{y,x_i}| + 1}{|D|+w_i}\tag{9}
P^(xi∣y)=∣D∣+wi∣Dy,xi∣+1(9)
其中,
w
i
w_i
wi表示第
i
i
i个属性的可能取值数(针对离散值来说, 连续值由于使用服从正态分布的概率密度函数来计算条件概率,因此不会出现概率为零的情况)
通过公式(8)和(9),在分子中加1,就避免了计算针对每个属性时的条件概率为零的情况出现。
4. 极大似然估计
通过上面的朴素贝叶斯算法我们能够看到,很多情况下都需要我们对类别或特征进行估计得到其概率密度函数。
简单来说,极大似然估计就是在已知样本的情况下,假定该样本服从某项分布,但是该分布的参数未知。目标就是当参数取什么值时使得出现数据集中样本的概率最大,这时我们就估计假定样本服从的分布的参数为使得概率最大的参数。
5. 最小二乘法
最小二乘法是为了拟合样本的实际值与模型的输出值。当假设极大似然估计中似然概率函数为正态分布时,最小二乘法和极大似然估计得到统一。
梯度下降(不做赘述)
代数求解
J ( θ ) = 1 2 ∑ i = 1 n ( y i − h ( x i ) ) 2 = 1 2 ∑ i = 1 n ( y i − θ 1 x i − θ 0 ) 2 J(\theta) = \frac{1}{2}\sum_{i=1}^{n}(y_i-h(x_i))^2 = \frac{1}{2}\sum_{i=1}^{n}(y_i-\theta_1x_i-\theta_0)^2 J(θ)=21i=1∑n(yi−h(xi))2=21i=1∑n(yi−θ1xi−θ0)2
分别求关于参数
θ
1
\theta_1
θ1
θ
0
\theta_0
θ0的偏导:
∂
J
(
θ
)
∂
θ
1
=
∑
i
=
1
n
(
y
i
−
θ
1
x
i
−
θ
0
)
⋅
−
x
i
=
−
∑
i
=
1
n
x
i
y
i
+
θ
1
∑
i
=
1
n
x
i
2
+
θ
0
∑
i
=
1
n
x
i
\frac{\partial J(\theta)}{\partial \theta_1} = \sum_{i=1}^n(y_i-\theta_1x_i-\theta_0)\cdot-x_i=-\sum_{i=1}^nx_iy_i +\theta_1\sum_{i=1}^nx_i^2+\theta_0\sum_{i=1}^nx_i
∂θ1∂J(θ)=i=1∑n(yi−θ1xi−θ0)⋅−xi=−i=1∑nxiyi+θ1i=1∑nxi2+θ0i=1∑nxi
∂ J ( θ ) ∂ θ 0 = ∑ i = 1 n ( y i − θ 1 x i − θ 0 ) ⋅ − 1 = − ∑ i = 1 n y i + θ 1 ∑ i = 1 n x i + θ 0 ⋅ n \frac{\partial J(\theta)}{\partial \theta_0} = \sum_{i=1}^n(y_i-\theta_1x_i-\theta_0)\cdot-1=-\sum_{i=1}^ny_i +\theta_1\sum_{i=1}^nx_i+\theta_0\cdot n ∂θ0∂J(θ)=i=1∑n(yi−θ1xi−θ0)⋅−1=−i=1∑nyi+θ1i=1∑nxi+θ0⋅n
根据上述的两个多项式在等于0的时候, J ( θ ) J(\theta) J(θ)取得最小值,可以分别求解 θ 1 \theta_1 θ1, θ 0 \theta_0 θ0。
假设
A
=
∑
i
=
1
n
x
i
y
i
A=\sum_{i=1}^nx_iy_i
A=∑i=1nxiyi,
B
=
∑
i
=
1
n
x
i
2
B=\sum_{i=1}^nx_i^2
B=∑i=1nxi2,
C
=
∑
i
=
1
n
x
i
C=\sum_{i=1}^nx_i
C=∑i=1nxi,
D
=
∑
i
=
1
n
y
i
D=\sum_{i=1}^ny_i
D=∑i=1nyi
则上述两个偏导方程可以表示为
−
A
+
θ
1
⋅
B
+
θ
0
⋅
C
=
0
-A+\theta_1 \cdot B + \theta_0 \cdot C = 0
−A+θ1⋅B+θ0⋅C=0
−
D
+
θ
1
⋅
C
+
θ
0
⋅
n
=
0
-D + \theta_1 \cdot C + \theta_0 \cdot n = 0
−D+θ1⋅C+θ0⋅n=0
求解得到:
θ
1
=
A
n
−
C
D
B
−
C
2
=
n
⋅
∑
i
=
1
n
x
i
y
i
−
∑
i
=
1
n
x
i
∑
i
=
1
n
y
i
∑
i
=
1
n
x
i
2
−
(
∑
i
=
1
n
x
i
)
2
\theta_1 = \frac{An-CD}{B-C^2}= \frac{n \cdot \sum_{i=1}^nx_iy_i - \sum_{i=1}^nx_i\sum_{i=1}^ny_i}{\sum_{i=1}^nx_i^2 - (\sum_{i=1}^nx_i)^2}
θ1=B−C2An−CD=∑i=1nxi2−(∑i=1nxi)2n⋅∑i=1nxiyi−∑i=1nxi∑i=1nyi
θ 0 = A C − B D C 2 − n B = ∑ i = 1 n x i y i ∑ i = 1 n x i − ∑ i = 1 n x i 2 ∑ i = 1 n y i ( ∑ i = 1 n x i ) 2 − n ⋅ ∑ i = 1 n x i 2 \theta_0 = \frac{AC-BD}{C^2-nB}=\frac{\sum_{i=1}^nx_iy_i\sum_{i=1}^nx_i-\sum_{i=1}^nx_i^2\sum_{i=1}^ny_i}{(\sum_{i=1}^nx_i)^2-n \cdot \sum_{i=1}^nx_i^2} θ0=C2−nBAC−BD=(∑i=1nxi)2−n⋅∑i=1nxi2∑i=1nxiyi∑i=1nxi−∑i=1nxi2∑i=1nyi
对于多元(n元)线性回归,我们可以得到n+1个方程的方程组,求解该方程组就可以得到使得 J ( θ ) J(\theta) J(θ)最小的 θ \theta θ了。
多元线性回归 最小二乘法 矩阵求解及推导
补充:
(
X
−
Y
)
T
=
X
T
−
Y
T
(X-Y)^T=X^T-Y^T
(X−Y)T=XT−YT
(
X
Y
)
T
=
Y
T
X
T
(XY)^T=Y^TX^T
(XY)T=YTXT
∂
t
r
(
θ
T
X
T
X
θ
)
∂
θ
=
X
T
X
θ
+
X
T
X
θ
\frac{\partial tr(\theta^TX^TX\theta)}{\partial \theta} = X^TX\theta + X^TX\theta
∂θ∂tr(θTXTXθ)=XTXθ+XTXθ
朴素贝叶斯分类器(Naive Bayesian Classifier)
最大似然估计和最小二乘估计的区别与联系
矩阵求导解最小二乘法的推演过程介绍