对于分类任务,线性回归模型就无能为力了,但是我们可以在线性模型的函数进行后再加入一层激活函数,这个函数是非线性的,激活函数的反函数叫做链接函数。我们有两种线性分类的方式:
- 硬分类,我们直接需要输出观测对应的分类。这类模型的代表为:
- 线性判别分析(Fisher 判别)
- 感知机
- 软分类,产生不同类别的概率,这类算法根据概率方法的不同分为两种
- 生成式(根据贝叶斯定理先计算参数后验,再进行推断):高斯判别分析(GDA)和朴素贝叶斯等为代表
- GDA
- Naive Bayes
- 判别式(直接对条件概率进行建模):Logistic 回归
- 生成式(根据贝叶斯定理先计算参数后验,再进行推断):高斯判别分析(GDA)和朴素贝叶斯等为代表
我们选取激活函数为: $$ sign(a)=\left{\begin{matrix}+1,a\ge0\-1,a\lt0\end{matrix}\right. $$ 这样就可以将线性回归的结果映射到两分类的结果上了。
定义损失函数为错误分类的数目,比较直观的方式是使用指示函数,但是指示函数不可导,因此可以定义:
$$
L(w)=\sum\limits_{x_i\in\mathcal{D}{wrong}}-y_iw^Tx_i
$$
其中,$\mathcal{D}{wrong}$是错误分类集合,实际在每一次训练的时候,我们采用梯度下降的算法。损失函数对
在 LDA 中,我们的基本想法是选定一个方向,将试验样本顺着这个方向投影,投影后的数据需要满足两个条件,从而可以更好地分类:
- 相同类内部的试验样本距离接近。
- 不同类别之间的距离较大。
首先是投影,我们假定原来的数据是向量
有时候我们只要得到一个类别的概率,那么我们需要一种能输出
Logistic 回归的模型假设是:
$$
a=w^Tx
$$
于是,通过寻找
对于一次观测,获得分类
那么对于
对这个函数求导数,注意到: $$ p_1'=(\frac{1}{1+\exp(-a)})'=p_1(1-p_1) $$ 则: $$ J'(w)=\sum\limits_{i=1}^Ny_i(1-p_1)x_i-p_1x_i+y_ip_1x_i=\sum\limits_{i=1}^N(y_i-p_1)x_i $$ 由于概率值的非线性,放在求和符号中时,这个式子无法直接求解。于是在实际训练的时候,和感知机类似,也可以使用不同大小的批量随机梯度上升(对于最小化就是梯度下降)来获得这个函数的极大值。
生成模型中,我们对联合概率分布进行建模,然后采用 MAP 来获得参数的最佳值。两分类的情况,我们采用的假设:
$y\sim Bernoulli(\phi)$ $x|y=1\sim\mathcal{N}(\mu_1,\Sigma)$ $x|y=0\sim\mathcal{N}(\mu_0,\Sigma)$
那么独立全同的数据集最大后验概率可以表示为: $$ \begin{align} \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))\nonumber\ =\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)) \end{align} $$
-
首先对
$\phi$ 进行求解,将式子对$\phi$ 求偏导: $$ \begin{align}\sum\limits_{i=1}^N\frac{y_i}{\phi}+\frac{y_i-1}{1-\phi}=0\nonumber\ \Longrightarrow\phi=\frac{\sum\limits_{i=1}^Ny_i}{N}=\frac{N_1}{N} \end{align} $$ -
然后求解
$\mu_1$ : $$ \begin{align}\hat{\mu_1}&=\mathop{argmax}{\mu_1}\sum\limits{i=1}^Ny_i\log\mathcal{N}(\mu_1,\Sigma)\nonumber\ &=\mathop{argmin}{\mu_1}\sum\limits{i=1}^Ny_i(x_i-\mu_1)^T\Sigma^{-1}(x_i-\mu_1) \end{align} $$ 由于: $$ \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 $$求微分左边乘以
$\Sigma$ 可以得到: $$ \begin{align}\sum\limits_{i=1}^N-2y_i\Sigma^{-1}x_i+2y_i\Sigma^{-1}\mu_1=0\nonumber\ \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} \end{align} $$ -
求解
$\mu_0$ ,由于正反例是对称的,所以: $$ \mu_0=\frac{\sum\limits_{i=1}^N(1-y_i)x_i}{N_0} $$ -
最为困难的是求解
$\Sigma$ ,我们的模型假设对正反例采用相同的协方差矩阵,当然从上面的求解中我们可以看到,即使采用不同的矩阵也不会影响之前的三个参数。首先我们有: $$ \begin{align} \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))\nonumber\ &=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}Trace((x_i-\mu)^T\Sigma^{-1}(x_i-\mu))\nonumber\ &=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}Trace((x_i-\mu)(x_i-\mu)^T\Sigma^{-1})\nonumber\ &=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}NTrace(S\Sigma^{-1}) \end{align} $$ 在这个表达式中,我们在标量上加入迹从而可以交换矩阵的顺序,对于包含绝对值和迹的表达式的导数,我们有: $$ \begin{align} \frac{\partial}{\partial A}(|A|)&=|A|A^{-1}\ \frac{\partial}{\partial A}Trace(AB)&=B^T \end{align} $$ 因此: $$ \begin{align}[\sum\limits_{i=1}^N((1-y_i)\log\mathcal{N}(\mu_0,\Sigma)+y_i\log \mathcal{N}(\mu_1,\Sigma)]' \nonumber\=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}) \end{align} $$ 其中,$S_1,S_2$ 分别为两个类数据内部的协方差矩阵,于是: $$ \begin{align}N\Sigma^{-1}-N_1S_1^T\Sigma^{-2}-N_2S_2^T\Sigma^{-2}=0\nonumber \\Longrightarrow\Sigma=\frac{N_1S_1+N_2S_2}{N} \end{align} $$ 这里应用了类协方差矩阵的对称性。
于是我们就利用最大后验的方法求得了我们模型假设里面的所有参数,根据模型,可以得到联合分布,也就可以得到用于推断的条件分布了。
上面的高斯判别分析的是对数据集的分布作出了高斯分布的假设,同时引入伯努利分布作为类先验,从而利用最大后验求得这些假设中的参数。
朴素贝叶斯队数据的属性之间的关系作出了假设,一般地,我们有需要得到
在一般的有向概率图模型中,对各个属性维度之间的条件独立关系作出了不同的假设,其中最为简单的一个假设就是在朴素贝叶斯模型描述中的条件独立性假设。 $$ p(x|y)=\prod\limits_{i=1}^pp(x_i|y) $$ 即: $$ x_i\perp x_j|y,\forall\ i\ne j $$ 于是利用贝叶斯定理,对于单次观测: $$ p(y|x)=\frac{p(x|y)p(y)}{p(x)}=\frac{\prod\limits_{i=1}^pp(x_i|y)p(y)}{p(x)} $$ 对于单个维度的条件概率以及类先验作出进一步的假设:
-
$x_i$ 为连续变量:$p(x_i|y)=\mathcal{N}(\mu_i,\sigma_i^2)$ -
$x_i$ 为离散变量:类别分布(Categorical):$p(x_i=i|y)=\theta_i,\sum\limits_{i=1}^K\theta_i=1$ $p(y)=\phi^y(1-\phi)^{1-y}$
对这些参数的估计,常用 MLE 的方法直接在数据集上估计,由于不需要知道各个维度之间的关系,因此,所需数据量大大减少了。估算完这些参数,再代入贝叶斯定理中得到类别的后验分布。
分类任务分为两类,对于需要直接输出类别的任务,感知机算法中我们在线性模型的基础上加入符号函数作为激活函数,那么就能得到这个类别,但是符号函数不光滑,于是我们采用错误驱动的方式,引入 $\sum\limits_{x_i\in\mathcal{D}{wrong}}-y_iw^Tx_i$ 作为损失函数,然后最小化这个误差,采用批量随机梯度下降的方法来获取最佳的参数值。而在线性判别分析中,我们将线性模型看作是数据点在某一个方向的投影,采用类内小,类间大的思路来定义损失函数,其中类内小定义为两类数据的方差之和,类间大定义为两类数据中心点的间距,对损失函数求导得到参数的方向,这个方向就是 $S_w^{-1}(\overline x{c1}-\overline x_{c2})$,其中
另一种任务是输出分类的概率,对于概率模型,我们有两种方案,第一种是判别模型,也就是直接对类别的条件概率建模,将线性模型套入 Logistic 函数中,我们就得到了 Logistic 回归模型,这里的概率解释是两类的联合概率比值的对数是线性的,我们定义的损失函数是交叉熵(等价于 MLE),对这个函数求导得到