机器学习——线性分类
线性分类
对于分类任务,线性回归模型就无能为力了,但是我们可以在线性模型的函数进行后再加入一层激活函数,这个函数是非线性的,激活函数的反函数叫做链接函数。我们有两种线性分类的方式:
- 硬分类,我们直接需要输出观测对应的分类。这类模型的代表为:
- 线性判别分析(Fisher判别)
- 感知机
- 软分类,产生不同类别的概率,这类算法根据概率方法的不同分为两种
- 生成式(根据贝叶斯定理先计算参数后验,再进行推断):高斯判别分析(GDA)和朴素贝叶斯等为代表
- 判别式(直接对条件概率进行建模):Logistic回归
二分类-硬分类-感知机算法
我们选取激活函数为:
x
s
i
g
n
(
a
)
=
{
+
1
,
a
≥
0
−
1
,
a
<
0
xsign(a)=\left\{\begin{matrix}+1,a\ge0\\-1,a\lt0\end{matrix}\right.
xsign(a)={+1,a≥0−1,a<0
这样就可以将线性回归的结果映射到两分类的结果上了。
定义损失函数为错误分类的数目,比较直观的方式是使用指示函数,但是指示函数不可导,因此可以定义:
L
(
w
)
=
∑
x
i
∈
D
w
r
o
n
g
−
y
i
w
T
x
i
L(w)=\sum_{x_i\in\mathcal{D}_{wrong}}-y_iw^Tx_i
L(w)=xi∈Dwrong∑−yiwTxi
其中,
D
w
r
o
n
g
\mathcal{D}_{wrong}
Dwrong是错误分类集合,实际在每一次训练的时候,我们采用梯度下降的算法。损失函数对
w
w
w的偏导为:
∂
∂
w
L
(
w
)
=
∑
x
i
∈
D
w
r
o
n
g
−
y
i
x
i
\frac{\partial}{\partial{w}}L(w)=\sum_{x_i\in\mathcal{D}_{wrong}}-y_ix_i
∂w∂L(w)=xi∈Dwrong∑−yixi
但是如果样本非常多的情况下,计算复杂度较高,但是,实际上我们并不需要绝对的损失函数下降的方向,我们只需要损失函数的期望值下降,但是计算期望需要知道真实的概率分布,我们实际只能根据训练数据抽样来估算这个概率分布(经验风险):
E
D
[
E
p
^
[
∇
w
L
(
w
)
]
]
=
E
D
[
1
N
∑
i
=
1
N
∇
w
L
(
w
)
]
\mathbb{E}_{\mathcal D}[\mathbb{E}_{\hat{p}}[\nabla_wL(w)]]=\mathbb{E}_{\mathcal D}[\frac{1}{N}\sum\limits_{i=1}^N\nabla_wL(w)]
ED[Ep^[∇wL(w)]]=ED[N1i=1∑N∇wL(w)]
我们知道,N越大,样本近似真实分布越准确,但是对于一个标准差为
σ
\sigma
σ的数据,可以确定的标准差仅和
N
\sqrt{N}
N成反比,而计算速度却和N成正比。因此可以每次使用较少样本,则在数学期望的意义上损失降低的同时,又可以提高计算速度,如果每次只使用一个错误样本,我们有以下的更新策略:
w
t
+
1
←
w
t
+
λ
y
i
x
i
w^{t+1}\leftarrow{w^{t}+\lambda{y_ix_i}}
wt+1←wt+λyixi
是可以收敛的,同时使用单个观测更新也可以在一定程度上增加不确定度,从而减轻陷入局部最小的可能。
二分类-硬分类-线性判别分析LDA
在LDA中,我们的基本想法是选定一个方向,将试验样本顺着这个方向投影,投影后的数据需要满足两个条件,从而可以更好地分类:
- 相同类内部的试验样本距离接近
- 不同类别之间的距离较大
首先是投影,我们假定原来的数据是向量x,那么顺着w方向的投影就是标量:
z = w T x ( = ∣ w ∣ . ∣ x ∣ c o s θ ) z=w^Tx(=|w|.|x|cos{\theta}) z=wTx(=∣w∣.∣x∣cosθ)
对第一点,相同类内部的样本更为接近,我们假设属于两类的试验样本数量分别是 N 1 N_1 N1和 N 2 N_2 N2,那么我们采用方差矩阵来表征每一个类内的总体分布,这里我们使用了协方差的定义,用S表示原数据的协方差:
C 1 : V a r z [ C 1 ] = 1 N 1 ∑ i = 1 N 1 ( z i − z c 1 ˉ ) ( z i − z c 1 ˉ ) T = 1 N 1 ∑ i = 1 N 1 ( w T x i − 1 N 1 ∑ j = 1 N 1 w T x j ) ( w T x i − 1 N 1 ∑ j = 1 N 1 w T x j ) T = w T 1 N 1 ∑ i = 1 N i ( x i − x c 1 ˉ ) ( x i − x c 1 ˉ ) T w = w T S 1 w C1:Var_z[C_1]=\frac{1}{N_1}\sum_{i=1}^{N_1}(z_i-\bar{z_{c1}})(z_i-\bar{z_{c1}})^T\\ =\frac{1}{N_1}\sum_{i=1}^{N_1}(w^Tx_i-\frac{1}{N_1}\sum_{j=1}^{N_1}w^Tx_j)(w^Tx_i-\frac{1}{N_1}\sum_{j=1}^{N_1}w^Tx_j)^T\\ =w^T\frac{1}{N_1}\sum_{i=1}^{N_i}(x_i-\bar{x_{c1}})(x_i-\bar{x_{c1}})^Tw\\ =w^TS_1w C1:Varz[C1]=N11i=1∑N1(zi−zc1ˉ)(zi−zc1ˉ)T=N11i=1∑N1(wTxi−N11j=1∑N1wTxj)(wTxi−N11j=1∑N1wTxj)T=wTN11i=1∑Ni(xi−xc1ˉ)(xi−xc1ˉ)Tw=wTS1w
C 2 : V a r z [ C 2 ] = 1 N 2 ∑ i = 1 N 2 ( z i − z c 2 ‾ ) ( z i − z c 2 ‾ ) T = w T S 2 w C_2:Var_z[C_2]=\frac{1}{N_2}\sum\limits_{i=1}^{N_2}(z_i-\overline{z_{c2}})(z_i-\overline{z_{c2}})^T\\ =w^TS_2w C2:Varz[C2]=N21i=1∑N2(zi−zc2)(zi−zc2)T=wTS2w
类内距离可以记为
V a r z [ C 1 ] + V a r z [ C 2 ] = w T ( S 1 + S 2 ) w Var_z[C_1]+Var_z[C_2]=w^T(S_1+S_2)w Varz[C1]+Varz[C2]=wT(S1+S2)w
对于类间距离,我们可以用两类的均值表示这个距离:
( z c 1 ˉ − z c 2 ˉ ) 2 = ( 1 N 1 ∑ i = 1 N 1 w T x i − 1 N 2 ∑ i = 1 N 2 w T x i ) 2 = ( w T ( x c 1 ˉ − x c 2 ˉ ) ) 2 = w T ( x c 1 ˉ − x c 2 ˉ ) ( x c 1 − x c 2 ˉ ˉ ) T w (\bar{z_{c1}}-\bar{z_{c2}})^2=(\frac{1}{N_1}\sum_{i=1}^{N_1}w^Tx_i-\frac{1}{N_2}\sum_{i=1}^{N_2}w^Tx_i)^2\\ =(w^T(\bar{x_{c1}}-\bar{x_{c2}}))^2\\ =w^T(\bar{x_{c1}}-\bar{x_{c2}})(\bar{x_{c1}-\bar{x_{c2}}})^Tw (zc1ˉ−zc2ˉ)2=(N11i=1∑N1wTxi−N21i=1∑N2wTxi)2=(wT(xc1ˉ−xc2ˉ))2=wT(xc1ˉ−xc2ˉ)(xc1−xc2ˉˉ)Tw
综合这两点,由于协方差是一个矩阵,于是我们将这两个值相除来得到我们的损失函数,并最大化这个值:
w ^ = a r g m a x w J ( w ) = a r g m a x w ( z c 1 ˉ − z c 2 ˉ ) 2 V a r z [ C 1 ] + V a r z [ C 2 ] = a r g m a x w w T ( x c 1 ˉ − x c 2 ˉ ) ( c 1 ˉ − x c 2 ˉ ) T w w T ( S 1 + S 2 ) w = a r g m a x w w T S b w w T S w w \hat{w}=argmax_wJ(w)=argmax_w{\frac{(\bar{z_{c1}}-\bar{z_{c2}})^2}{Var_z[C_1]+Var_z[C_2]}}\\ =argmax_w{\frac{w^T(\bar{x_{c1}}-\bar{x_{c2}})(\bar{c1}-\bar{x_{c2}})^Tw}{w^T(S_1+S_2)w}}\\ =argmax_w\frac{w^TS_bw}{w^TS_ww} w^=argmaxwJ(w)=argmaxwVarz[C1]+Varz[C2](zc1ˉ−zc2ˉ)2=argmaxwwT(S1+S2)wwT(xc1ˉ−xc2ˉ)(c1ˉ−xc2ˉ)Tw=argmaxwwTSwwwTSbw
这样,我们就把损失函数和原数据集以及参数结合起来了。下面对这个损失函数求偏导,注意我们其实对w的绝对值没有任何要求,只对方向有要求,因此只要一个方程就可以求解了:
∂ ∂ w J ( w ) = 2 S b w ( w T S w w ) − 1 − 2 w T S b w ( w T S w w ) − 2 S w w = 0 ⟹ S b w ( w T S w w ) = ( w T S b w ) S w w ⟹ w ∝ S w − 1 S b w = S w − 1 ( x c 1 ‾ − x c 2 ‾ ) ( x c 1 ‾ − x c 2 ‾ ) T w ∝ S w − 1 ( x c 1 ‾ − x c 2 ‾ ) \frac{\partial}{\partial w}J(w)=2S_bw(w^TS_ww)^{-1}-2w^TS_bw(w^TS_ww)^{-2}S_ww=0\\ \Longrightarrow S_bw(w^TS_ww)=(w^TS_bw)S_ww\\ \Longrightarrow w\propto S_w^{-1}S_bw=S_w^{-1}(\overline{x_{c1}}-\overline{x_{c2}})(\overline{x_{c1}}-\overline{x_{c2}})^Tw\propto S_w^{-1}(\overline{x_{c1}}-\overline{x_{c2}}) ∂w∂J(w)=2Sbw(wTSww)−1−2wTSbw(wTSww)−2Sww=0⟹Sbw(wTSww)=(wTSbw)Sww⟹w∝Sw−1Sbw=Sw−1(xc1−xc2)(xc1−xc2)Tw∝Sw−1(xc1−xc2)
于是 S w − 1 ( x c 1 ˉ − x c 2 ˉ ) S_w^{-1}(\bar{x_{c1}}-\bar{x_{c2}}) Sw−1(xc1ˉ−xc2ˉ)就是我们需要寻找的方向。最后可以归一化求得单位的w值。
二分类-软分类-概率判别模型-Logistic回归
有时候我们只要得到一个类别的概率,那么我们需要一种能输出[0,1]区间的值的函数。考虑两分类模型,我们利用判别模型,希望对
p
(
C
∣
x
)
p(C|x)
p(C∣x)建模,利用贝叶斯定理:
p
(
C
1
∣
x
)
=
p
(
x
∣
C
1
)
p
(
C
1
)
p
(
x
∣
C
1
)
p
(
C
1
)
+
p
(
x
∣
C
2
)
p
(
C
2
)
p(C_1|x)=\frac{p(x|{C_1})p(C_1)}{p(x|C_1)p(C_1)+p(x|C_2)p(C_2)}
p(C1∣x)=p(x∣C1)p(C1)+p(x∣C2)p(C2)p(x∣C1)p(C1)
取
a
=
l
n
(
p
(
x
∣
C
1
)
p
(
C
1
)
p
(
x
∣
C
2
)
p
(
C
2
)
)
a=ln(\frac{p(x|{C_1})p(C_1)}{p(x|C_2)p(C_2)})
a=ln(p(x∣C2)p(C2)p(x∣C1)p(C1)):
p
(
C
1
∣
x
)
=
1
1
+
e
x
p
(
−
a
)
p(C_1|x)=\frac{1}{1+exp(-a)}
p(C1∣x)=1+exp(−a)1
上面的式子叫Logistic Sigmoid函数,其参数表示了两类联合概率比值的对数。在判别式中,不关心这个参数的具体值,模型假设直接对a进行。
Logistic回归的模型假设是:
a
=
w
T
x
a=w^Tx
a=wTx
于是,通过寻找w的最佳值可以得到在这个模型假设下的最佳模型。概率判别模型常用最大似然估计的方式来确定参数。
对于一次观测,获得分类y的概率为(假定
C
1
=
1
,
C
2
=
0
C_1=1,C_2=0
C1=1,C2=0):
p
(
y
∣
x
)
=
p
1
y
p
0
1
−
y
p(y|x)=p_1^yp_0^{1-y}
p(y∣x)=p1yp01−y
那么对于N次独立全同的观测MLE为:
w
^
=
a
r
g
m
a
x
w
J
(
w
)
=
a
r
g
m
a
x
w
∑
i
=
1
N
(
y
i
l
o
g
p
1
+
(
1
−
y
i
)
l
o
g
p
0
)
\hat{w}=argmax_w{J(w)}=argmax_w{\sum_{i=1}^N(y_ilog{p_1}+(1-y_i)log{p_0})}
w^=argmaxwJ(w)=argmaxwi=1∑N(yilogp1+(1−yi)logp0)
注意到,这个表达式是交叉熵表达式的相反数乘N,MLE中的对数也保证了可以和指数函数项匹配,从而在大的区间汇总获取稳定的梯度。
对这个函数求导数,注意到:
p
1
′
=
(
1
1
+
exp
(
−
a
)
)
′
=
p
1
(
1
−
p
1
)
p_1'=(\frac{1}{1+\exp(-a)})'=p_1(1-p_1)
p1′=(1+exp(−a)1)′=p1(1−p1)
二分类-软分类-概率生成模型-高斯判别分析GDA
生成模型中,我们对联合概率分布进行建模,然后采用MAP来获得参数的最佳值。二分类的情况,我们采用的假设:
- y ∼ B e r n o u l l i ( ϕ ) y\sim Bernoulli(\phi) y∼Bernoulli(ϕ)
- x ∣ y = 1 ∼ N ( μ 1 , Σ ) x|y=1\sim\mathcal{N}(\mu_1,\Sigma) x∣y=1∼N(μ1,Σ)
-
x
∣
y
=
0
∼
N
(
μ
0
,
Σ
)
x|y=0\sim\mathcal{N}(\mu_0,\Sigma)
x∣y=0∼N(μ0,Σ)
那么独立全同的数据集最大后验概率可以表示为:
a r g m a x ϕ , μ 0 , μ 1 , Σ log p ( X ∣ Y ) p ( Y ) = a r g m a x ϕ , μ 0 , μ 1 , Σ ∑ i = 1 N ( log p ( x i ∣ y i ) + log p ( y i ) ) = a r g m a x ϕ , μ 0 , μ 1 , Σ ∑ i = 1 N ( ( 1 − y i ) log N ( μ 0 , Σ ) + y i log N ( μ 1 , Σ ) + y i log ϕ + ( 1 − y i ) log ( 1 − ϕ ) ) \mathop{argmax}_{\phi,\mu_0,\mu_1,\Sigma}\log p(X|Y)p(Y)=\mathop{argmax}_{\phi,\mu_0,\mu_1,\Sigma}\sum\limits_{i=1}^N (\log p(x_i|y_i)+\log p(y_i))\\ =\mathop{argmax}_{\phi,\mu_0,\mu_1,\Sigma}\sum\limits_{i=1}^N((1-y_i)\log\mathcal{N}(\mu_0,\Sigma)+y_i\log \mathcal{N}(\mu_1,\Sigma)+y_i\log\phi+(1-y_i)\log(1-\phi)) argmaxϕ,μ0,μ1,Σlogp(X∣Y)p(Y)=argmaxϕ,μ0,μ1,Σi=1∑N(logp(xi∣yi)+logp(yi))=argmaxϕ,μ0,μ1,Σi=1∑N((1−yi)logN(μ0,Σ)+yilogN(μ1,Σ)+yilogϕ+(1−yi)log(1−ϕ))
首先对 ϕ \phi ϕ进行求解,将式子对 ϕ \phi ϕ求偏导:
∑ i = 1 N y i ϕ + y i − 1 1 − ϕ = 0 ⟹ ϕ = ∑ i = 1 N y i N = N 1 N \sum\limits_{i=1}^N\frac{y_i}{\phi}+\frac{y_i-1}{1-\phi}=0\\ \Longrightarrow\phi=\frac{\sum\limits_{i=1}^Ny_i}{N}=\frac{N_1}{N} i=1∑Nϕyi+1−ϕyi−1=0⟹ϕ=Ni=1∑Nyi=NN1
然后求解 μ 1 \mu_1 μ1:
μ 1 ^ = a r g m a x μ 1 ∑ i = 1 N y i log N ( μ 1 , Σ ) = a r g m i n μ 1 ∑ i = 1 N y i ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) \hat{\mu_1}=\mathop{argmax}_{\mu_1}\sum\limits_{i=1}^Ny_i\log\mathcal{N}(\mu_1,\Sigma)\\ =\mathop{argmin}_{\mu_1}\sum\limits_{i=1}^Ny_i(x_i-\mu_1)^T\Sigma^{-1}(x_i-\mu_1) μ1^=argmaxμ1i=1∑NyilogN(μ1,Σ)=argminμ1i=1∑Nyi(xi−μ1)TΣ−1(xi−μ1)
由于:
∑ i = 1 N y i ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) = ∑ i = 1 N y i x i T Σ − 1 x i − 2 y i μ 1 T Σ − 1 x i + y i μ 1 T Σ − 1 μ 1 \sum\limits_{i=1}^Ny_i(x_i-\mu_1)^T\Sigma^{-1}(x_i-\mu_1)=\sum\limits_{i=1}^Ny_ix_i^T\Sigma^{-1}x_i-2y_i\mu_1^T\Sigma^{-1}x_i+y_i\mu_1^T\Sigma^{-1}\mu_1 i=1∑Nyi(xi−μ1)TΣ−1(xi−μ1)=i=1∑NyixiTΣ−1xi−2yiμ1TΣ−1xi+yiμ1TΣ−1μ1
求微分左边乘以 Σ \Sigma Σ可以得到:
∑ i = 1 N − 2 y i Σ − 1 x i + 2 y i Σ − 1 μ 1 = 0 ⟹ μ 1 = ∑ i = 1 N y i x i ∑ i = 1 N y i = ∑ i = 1 N y i x i N 1 \sum\limits_{i=1}^N-2y_i\Sigma^{-1}x_i+2y_i\Sigma^{-1}\mu_1=0\\ \Longrightarrow\mu_1=\frac{\sum\limits_{i=1}^Ny_ix_i}{\sum\limits_{i=1}^Ny_i}=\frac{\sum\limits_{i=1}^Ny_ix_i}{N_1} i=1∑N−2yiΣ−1xi+2yiΣ−1μ1=0⟹μ1=i=1∑Nyii=1∑Nyixi=N1i=1∑Nyixi
求解 μ 0 \mu_0 μ0,由于正反例是对称的,所以:
μ 0 = ∑ i = 1 N ( 1 − y i ) x i N 0 \mu_0=\frac{\sum\limits_{i=1}^N(1-y_i)x_i}{N_0} μ0=N0i=1∑N(1−yi)xi
最为困难的是求解 Σ \Sigma Σ,我们的模型假设对正反例采用相同的协方差矩阵,当然从上面的求解中我们可以看到,即使采用不同的矩阵也不会影响之前的三个参数。首先我们有:
∑ i = 1 N log N ( μ , Σ ) = ∑ i = 1 N log ( 1 ( 2 π ) p / 2 ∣ Σ ∣ 1 / 2 ) + ( − 1 2 ( x i − μ ) T Σ − 1 ( x i − μ ) ) = C o n s t − 1 2 N log ∣ Σ ∣ − 1 2 T r a c e ( ( x i − μ ) T Σ − 1 ( x i − μ ) ) = C o n s t − 1 2 N log ∣ Σ ∣ − 1 2 T r a c e ( ( x i − μ ) ( x i − μ ) T Σ − 1 ) = C o n s t − 1 2 N log ∣ Σ ∣ − 1 2 N T r a c e ( S Σ − 1 ) \sum\limits_{i=1}^N\log\mathcal{N}(\mu,\Sigma)=\sum\limits_{i=1}^N\log(\frac{1}{(2\pi)^{p/2}|\Sigma|^{1/2}})+(-\frac{1}{2}(x_i-\mu)^T\Sigma^{-1}(x_i-\mu))\\ =Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}Trace((x_i-\mu)^T\Sigma^{-1}(x_i-\mu))\\ =Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}Trace((x_i-\mu)(x_i-\mu)^T\Sigma^{-1})\\ =Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}NTrace(S\Sigma^{-1}) i=1∑NlogN(μ,Σ)=i=1∑Nlog((2π)p/2∣Σ∣1/21)+(−21(xi−μ)TΣ−1(xi−μ))=Const−21Nlog∣Σ∣−21Trace((xi−μ)TΣ−1(xi−μ))=Const−21Nlog∣Σ∣−21Trace((xi−μ)(xi−μ)TΣ−1)=Const−21Nlog∣Σ∣−21NTrace(SΣ−1)
在这个表达式中,我们在标量上加入迹从而可以交换矩阵的顺序,对于包含绝对值和迹的表达式的导数,我们有:
∂ ∂ A ( ∣ A ∣ ) = ∣ A ∣ A − 1 ∂ ∂ A T r a c e ( A B ) = B T \frac{\partial}{\partial A}(|A|)=|A|A^{-1}\\ \frac{\partial}{\partial A}Trace(AB)=B^T ∂A∂(∣A∣)=∣A∣A−1∂A∂Trace(AB)=BT
因此:
[ ∑ i = 1 N ( ( 1 − y i ) log N ( μ 0 , Σ ) + y i log N ( μ 1 , Σ ) ] ′ = C o n s t − 1 2 N log ∣ Σ ∣ − 1 2 N 1 T r a c e ( S 1 Σ − 1 ) − 1 2 N 2 T r a c e ( S 2 Σ − 1 ) [\sum\limits_{i=1}^N((1-y_i)\log\mathcal{N}(\mu_0,\Sigma)+y_i\log \mathcal{N}(\mu_1,\Sigma)]' \\=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}N_1Trace(S_1\Sigma^{-1})-\frac{1}{2}N_2Trace(S_2\Sigma^{-1}) [i=1∑N((1−yi)logN(μ0,Σ)+yilogN(μ1,Σ)]′=Const−21Nlog∣Σ∣−21N1Trace(S1Σ−1)−21N2Trace(S2Σ−1)
其中, S 1 S_1 S1, S 2 S_2 S2分别为两个类数据内部的协方差矩阵,于是:
N Σ − 1 − N 1 S 1 T Σ − 2 − N 2 S 2 T Σ − 2 = 0 ⟹ Σ = N 1 S 1 + N 2 S 2 N N\Sigma^{-1}-N_1S_1^T\Sigma^{-2}-N_2S_2^T\Sigma^{-2}=0 \\\Longrightarrow\Sigma=\frac{N_1S_1+N_2S_2}{N} NΣ−1−N1S1TΣ−2−N2S2TΣ−2=0⟹Σ=NN1S1+N2S2
这里应用了类协方差矩阵的对称性。
于是我们就利用了最大后验的方法得到了我们模型假设里面的所有参数,根据模型,可以得到联合分布,也就可以得到用于推断的条件分布了。
二分类-软分类-概率生成模型-朴素贝叶斯
朴素贝叶斯对数据的属性之间的关系作出了假设,一般地,我们有需要得到
p
(
x
∣
y
)
p(x|y)
p(x∣y)这个概率值,由于
x
x
x有
p
p
p个维度,因此需要对这么多的维度的联合概率进行采样,但是我们知道这么高维度的空间中采样需要的样本数量非常大才能获得较为准确的概率近似。
在一般的有向概率图模型中,对各个属性维度之间的条件独立关系作出了不同的假设,其中最为简单的一个假设就是在朴素贝叶斯模型描述中的条件独立性假设。
p
(
x
∣
y
)
=
∏
i
=
1
p
p
(
x
i
∣
y
)
p(x|y)=\prod\limits_{i=1}^pp(x_i|y)
p(x∣y)=i=1∏pp(xi∣y)
即:
x
i
⊥
x
j
∣
y
,
∀
i
≠
j
x_i\perp x_j|y,\forall\ i\ne j
xi⊥xj∣y,∀ i=j
于是利用贝叶斯定理,对于单次观测:
p
(
y
∣
x
)
=
p
(
x
∣
y
)
p
(
y
)
p
(
x
)
=
∏
i
=
1
p
p
(
x
i
∣
y
)
p
(
y
)
p
(
x
)
p(y|x)=\frac{p(x|y)p(y)}{p(x)}=\frac{\prod\limits_{i=1}^pp(x_i|y)p(y)}{p(x)}
p(y∣x)=p(x)p(x∣y)p(y)=p(x)i=1∏pp(xi∣y)p(y)
对于单个维度的条件概率以及类先验做出进一步的假设:
- x i x_i xi为连续变量: p ( x i ∣ y ) = N ( μ i , σ i 2 ) p(x_i|y)=\mathcal{N}(\mu_i,\sigma_i^2) p(xi∣y)=N(μi,σi2)
- x i x_i xi 为离散变量:类别分布(Categorical): p ( x i = i ∣ y ) = θ i , ∑ i = 1 K θ i = 1 p(x_i=i|y)=\theta_i,\sum\limits_{i=1}^K\theta_i=1 p(xi=i∣y)=θi,i=1∑Kθi=1
-
p
(
y
)
=
ϕ
y
(
1
−
ϕ
)
1
−
y
p(y)=\phi^y(1-\phi)^{1-y}
p(y)=ϕy(1−ϕ)1−y
对这些参数的估计,常用 MLE 的方法直接在数据集上估计,由于不需要知道各个维度之间的关系,因此,所需数据量大大减少了。估算完这些参数,再代入贝叶斯定理中得到类别的后验分布。