对于初次接触Logistic回归以及梯度上升、梯度下降方法的朋友来说,最费解的地方可能就是:为什么经过迭代之后得出的向量就是所求的最佳回归系数?本文将针对Logistic回归和梯度上升,从问题的引入到解决,一步一步谈谈自己的理解,希望能对大家更好的理解Logistic回归有所帮助。
注:1.文中出现的一些数学结论,只提供了简单、便于理解的证明,并非严谨、详细的证明。
2.文中所述仅是个人理解,难免有些错误和不足的地方,还请大家见谅。
一、问题描述
对于二分类问题,我们希望通过某一样例的属性
、
、
...
,来判断
属于A类还是B类,即求一函数
,使得
(
、
、
...
) = A or B。
二、单位阶跃函数及回归系数
对于(
、
、
...
) = A or B ,我们将其转化为更通俗一点的数学描述,最直观的就是“单位阶跃函数”:
这里,若输出为1,则是A类,输出为0,则是B类。 代表f的一个输入,可以把
当作是
、
、
...
的一个线性组合,即
=
=
,为了方便统一,也可以令
,这就是为什么有些书上,在实现Logistic回归时,会增加一列数据,将其全部设置为1的原因。
现在,我们的问题就是从样本中求得适合的向量(回归系数),使得对于属于A类的样例
(
、
、
、
...
)有
=
=
;属于B类的样例,则z<0。然后将求得的
与待预测样本属性
的线性组合代入单位阶跃函数来进行预测。
三、引入Sigmoid函数
对于单位阶跃函数,由于其不连续性,并不能直接用于求解向量,我们可以试着不用单位阶跃函数来将函数的值进行分类。这里可以借鉴朴素贝叶斯的思想:我们不需要像单位阶跃函数一样,得到明确的分类结果(不是1就是0),我们可以只得到其为A类的概率,如果概率大于等于0.5,就为A类,否则为B类。
那么,怎么做呢?我们可以通过某种函数,将输入转化为一个在(0,1)之间的值,用于表示其结果为A类的概率,而Sigmoid函数正好满足我们的需求:
其函数图像为:
可以看出Sigmoid函数的取值范围在(0,1)之间,连续且单调递增,非常适合用于表述某一样本为A类的概率。鉴于样本中的分类一般只表示为1或0,我们依然令1为A类,0为B类,
为输入,做一复合函数
:
我们的问题进一步转化为:从样本中求得适合的向量,使得对于属于A的样例
(
、
、
、
...
)有
= 1,对于B类,有
= 0。然后将求得的
与待预测样本属性
的线性组合代入复合函数
来进行预测。
四、极大似然估计
由上节描述可知,对于样本集合中的任一样例,Sigmoid函数
代表其为A类(即
= 1)的概率,我们记此概率为
(
),则其为B类(即
= 0)的概率为
。
现在,我们要从样本集合中求适合的,那么,如何算是适合的
呢?这里可以运用极大似然估计的思想,即适合的
应当尽量使得每一个样本的分类都正确。
具体来说就是,对于样例,如果它是A类(即样例的实际分类
= 1),则我们希望概率
(
)越大越好,如果它是B类,则我们希望概率
越大越好。为了统一表示,我们将两个概率整合入一个表达式中,方便计算,记为
,将
= 1,
= 0分别代入式子中,即可得到对应的概率。所以现在的问题就是对于样本中任一样例
(
的实际分类
为已知量,不论其为1还是0),我们希望
越大越好。对于整体的样本,则我们希望所有概率的乘积
的值越大越好。
由于每一项的都小于1,累乘之后,可能会得到一个非常小的数(例如100个0.6相乘),导致计算机无法计算。解决方法就是对
取对数,将乘法问题转化为加法问题。
所以,我们现在的目标就是求向量,使得
取得最大值。
五、方向导数、梯度与极值
现在,我们已经将问题转化为一个求极值的问题,自变量为。
为了求极值,我们有必要先介绍一下方向导数和梯度。导数的概念大家应该都不陌生,对于一元函数y=f(x),导数代表在某一点x0,函数值y的增长率。对于二元函数z=f(x,y),由于自变量从一维变化为二维,我们引入方向导数的概念,用来代表在某一点(x0,y0)上,函数值z沿着某一方向上的增长率。设l为从点P0(x0,y0)出发的一条射线,f在P0的某邻域U(P0)内有定义,点P(x,y)为l上的一点,且P在邻域U(P0)内,代表P到P0的距离,若极限
存在,则称此极限为函数f在点P0沿方向l的方向导数,记做
。从定义可以看出,若l的方向为x轴正方向,即y不变,x变化时的方向导数正好为f对x的偏导数,记做
(P0),关于方向导数和偏导数有如下关系:
,其中
、
为方向l的方向余弦,
为f在P0点对x、y的偏导数。其证明也很简单,具体可以百度,这里大概写一下(就不画图了):假设函数f在P0点可微,P为射线l上任一点,则有
,(其中
为
的高阶无穷小量,即
,
为点P到P0的距离,即
,易知
,
),等式两边同时除以
,并取
->0时的极限,就可以得到
。
下面介绍梯度,若函数f(x,y)在点P0(x0,y0)存在对所有自变量的偏导数,则称向量()为函数f在点P0的梯度,记做grad f,根据方向导数和偏导数的关系以及向量乘法法则,l方向上P0点的方向导数
,其中,
为l方向上的单位向量,
为梯度向量与方向l的夹角。因此当
=0时,方向导数
取得最大值,即f在点P0的梯度方向上的增长率最大。对于多元函数,结论不变。
因此,我们要求的最大值,只需要求出其对所有自变量(
)的偏导数,并给定一个初始位置P0
,让其沿着梯度方向移动一定距离
(步长),找到下一个点P1,再沿着P1的梯度方向找到P2,按照这种方法迭代k次,所得到的点Pk,将会非常接近使得
取得最大值的点,此时点Pk对应的坐标向量
,即所求的最佳回归系数。
注:本节所涉及的数学描述,为了简单明了,忽略了一些前置条件,简化了证明,只重视结论。而且对于一般求极值、最值问题,这种迭代法求得的局部极大值,不一定是全局最大值,但是对于Logistic回归,这里的局部极大值,就是全局最大值,因为是关于
的高阶可导连续凸函数。关于本节的一些具体证明,有兴趣可以查看相关专业书籍。
六、问题求解
现在,我们的问题已经很明确了,就是要求解复合函数
对其自变量()的偏导数,然后根据初始向量
以及步长
,不断沿着梯度方向迭代更新k次,最终得到向量
,使得
接近最大值,即此时的分类器对样本的分类正确率最高。
为了方便求解偏导数,我们令,代入
得:
,再将该式代入
,得
,对
求导,可得
。则,
对其第i个自变量
的偏导数为:
此式中,表示m个样本中,第j个样本的真实值,
表示第j个样本的所有属性值(
、
、
、
...
)与此次迭代中
的线性组合
的Sigmoid函数值
,
表示第j个样本的第i个属性值。
通过求解各个自变量的偏导数,得到的梯度,接下来就可以用权值更新公式
,(其中
为步长,代表每次沿着梯度方向移动的距离)以及初始点
来进行迭代求解了。
以上就是Logistic回归的求解过程,希望能对大家理解Logistic回归有所帮助。