2016年5月5日星期四

用初等数学解读逻辑回归

为了降低理解难度,本文试图用最基础的初等数学来解读逻辑回归,少用公式,多用图形来直观解释推导公式的现实意义,希望使读者能够对逻辑回归有更直观的理解。

逻辑回归问题的通俗几何描述

逻辑回归处理的是分类问题。我们可以用通俗的几何语言重新表述它:
空间中有两群点,一群是圆点“〇”,一群是叉点“X”。我们希望从空间中选出一个分离边界,将这两群点分开。

注:分离边界的维数与空间的维数相关。如果是二维平面,分离边界就是一条线(一维)。如果是三维空间,分离边界就是一个空间中的面(二维)。如果是一维直线,分离边界就是直线上的某一点。不同维数的空间的理解下文将有专门的论述。

为了简化处理和方便表述,我们做以下4个约定:
我们先考虑在二维平面下的情况。
而且,我们假设这两类是线性可分的:即可以找到一条最佳的直线,将两类点分开。
用离散变量y表示点的类别,y只有两个可能的取值。y=1表示是叉点“X”,y=0表示是是圆点“〇”。
点的横纵坐标用x(X1, X2)表示。

于是,现在的问题就变成了:怎么依靠现有这些点的坐标x(X1, X2)和标签(y),找出分界线的方程。

如何用解析几何的知识找到逻辑回归问题的分界线?

我们用逆推法的思路:
假设我们已经找到了这一条线,再寻找这条线的性质是什么。根据这些性质,再来反推这条线的方程。

这条线有什么性质呢?
首先,它能把两类点分开来。——好吧,这是废话。( ̄▽ ̄)”
然后,两类点在这条线的法向量p上的投影的值的正负号不一样,一类点的投影全是正数,另一类点的投影值全是负数!

首先,这个性质是非常好,可以用来区分点的不同的类别。

而且,我们对法向量进行规范:只考虑延长线通过原点的那个法向量p。这样的话,只要求出法向量p,就可以唯一确认这条分界线,这个分类问题就解决了。

还有什么方法能将法向量p的性质处理地更好呢?
因为计算各个点到法向量p投影,需要先知道p的起点的位置,而起点的位置确定起来很麻烦,我们就干脆将法向量平移使其起点落在坐标系的原点,成为新向量p’。因此,所有点到p’的投影也就变化了一个常量。
假设这个常量为θ0,p’向量的横纵坐标为(θ12)。空间中任何一个点x(X1, X2)到p’的投影就是θ1X12X2,再加上前面的常量值就是θ01X12X2

看到上面的式子有没有感到很熟悉?这不就是逻辑回归函数hθ(x)=g(θ01X12X2)中括号里面的部分吗?

令z=θ01X12X2就可以根据z的正负号来判断点x的类别了。

从概率角度理解z的含义。

由以上步骤,我们由点x的坐标得到了一个新的特征z,那么:

z的现实意义是什么呢?
首先,我们知道,z可正可负可为零。而且,z的变化范围可以一直到正负无穷大。

z如果大于0,则点x属于y=1的类别。而且z的值越大,说明它距离分界线的距离越大,更可能属于y=1类。

那可否把z理解成点x属于y=1类的概率P(y=1|x) (下文简写成P)呢?显然不够理想,因为概率的范围是0到1的。

但是我们可以将概率P稍稍改造一下:令Q=P/(1-P),期望用Q作为z的现实意义。我们发现,当P的在区间[0,1]变化时,Q在[0,+∞)区间单调递增。函数图像如下(以下图像可以直接在度娘中搜“x/(1-x)”,超快):

但是Q的变化率在[0,+∞)还不够,我们是希望能在(-∞,+∞)区间变化的。而且在P=1/2的时候刚好是0。这样才有足够的解释力。

注:因为P=1/2说明该点属于两个类别的可能性相当,也就是说这个点恰好在分界面上,那它在法向量的投影自然就是0了。

而在P=1/2时,Q=1,距离Q=0还有一段距离。那怎么通过一个函数变换然它等于0呢?有一个天然的函数log,刚好满足这个要求。
于是我们做变换R=log(Q)=log(P/(1-P)),期望用R作为z的现实意义。画出它的函数图像如图:

这个函数在区间[0,1]中可正可负可为零,单调地在(-∞,+∞)变化,而且1/2刚好就是唯一的0值!基本完美满足我们的要求。
回到我们本章最初的问题,

“我们由点x的坐标得到了一个新的特征z,那么z的具体意义是什么呢?”

由此,我们就可以将z理解成x属于y=1类的概率P经过某种变换后对应的值。也就是说,z= log(P/(1-P))。反过来就是P=g(z)=1/(1+e^-z)。图像如下:
这两个函数log(P/(1-P)) 、1/(1+e^-z)看起来熟不熟悉?

这就是传说中的logit函数和sigmoid函数!

小小补充一下:

在概率理论中,Q=P/(1-P)的意义叫做赔率(odds)。世界杯赌过球的同学都懂哈。赔率也叫发生比,是事件发生和不发生的概率比。

而z= log(P/(1-P))的意义就是对数赔率或者对数发生比(log-odds)。

于是,我们不光得到了z的现实意义,还得到了z映射到概率P的拟合方程:
P=hθ(x)=g(θ01X12X2)=g(z)=1/(1+e^-z)

有了概率P,我们顺便就可以拿拟合方程P=g(z)=1/(1+e^-z)来判断点x所属的分类:

当P>=1/2的时候,就判断点x属于y=1的类别;当P<1/2,就判断点x属于y=0的类别。

构造代价函数求出参数的值

到目前为止我们就有两个判断某点所属分类的办法,一个是判断z是否大于0,一个是判断g(z)是否大于1/2。
然而这并没有什么X用,

以上的分析都是基于“假设我们已经找到了这条线”的前提得到的,但是最关键的三个参数(θ012)仍未找到有效的办法求出来。

还有没有其他的性质可供我们利用来求出参数(θ012)的值?

我们漏了一个关键的性质:这些样本点已经被标注了y=0或者y=1的类别!
我们一方面可以基于z是否大于0或者g(z) 是否大于1/2来判断一个点的类别,另一方又可以依据这些点已经被标注的类别与我们预测的类别的插值来评估我们预测的好坏。
这种衡量我们在某组参数下预估的结果和实际结果差距的函数,就是传说中的代价函数Cost Function。
当代价函数最小的时候,相应的参数(θ012)就是我们希望的最优解。

由此可见,设计一个好的代价函数,将是我们处理好分类问题的关键。而且不同的代价函数,可能会有不同的结果。因此更需要我们将代价函数设计得解释性强,有现实针对性。

为了衡量“预估结果和实际结果的差距”,我们首先要确定“预估结果”和“实际结果”是什么。

“实际结果”好确定,就是y=0还是y=1。
“预估结果”有两个备选方案,经过上面的分析,我们可以采用z或者g(z)。但是显然g(z)更好,因为g(z)的意义是概率P,刚好在[0,1]范围之间,与实际结果{0,1}很相近,而z的意思是逻辑发生比,范围是整个实数域(-∞,+∞),不太好与y={0,1}进行比较。

接下来是衡量两个结果的“差距”。

我们首先想到的是y-hθ(x)。 
  • 但这是当y=1的时候比较好。如果y=0,则y- hθ(x)= - hθ(x)是负数,不太好比较,则采用其绝对值hθ(x)即可。综合表示如下:
  • 但这个函数有个问题:求导不太方便,进而用梯度下降法就不太方便。
  • 因为梯度下降法超出的初等数学的范围,这里就暂且略去不解释了。
于是对上面的代价函数进行了简单的处理,使之便于求导。结果如下:

代价函数确定了,接下来的问题就是机械计算的工作了。常见的方法是用梯度下降法。于是,我们的平面线形可分的问题就可以说是解决了。

从几何变换的角度重新梳理我们刚才的推理过程。

回顾我们的推理过程,我们其实是在不断地将点x(X1, X2)进行几何坐标变换的过程。
  • 第一步是将分布在整个二维平面的点x(X1, X2)通过线性投影映射到一维直线中,成为点x(z)
  • 第二步是将分布在整个一维直线的点x(z)通过sigmoid函数映射到一维线段[0,1]中成为点x(g(z))。
  • 第三步是将所有这些点的坐标通过代价函数统一计算成一个值,如果这是最小值,相应的参数就是我们所需要的理想值。

对于简单的非线性可分的问题。

1,由以上分析可知。比较关键的是第一步,我们之所以能够这样映射是因为假设我们点集是线性可分的。但是如果分离边界是一个圆呢?考虑以下情况。

2,我们仍用逆推法的思路:
通过观察可知,分离边界如果是一个圆比较合理。
假设我们已经找到了这个圆,再寻找这个圆的性质是什么。根据这些性质,再来反推这个圆的方程。

3,我们可以依据这个性质:
圆内的点到圆心的距离小于半径,圆外的点到圆心的距离大于半径
假设圆的半径为r,空间中任何一个点x(X1, X2)到原点的距离为X1^2+X2^2。
令z=X1^2+X2^2-r^2,就可以根据z的正负号来判断点x的类别了
然后令P=hθ(x)=g(X1^2+X2^2-r^2)=g(z)=1/(1+e^-z),就可以继续依靠我们之前的逻辑回归的方法来处理和解释问题了。

4,从几何变换的角度重新梳理我们刚才的推理过程。
第一步是将分布在整个二维平面的点x(X1, X2)通过某种方式映射到一维直线中,成为点x(z)
第二步是将分布在整个一维射线的点x(z)通过sigmoid函数映射到一维线段[0,1]中成为点x(g(z))。
第三步是将所有这些点的坐标通过代价函数统一计算成一个值v,如果这是最小值,相应的参数就是我们所需要的理想值。


从特征处理的角度重新梳理我们刚才的分析过程
其实,做数据挖掘的过程,也可以理解成做特征处理的过程。我们典型的数据挖掘算法,也就是将一些成熟的特征处理过程给固定化的结果。

对于逻辑回归所处理的分类问题,我们已有的特征是这些点的坐标x(X1, X2),我们的目标就是判断这些点所属的分类y=0还是y=1。那么最理想的想法就是希望对坐标x(X1, X2)进行某种函数运算,得到一个(或者一些)新的特征z,基于这个特征z是否大于0来判断该样本所属的分类。

对我们上一节非线性可分问题的推理过程进行进一步抽象,我们的思路其实是:
  • 第一步,将点的坐标x(X1, X2)通过某种函数运算,得到一个新的类似逻辑发生比的特征,z=f(X1, X2)=X1^2+X2^2-r^2
  • 第二步是将特征z通过sigmoid函数得到新的特征q=g(z)=1/(1+e^-z)=1/(1+e^(-f(X1, X2)))。
  • 第三步是将所有这些点的特征q通过代价函数v=J(q1,q2,...)统一计算成一个值,如果这是最小值,相应的参数(r)就是我们所需要的理想值。

对于复杂的非线性可分的问题

由以上分析可知。比较关键的是第一步,如何设计转换函数z=f(X1, X2)。我们现在开始考虑分离边界是一个极端不规则的曲线的情况。

我们仍用逆推法的思路:

通过观察等先验的知识(或者完全不观察乱猜),我们可以假设分离边界是某种6次曲线(这个曲线方程可以提前假设得非常复杂,对应着各种不同的情况)。

第一步:将点x(X1, X2)的坐标通过某种函数运算,得到一个新的特征z=f(X1, X2)=θ01X12X23X1^2+θ4X1X25X2^2+...+θ26X1X2^5+θ27X2^6。并假设z是某种程度的逻辑发生比,通过其是否大于0来判断样本所属分类。

第二步:将特征z通过sigmoid函数映射到新的特征q=g(z)=1/(1+e^-z)

第三步:将所有这些样本的特征q通过逻辑回归的代价函数统一计算成一个值v=J(q1,q2,...),如果这是最小值,相应的参数(θ012,...,θ27)就是我们所需要的理想值。相应的,分离边界其实就是方程z=f(X1, X2)=θ01X12X23X1^2+θ4X1X25X2^2+...+θ26X1X2^5+θ27X2^6=0,也就是逻辑发生比为0的情况嘛。



多维逻辑回归的问题


以上考虑的问题都是基于在二维平面内进行分类的情况。其实,对于高维度情况的分类也类似。

高维空间的样本,其区别也只是特征坐标更多,比如四维空间的点x的坐标为x(X1,X2,X3,X4)。但直接运用上文特征处理的视角来分析,不过是对坐标x(X1,X2,X3,X4)进行参数更多的函数运算得到新的特征z=f(X1,X2,X3,X4)。并假设z是某种程度的逻辑发生比,通过其是否大于0来判断样本所属分类。

而且,如果是高维线性可分的情况,则可以有更近直观的理解。

如果是三维空间,分离边界就是一个空间中的一个二维平面。两类点在这个二维平面的法向量p上的投影的值的正负号不一样,一类点的投影全是正数,另一类点的投影值全是负数。

如果是高维空间,分离边界就是这个空间中的一个超平面。两类点在这个超平面的法向量p上的投影的值的正负号不一样,一类点的投影全是正数,另一类点的投影值全是负数。


特殊的,如果是一维直线空间,分离边界就是直线上的某一点p。一类点在点p的正方向上,另一类点在点p的负方向上。这些点在直线上的坐标可以天然理解成类似逻辑发生比的情况。可见一维直线空间的分类问题是其他所有高维空间投影到法向量后的结果,是所有逻辑回归问题的基础。


多分类逻辑回归的问题


以上考虑的问题都是二分类的问题,基本就是做判断题。但是对于多分类的问题,也就是做选择题,怎么用逻辑回归处理呢?


其基本思路也是二分类,做判断题。

比如你要做一个三选一的问题,有ABC三个选项。首先找到A与BUC(”U”是并集符号)的分离边界。然后再找B与AUC的分离边界,C与AUB的分离边界。

这样就能分别得到属于A、B、C三类的概率,综合比较,就能得出概率最大的那一类了。


总结


本文的分析思路——逆推法


画图,观察数据,看出(猜出)规律,假设规律存在,用数学表达该规律,求出相应数学表达式。
该思路比较典型,是数据挖掘过程中的常见思路。


两个视角:几何变换的视角与特征处理的视角。


小结:

几何变换的视角:高维空间映射到一维空间 → 一维空间映射到[0,1]区间 → [0,1]区间映射到具体的值,求最优化解

特征处理的视角:特征运算函数求特征单值z → sigmoid函数求概率 → 代价函数求代价评估值,求最优化解

首先要说明的是,在逻辑回归的问题中,这两个视角是并行的,而不是包含关系。它们是同一个数学过程的两个方面。

比如,我们后来处理复杂的非线性可分问题的时候,看似只用的是特征处理的思路。其实,对于复杂的非线性分离边界,也可以映射到高维空间进行线性可分的处理。在SVM中,有时候某些核函数所做的映射与之非常类似。这将在我们接下来的SVM系列文章中有更加详细的说明。


在具体的分析过程中,运用哪种视角都可以,各有优点。

比如,作者个人比较倾向几何变换的视角来理解,这方便记忆整个逻辑回归的核心过程,画几张图就够了。相应的信息都浓缩在图像里面,异常清晰。

于此同时,特征处理的视角方便你思考你手上掌握的特征是什么,怎么处理这些特征。这其实的数据挖掘的核心视角。因为随着理论知识和工作经验的积累,越到后面越会发现,当我们已经拿到无偏差、倾向性的数据集,并且做过数据清洗之后,特征处理的过程是整个数据挖掘的核心过程:怎么收集这些特征,怎么识别这些特征,挑选哪些特征,舍去哪些特征,如何评估不同的特征……这些过程都是对你算法结果有决定性影响的极其精妙的精妙部分。这是一个庞大的特征工程,里面的内容非常庞大,我们将在后续的系列文章中专门讨论。

总的来说,几何变换视角更加直观具体,特征处理视角更加抽象宏观,在实际分析过程中,掌握着两种视角的内在关系和转换规律,综合分析,将使得你对整个数据挖掘过程有更加丰富和深刻的认识。

为了将这两种视角更集中地加以对比,我们专门制作了下面的图表,方便读者查阅。

原文链接

3 条评论:

  1. 非常的棒!刚在学习machine learning,就读到如此精彩的文章!谢谢作者!接下来能不能对gradient descent也做如此形象的介绍呢?

    回复删除
    回复
    1. machine learning分支庞杂,建议寻找专门的论坛可能会资料更多些,感谢关注!

      删除