这是阅读周志华教授的《机器学习》中关于Logistic回归部分的笔记(在模识老师的安利下,最终还是买了西瓜书)。
Logistic回归音译为“逻辑回归”实在是太蠢了。
Logistic回归是西瓜书第三章“线性模型”中的内容,首先总结一下在logistic回归之前的知识点。
所谓线性回归就是定义一个线性函数f(x)=wTx+b,经过在一个特定数据集上学习后获得参数w和b的过程。通常需要搭配优化算法使用,例如最小二乘法、梯度下降法、牛顿法、拟牛顿法[1,2]等,我将它们的特点总结如下:
最小二乘法:希望找到一条n维空间上的直线,使得所有数据点到这条线上的欧几里德距离最短(均方差误差最小),因为均方误差损失函数是凸的,所以最小二乘法直接对该损失函数关于w和b进行求导。
梯度下降法:这是一种迭代求解最优的算法,方法就是将参数沿着梯度负方向更新。这种算法经常陷入局部最优,而且速度未必快。有很多延伸的优化,比如随机梯度下降、带惯性的梯度下降等。
牛顿法:对拟合目标函数泰勒展开后求导后迭代,需要计算任意两个变量的二阶偏导的逆(海森矩阵的逆)所以计算复杂度高,但是收敛快。过程一图以蔽之:
拟牛顿法:把海森矩阵用个近似矩阵来代替,为了减少计算的复杂度,同时这个近似矩阵保证是可逆的(感谢HF同学的指正QAQ)。
但是通常的拟合任务并非是线性的,数据可能是符合某种非线性函数的变化(例如指数),因此有了对数线性回归(log-linear regression)。由于自变量的变化还是wTx+b,因此还属于线性回归模型。更一般的形式如下:
g(y)=wTx+b
y=g−1(wTx+b)
此处g(⋅)是一个非线性函数,这个函数需要“连续且充分光滑”。
分类任务和回归任务最大的区别是,分类需要一个hard-label,而回归通常是一个实数值的soft-label(hard-label和soft-label是我自己起的)。想用回归的方法进行分类,则需要有一个soft->hard的映射函数。
可以手动设阈值(阶跃,就是分段函数),但是不满足作为g(⋅)需要的充分条件。于是有人构造了更加光滑的logistic function(对数几率函数):
y=11+e−z
这是一种sigmoid函数:形似S的函数。我们想表示成g(y)=wTx+b的形式,可以推:
y=11+e−z
y+ye−z=1
1−yy=e−z
ln1−yy=−z
lny1−y=z
其中z=wTx+b,y和1−y分别可看作是正反例的可能性(logits),二者的比值取对数称为“对数几率 ”。通常写作:
lnp(y=1|x)p(y=0|x)=z
有:
p(y=1|x)=ez1+ez
由于p(y=0|x)=1−p(y=1|x),则:
p(y=0|x)=11+ez
使用极大似然估计w和b,构造损失函数l(w,b)=∑mi=1lnp(yi|xi;w,b),最大化该函数,整理一下就能得到loss函数的形式,之后就能用上述的最优化算法求它的最优解了。
Reference
[1]. https://www.cnblogs.com/shixiangwan/p/7532830.html
[2]. https://www.cnblogs.com/xiaohuahua108/p/6011105.html
v1.5.2