svm总算告一段落,真正复习起来,发现还有好多东西没有深入的去推导和学习,学习之路漫漫且修远。
说起逻辑回归(《统计学习方法》上叫它逻辑斯谛回归,西瓜书上叫它对数几率回归),它经常和线性回归、SVM放在一起说,NG老师就是用线性回归引出逻辑回归,又用逻辑回归引出SVM的概念。其实逻辑回归的本质是线性模型(在西瓜书第三章中介绍了三种线性模型:线性回归,对数几率回归,线性判别分析),因此我们先通过线性回归看看线性模型的一些特点

【线性模型】

线性模型一般写作:

f(x)=w1x1+w2x2+...+wdxd+b (xd个特征,用xi表示第i个特征)

向量形式:

f(x)=wTx+b
别看线性模型形式简单,但很多功能强大的非线性模型就是在线性模型基础上通过引入层级结构或高维映射得来的。(让人想起了线性SVM到非线性SVM)

【线性回归】

假设给定数据集D={(x1,y1),(x2,y2),...,(xm,ym)},其中xi=(xi1,xi2,...,xid)yiR
线性回归的模型如下:
f(xi)=wxi+b
我们尽可能的通过改变wb的值来拟合这个模型,使得f(xi)yi(也就是尽可能使预测值渐进等于真实值),那么如何确定wb呢?我们需要一个方法来度量预测值f(x)y的差距。在线性回归中,我们常用均方误差最小化(最小二乘法)来度量,其主要思路就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。公式如下(假设每个样本x只有一个特征):
E(w,b)=min(w,b)i=1m(f(xi)yi)2=min(w,b)i=1m(yiwxib)2
求解上式wb,其实就是很简单的求偏导过程:
E(w,b)w=2(wi=1mxi2i=1m(yib)xi)
E(w,b)b=2(mbi=1m(yiwxi))
【机器学习】逻辑回归
最后得到:
w=i=1myi(xix¯)i=1mxi21m(i=1mxi)2
b=1mi=1m(yiwxi)

以上是考虑样本只有一个特征的情况,为了更加普遍,假设样本有d个特征。则线性回归模型变为:f(xi)=wTxi+b,为了方便讨论,一般都会把权值向量和输入向量加以扩充,仍记作wTxwT=(w1,w2,...,wm,b)xi=(xi1,xi2,...,xid,1)T,也就变为了f(xi)=wTxi=w1xi1+w2xi2+...+wdxid

【逻辑回归】

我们常用线性回归做回归问题,其预测值是一个连续的量。那我们能不能用线性回归模型做分类问题呢?以二分类为例,下图蓝色线是我们训练出的线性模型(训练时并没有右下角的样本点),蓝色线以上的为一类,蓝色线以下的为另一类,咦?貌似可以做分类啊。但当我们多出来一个样本点,且这个样本点离我们这个分类决策线有些远时,根据最小二乘法的原则,我们需要重新学习一条新的线,使得所有样本点到分类决策线的欧氏距离之和最小,我们得到了新的一个线性模型,也就是那条黑线。这时我们可以发现,这个线性模型发生了分类错误,我们无法断言黑线以上的是一类,黑线以下的是另一类。
【机器学习】逻辑回归
还有一个很严重的问题,对于二分类问题而言,它的输出标记y应该只取0或1才是,但是线性回归模型产生的预测值f(x)却是一个实值,超越了0和1的范围,因此我们希望将这个实值转化为范围只有0或1的值。我们需要找到一个单调可微的函数g使得y=g(f(x)),也就是将分类任务的真实标记y与我们的预测值f(x)联系起来。我们很容易想到最理想的函数,就是阶跃函数。如下图:
【机器学习】逻辑回归
不过呢,阶跃函数并不连续,我们想要一个单调可微的图像,因此我们将目光投向了对数几率函数g(z)=11+ez,对数几率函数图像如下:
【机器学习】逻辑回归
对于这种形似S的函数,我们都称它为Sigmoid函数。这种函数也常用于神经网络中做**函数。这种函数曲线,在中心附近增长速度较快,在两端增长速度较慢。
这样我们就通过这样一个Sigmoid函数将真实标记y与预测值f(x)联系起来了,得到这样的函数y=g(f(x))=11+ef(x)
我们将逻辑回归模型由条件概率分布P(Y|X)表示,随机变量X取值为实值,随机变量Y取值为0或1,则得到这样的表示形式(为了方便讨论,我们仍将wTx记作wT=(w1,w2,...,wm,b)xi=(xi1,xi2,...,xid,1)T),f(x)=wTx
P(Y=1|x)=exp(wTx)1+exp(wTx)=ewTx1+ewTx=11+ewTx
P(Y=0|x)=11+exp(wTx)=11+ewTx
我们可以看出P(Y=1|x)+P(Y=0|x)=1P(Y=1|x)表示在x确定的情况下Y=1的概率(同理于P(Y=0|x)),这样的话,对于给定的输入实例x,我们可以求出P(Y=1|x))和P(Y=0|x)),逻辑回归比较二者大小,将实例x分到概率值较大的那一类。
下面我们来看看逻辑回归模型的特点,为什么它是线性模型。前面也提到了,我们又称逻辑回归为对数几率回归,一般我们说事件的几率是指该事件发生的概率与该事件不发生的概率的比值。那么对于逻辑回归而言,它的对数几率就是:
logit(P(Y=1|x))=lnP(Y=1|x)1P(Y=1|x)=ln(ewTx)=wTx
从上式我们可以看出输出Y=1的对数几率是由输入x的线性函数表示的模型,也就是逻辑回归模型。
我们也可以换个角度来看P(Y=1|x)=exp(wTx)1+exp(wTx)=ewTx1+ewTx=11+ewTx,当线性函数wTx接近正无穷,概率就越接近1;当线性函数wTx接近负无穷,概率就越接近0。

【模型参数估计】

每个模型在学习的过程中,都会有自己的策略,对于逻辑回归模型来说,当输入实例x是给定的情况下,我们希望通过改变wT(包括了参数wb)来提高分类概率大小。
比如输入实例x的真实标记y=1,那么我们希望P(Y=1|x)=11+ewTx越大越好。
这样问题就来了,我们如何衡量误差,使得整个训练数据集上的分类概率大小都能达到最好。在线性回归模型中,我们使用12i=1m(f(xi)yi)2来表示损失函数,由于预测函数f(x)是个线性函数,因此,我们可以容易的解出它的最优解。但是在逻辑回归中,我们的预测函数g(f(x))=11+ef(x)=11+ewTx是个非线性的函数,如果我们将其直接带入损失函数,会得到像这样的一个图像,这个图像有多个局部最优。
【机器学习】逻辑回归
为此,我们需要重新设计一个损失函数,使其图像能够变成一个凸函数。我们可以用极大似然估计法来估计模型参数wT
给定训练数据集D={(x1,y1),(x2,y2),...,(xm,ym)},xiRm,yi{0,1}
假设P(Y=1|x)=π(x)P(Y=0|x)=1π(x)(即π(x)=g(f(x))
似然函数为:
   i=1m[π(xi)]yi[1π(xi)]1yi
对数似然函数为:
   L(w)=ln(i=1m[π(xi)]yi[1π(xi)]1yi)
   =i=1m{yiln(π(xi))+(1yi)ln(1π(xi))}
嗯,到这里我们求L(w)的极大值就好了,不过呢,我们还是给它变个形:
L(w)=1mi=1m{yiln(π(xi))+(1yi)ln(1π(xi))}

这样,就变成了求L(w)的极小值了,通常可采用梯度下降法及拟牛顿法。(当然没变形前求极大值可以用梯度上升法啦)
下面给出梯度下降法推导的过程,其实也就是对L(w)w偏导的过程啦。
【机器学习】逻辑回归

逻辑回归复习也就告一段落了,感觉适时地回顾还挺好的

参考文献:《统计学习方法》、《机器学习》

分类:

技术点:

相关文章: