前言
- 前面讲的都是用线性回归模型预判某件事是否会发生,这一节讲回归用于分类。
二分类问题
- 我们以二分类为例子,定义模型输出大于0时,属于class1,小于0时属于class2.此时如果我们依然用
y=b+wx
作为我们的回归方程的话,就会出现如下的问题:
- 当样本如图一所示的时候,程序能够很准确找出两类的边界,但是样本是像图二分布的话,程序找出来的分界线就会像紫色线那样,
>>1
的样本会被当成误差很大的样本点,实际上在分类问题中这类样本并不属于误差点。 - 因此在分类问题中我们需要重新寻找模型函数,使得输入为样本x,F输出为为类别class,这类模型可以用感知器(perceptron)和SVM,但我们今天先讲另外一种模型。
- 损失函数L可以定义为错误分类的次数,即L越小,分类错误数越小。如图:
Gaussain Distribution and Bayes’s theorem
- 我们假设已知的训练样本满足高斯分布(Gaussain Distribution),当然假设样本时其他分布也行,比如二值特征还可以用伯努利分布(Bernoulli Distribution),但是在现实中高斯分布比较常见,我先假设样本满足高斯分布,可以减少工作量。高斯分布函数如下:
- 由高斯函数求出来的是样本的先验概率P(X|C1),根据贝叶斯(Bayes)公式:
- 我们就能求出样本的后验概率P(C1|X),即测试样本的概率。现在我们的问题就转化为根据训练样本求高斯函数的参数,一般我们采用最大似然估计法(Maximum Likelihood)求解这两个参数。有关最大似然估计法(Maximum Likelihood)可以参考我的这篇文章:从最大似然估计|贝叶斯估计|EM算法浅解|线性判别分析。
- 我们整理一下上图的后验概率公式,可以得到一个
sigmoid
函数:
- 把高斯函数代入z中,经过一系列的数学变换,可以把Z整理成
wx+b
的形式。 其中的w与b和前面用最大似然估计求出来的有关。求出来的结果如下:
- 整理成
wx+b
的形式了大家是不是已经很熟悉了,因为我们在前面的线性回归案例中用的回归方程就是这种形式啊,那么是不是我们也可以用Gradient Descent
的方法来求w与b呢,整最大似然法不是舍近求远了吗? - 这两种求w与b的方法分别对应我们题目所说的判别模型(Discriminative model)和生成模型(Generative model),说了这么多,终于提到了和文章标题有关的东西了好难啊!用
Gradient Descent
的是判别模型,用最大似然法求解高斯参数的是生成模型。Logistic Regression
- 上面的回归过程我们大致可以这样描述:某个事物有i个属性组成一个vector:(x1,x2,…,xi),在某个节点处进行
wx+b
操作,得到的结果作为sigmoid函数的输入,函数的输出为即为事物的类别。我们把这整个这一组合的操作定义为函数f(x),过程如图:
- 假设已知w与b,给定一组Training data的特征和标签如下:
- 则上图的序列出现的概率为,如果我们的模型越准确,则这个概率值越大,对其取反就变成模型越准确,值越小,正好满足
loss function
的要求。因此我们对前面的公式取反整理一下就变成:,从下图我们可以看出Logistic Regression
与Linear Regression
的异同:
- 到这一步的时候,问题就来了,为什么我们不能像
Linear Regression
一样用均方根差当作误差呢?我们用均方根差当作误差当作我们的loss function
:
- 这样求偏导的时候,会出现如下情况,当超级接近目标时,梯度方向导数为0,即停止迭代。但是距目标超级远的时候也会出现梯度方向导数为0的情况,这就是我们不想要的结果了。所以在逻辑回归时,不能使用均方根差当作误差。数学推导过程如下:
判别模型(Discriminative model) VS 生成模型(Generative model)
- 我们用相同的Training data,分别用判别模型(Discriminative model) 和 生成模型(Generative model)求出w和b。然后比较他们的perfermance,实验结果为,生成模型模型准确率为:73%,判别模型准确率为79%。
生成模型的优点
- 因为训练前假设了数据分布模型,可以用较少的数据量训练出性能比较好的模型;
- 因为训练前假设了数据分布模型,使其对噪音更加具有鲁棒性;
判别模型的优点
- 通过学习大量的Training data,一般准确率要略高于生成模型。