逻辑回归(logistic regression)与核逻辑回归(kernel logistic regression)

因为工作的需要,一直用到逻辑回归(logistic regression)。虽然用了很多,但是并没有做总结和梳理,现在就写写自己的心得体会,便于以后查阅,也便于相互交流。


这里也要用到梯度下降算法,所以有关梯度下降的知识,可以参考我的另外一篇博客(只注重对理论的理解,没有相关的数学推导)线性回归与梯度下降(linear regression and gradient descent)


逻辑回归


逻辑回归,重在这个逻辑上。在计算机语言里面,逻辑就只有两个值0和1。


一个例子

逻辑回归可以用找工作的例子来说明。

求职应聘的结果:要(1)与不要(0)

求职录用依据:长得好看、身高、学历、单身与否、是否本地人、工作经验、笔试成绩、面试成绩等

求职录用的结果是根据综合打分来的,至于那个依据的权重大,那个依据的权重小,完全取决于招聘方,比如,有的公司是这样的:

(0.3*长得好看 + 0.05*身高 + 0.1 * 学历 + 0.1 * 单身 + 0.05 * 本地人 + 0.2 * 工作经验 + 0.1 * 笔试成绩 + 0.1 * 面试成绩), 假设结果大于0.8,那么就录取,小于0.8就不录取。(看脸的时代)

虽然,这个例子很不贴切,但是却很直白。假设有很多人来面试,所有人的成绩也是有的,那么就可以看成是一个二分类的问题。逻辑回归也就是想解决既可以回归(求解上面的这些参数)也可以解决二分类问题(录取或者不录取)的问题。

所以,为了区分,就把这个分为两个问题来看:

第一、解决回归问题

这里,我们把“长得好看”定义为变量X1,“身高”定义为变量X2,........,面试成绩定义为变量X8,...Xn,每个变量前面的权重就分别定义为:θ1,θ2,.....,θn。现在假设某个公司按照往年的标准,录取了一批牛逼的人,但是呢,当时录取的时候,并没有给每个指标有权重。现在公司上市了,想正规一点,按流程来。那么如何做呢?首先,把往年所有面试过的人的成绩都调取出来,对应的录取没录取结果也是有的。这样就构成了下面的样本(假设字公司成立以来,一共有m个人来面试,每个人都是按照这几个指标来确定录取与否的,就是不知道权重是多少,所以,就需要把这些数据拿来学习一下,求得权重,便于以后招聘的时候来严格执行。下面的样本中,括号里面的是样本个数,等号后面的0和1是有没有录取。

通过求解上面的这些公式,那么我们就可以得到θ1,θ2,.....,θn的值了。那么求解这些的值的过程,就是解决回归问题,也就是解决逻辑回归问题。

第二、解决分类问题

这个就有意思了,前面我们提到,当解决了回归问题之后,每个指标的权重也就有了。现在公司上市了,就有人想进来分一杯。那么,人力资源部门在面试完成之后呢,就会根据这些权重综合打分。低于某个分,不录取,高于某个分录取。这就成了二分类的问题了。

在逻辑回归里面,采用的是sigmod函数。这个函数只有两个值,越是靠近两边,就只有两个值,越是靠近中间,那么变化就越快。要的就是这种效果。那么问题来了,为什么逻辑回归中要用sigmod函数呢。这里就大致说一下。

(1) 在前面的例子中,我们已经明里暗里的说到了概率。就是说,低于多少时,就是0,高度多少时就是1。慢慢的想想,这是不是跟伯努利分布很像。伯努利分布是这样的:伯努利分布是一种离散分布,有两种可能的结果。1表示成功,出现的概率为p(其中0<p<1)。0表示失败,出现的概率为q=1-p。(也称为0-1分布,也称为二项分布,是不是很神奇,与逻辑回归的逻辑就是一个意思)

(2)伯努利分布是指数族分布,那么其概率模型为:(y对应0和1,后面的参数是概率0到1之间)


而指数族分布的概率函数为:


那么,伯努利分布对应到指数族分布后,有如下的关系:


在(11)中,就是我们想要的y为0或者1时的概率,很明显,这是个sigmod函数。(这个地方写的不好)

下面这一点是比较关键的部分,要不然下面回归求解说不清楚。(直接引用其他地方的说明)


可以从上面的公式(11)可以看到,当>0时,函数值是大于0.5的,当<0时,函数值是小于0.5的。当>>0时,函数值是1,当<<0时,函数值为0,那么这两个函数值就可以作为分类的标签了。所以,逻辑回归的目的就是求得θ1,θ2,.....,θn的值,使得,当类标签是1时,>>0,当类标签是0时,<<0.



问题的解决

这里主要求解的是回归问题,就是求解上面例子中的各个权重,而至于分类问题就很简单了,直接套用sigmod函数来求结果是0还是1就行了。

假设把公司之前面试过的所有人的数据组成一个样本集合,表示为:(y1,y2....ym的取值只有0和1, X1,X2,。。。,Xm是每一个人的应聘每项数据组成的集合)


那么,对于每一个样本的概率满足:


由于每个面试者都是相互独立的样本,那么所有样本出现的概率就可以表示为:

  (12)

前面我们已经说了,Xi是所有应聘项点的线性组合,(所以,逻辑回归也就是线性回归问题)


在公式(12)中,如果所有样本都成立,那么我们希望所有样本出现概率乘积应该最大,(最大似然估计)

(13)

公式(13)中:

(就是要求解这些参数)

最大似然估计,就是求得一组参数,使得公式(13)的值最大。

如何求解呢?

如果直接对公式(13)求导是很麻烦的,如果对(13)两边去对数,再求解,就方便的多:

两边对权重参数求导,再应用梯度上升算法,即可求得参数。(梯度上升就是梯度下降算法的反方向,参考我的另外一篇博客。)


核逻辑回归