机器学习(台湾李宏毅版)学习笔记 Classification AND Logistic Regression
Logistic Regression 与 Linear Regression 最大的区别就是它预测的真实值是离散的,Logistic Regression 是用来进行分类的预测的(将不同的类别标记不同的数字)。Linear Regression 的步骤是:
1、构造模型(如 )
2、使用training data梯度下降(参考 机器学习(台湾李宏毅版)学习笔记 gradient descent)的方法来minimize Loss function()。
3、由2得到模型的参数(向量w和常数b)。
4、使用 test data 来对模型进行准确性的评估。
而Logistic Regression 虽然也是回归方法,但与Linear Regression 有很大的不同,Logistic Regression的步骤是(先讨论两个分类的问题,multi-classification 后文会拓展):
1、对不同的类别进行标记:C1<->1, C2<->0.
2、根据贝叶斯全概公式计算test data 属于哪一类:(X属于第一类的概率)
3、假设第一类和第二类都相互独立,且都服从多元高斯分布:
假设C1 和 C2 都共用同一个 covariance matrix(为了让模型更简单),经过消元后令z为:
由于变量(向量)x前的系数为常数(常数向量),与x无关项为常数,所以有:
令
那么,X属于第一类的概率为,属于第二类的概率为
这样一来,我们就可以构造一个极大似然函数:
不难看出,对于求分布中的参数问题,我们一般用极大似然来解决。即我们通常认为随机获得的训练集是在某个分布中最容易出现的数字,即这些样本在该分布中的概率偏大,所以我们用使L(w,b)最大化来得到分布函数中的参数。
根据前面说过的gradient descent ,通常求最小值比较方便,又L(w,b)的值在(0,1)内,故我们取能够minimize 的w和b作为最终的参数。
即
其中,当x属于第一类时,=1,当x属于第二类时,
=0。
4、得到模型中的参数,使用test data 来对模型进行评估。
上文的模型我们通常称为 discriminative model,也就是说,当我们观察到经过化简后的式子是关于x的一次式,那么就索性不管μ1、μ2和了,而是改用像Linear Regression 一样,估计w和b。那么我们可以分别利用极大似然算出μ1、μ2和
吗?当然可以,这样的模型称为generative model。经验告诉我们,discriminative model 一般准确率要高于 generative model。
接下来我们开始讨论为什么一般来说discriminative model 要优于 generative model 呢?
首先,在generetive model 中,我们对求偏导,得到
与discriminative model 不同的是,变为了
,后者是协方差矩阵的第i 行的行向量与x的所有特征的列向量的乘积。也就是说,对
求的偏导数,与x 的所有特征值都有关系,这样会导致步伐过大或者过小,从而影响gradient descent 的准确性。
或者我们还可以从课程中的例子入手来理解:
如果使用generative model,我们可以得到如下结果:
那么,为什么会产生这样看起来匪夷所思的结论呢?原因是因为generative model认为对于一个样本x1 的 取值 和x2 的取值是相互独立的,而且Class 2 的基数本来就大,所以根据全概公式计算得到x属于Class 2的概率就大;但如果我们使用discriminative model,就要最大化似然函数,在这个过程中,因为是取对数,对和式取最大值,所以每一项的概率都达到了最大。也就是说,在maximize 之后得到的参数w和b,可以将x(x1=1,x2=1)属于 Class 1的概率达到最大。所以,我们在使用discriminative model 来对x(x1=1,x2=1)来预测的话, 其属于Class 1的概率要大于属于Class 2。
是否generative model 就 一定不如discriminative model呢?答案肯定不是这样的,generative model 的优点有:
1、generative model 是假设好分布后,利用 training data 来估计出分布中的参数,最后利用分布对testing data 进行预测。所以一般来说,较discriminative model所需的training data 更少。
2、因为generative model 更“依赖”其假设的分布,对training data 的“依赖”较小,所以抵抗噪声数据的能力更强。而discriminativi model更“依赖”给定的training data,倾向于让training data 出现的概率最大(与Linear Regression 中Loss function 殊途同归,都是尽可能地让得到的模型吻合training data),所以受到的噪声的影响较大。
3、对于一些常见的问题,会有比较准确的分布,使用起来更加方便。
结论:对于training data 较多的情况(正确的数据>>噪声数据),建议使用discriminative model,因为当噪声数据很小时,对模型的影响几乎可以忽略不计。这样得到的模型既可以最大程度地吻合training data ,模型的复杂度又不是很高,不会造成过拟合,所以对实际情况的预测会更加准确。但是在training data 较少的情况(正确的数据并不远大于噪声数据),建议使用generative model。因为如果有现成的分布的话, 可以直接利用,从而最大程度屏蔽噪声数据的影响;若没有,根据training data 得到的模型,受到的噪声数据的影响也会远远小于discriminative model。
---------------------------------------------------------我是分割线--------------------------------------------------------------
上述情况都使用了极大似然来估计参数,那么我们可以直接使用Loss function吗?当然可以,但效果并不是很理想。
Loss function:
对wi求偏导的结果:
那么,当真实情况是1时:
预测值接近真实情况,偏导接近于0;
预测值远离真实情况,偏导接近于0;
当真是情况是0时:
预测值接近真实情况,偏导接近于0;
预测值远离真实情况,偏导接近于0;
在这样的情况下,做gradient descent 的效率是很差的。因为与我们的判断相悖,我们一般认为与真实值差距大的话,需要加快步伐,但是这里偏导却接近于0,会对gradient descent 产生很大的误导。
对于Classification 的问题,我们一般不建议使用Loss function。
------------------------------------------------------------分割线---------------------------------------------------------------
Multi-Classification 接下来讨论多分类的问题:
多个问题分类的模型如下:
关于Softmax的推导过程: