生成学习算法(高斯判别和朴素贝叶斯算法的数学原理及其python实现)
本篇介绍另外一种分类算法,这类算法跟之前广义线性模型下的各种分类特例,比如logit分类、softmax分类等,在基本思想有根本的不同,这类算法称为生成学习算法。
本篇将首先介绍生成学习算法的基本思想,以此为基础,介绍在属性值为连续性和离散型下的两类常用的生成学习算法,分别是高斯判别分析(Guass Discrimination Analysis,GDA)和朴素贝叶斯(Bernoulli event model)。它们分别假设属性值的条件分布为多元正态分布和二项分布,它们可以应对大部分情形。最后我们进行适当的拓展,介绍属性值既有连续型又有离散型变量时的处理方法,多项分布下的朴素贝叶斯分类器,以及工程实现时采用的拉普拉斯平滑变换。
生成学习算法的基本思想
在之前的回归分类算法中,我们做的是建立一个直接预测标签值 y y y的模型,即 h θ ( x ) = E ( y ∣ x ) h_\theta(x) = E(y|x) hθ(x)=E(y∣x)。这样的分类算法亦称为判别学习算法(Discrimination Learning Algorithm)。但这里存在一个问题,即是我们用一个统一的模型对不同类别的属性值进行统一的处理,输出y的期望值。
基于问题的背景,判别学习算法的好坏是很难一言蔽之的,但是我们确实可以从另外一个角度来做分类,即我们在各个类别中根据类别的具体情况 y = y i y = y_i y=yi建立属于这个类别的关于属性值 x x x的条件分布 p i ( x ∣ Y ) = p i ( x ∣ Y = y i ) p_i(x|Y) = p_i(x|Y = y_i) pi(x∣Y)=pi(x∣Y=yi)。因此,现在就可以利用贝叶斯后验概率公式来计算
P ( Y = y i ∣ X = x i ) = P ( Y = y i , X = x i ) P ( X = x ) = P ( Y = y i ) P ( X = x i ∣ Y = y i ) p ( X = x ) \begin{aligned} P(Y = y_i|X = x_i) = & \frac{P(Y = y_i,X = x_i)}{P(X = x)} \\ = & \frac{P(Y = y_i)P(X = x_i|Y = y_i)}{p(X = x)} \end{aligned} P(Y=yi∣X=xi)==P(X=x)P(Y=yi,X=xi)p(X=x)P(Y=yi)P(X=xi∣Y=yi)然后,根据似然原理,我们选择概率最大的 y i y_i yi作为预测的类别。
注意,广义来讲,不同的 y i y_i yi对应的分布 p i ( x ∣ y ) p_i(x|y) pi(x∣y)可以是不同形式的,但一般取相同的分布,而且只在一些参数上做区别。
高斯判别分析(Guass Discrimination Analysis)
GDA 的数学原理(为什么是线性判别?)
在属性值为连续型变量的情形下,我们可以假设其条件分布为多元正态分布,即 p ( x ∣ Y = y i ) = 1 2 π ∣ Σ ∣ 1 2 e x p ( ( − 1 2 ) ( x − μ i ) ′ Σ − 1 ( x − μ i ) ) p(x|Y = y_i) = \frac{1}{\sqrt{2\pi}|\Sigma|^{\frac{1}{2}}}exp((-\frac{1}{2})(x-\mu_i)^{'}\Sigma^{-1}(x-\mu_i)) p(x∣Y=yi)=2π∣Σ∣211exp((−21)(x−μi)′Σ−1(x−μi))这里我们假设不同的类别下的条件分布中,协方差矩阵 Σ i = Σ , i ∈ { 0 , 1 , . . . , k − 1 } \Sigma_i = \Sigma,i \in \{0,1,...,k-1\} Σi=Σ,i∈{ 0,1,...,k−1}从直观上讲,这实际上规定了不同类别之间属性值的分布形状是一致的,差别只在于所在中心位置 μ \mu μ的不同,当然这是一个较强的假设,但是它让我们所需要估计的参数大大减少。
现在我们讨论两个类别的多维正态分布的情况。如果我们已经有训练数据获得估计出其中的参数 ϕ y = P ( y = 1 ) , Σ , μ 0 和 μ 1 \phi_y = P(y = 1),\Sigma,\mu_0和\mu_1 ϕy=P(y=1),Σ,μ0和μ1。那么就可以利用似然比 α = p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) = ϕ y p ( x ∣ y = 1 ) ( 1 − ϕ y ) p ( x ∣ y = 0 ) \alpha = \frac{p(y = 1|x)}{p(y = 0|x)} = \frac{\phi_yp(x|y = 1)}{(1-\phi_y)p(x|y = 0)} α=p(y=0∣x)p(y=1∣x)=(1−ϕy)p(x∣y=0)ϕyp(x∣y=1)来分类。即
y = { 1 , α > 1 决 策 边 界 , α = 1 0 , α < 1 y = \left\{ \begin{aligned} \ \ \ \ 1, \ \ \ \ \ \ \ \ \ \ \ \ \ \ \alpha > 1\\ \ \ \ \ 决策边界, \ \ \ \ \ \ \ \ \ \ \ \ \ \ \alpha = 1\\ \ \ \ \ 0 , \ \ \ \ \ \ \ \ \ \ \ \ \ \ \alpha < 1 \end{aligned} \right. y=⎩⎪⎨⎪⎧ 1, α>1 决策边界, α=1 0, α<1对 α \alpha α的形式进行适当的变形,我们记
θ = 2 ( μ 0 − μ 1 ) ′ Σ − 1 \theta = 2(\mu_0 - \mu_1)^{'}\Sigma^{-1} θ=2(μ0−μ1)