逻辑回归(Logistic Regression, LR)简介
逻辑回归(Logistic Regression, LR)简介
标签(空格分隔): 机器学习
机器学习最通俗的解释就是让机器学会决策。对于我们人来说,比如去菜市场里挑选芒果,从一堆芒果中拿出一个,根据果皮颜色、大小、软硬等属性或叫做特征,我们就会知道它甜还是不甜。类似的,机器学习就是把这些属性信息量化后输入计算机模型,从而让机器自动判断一个芒果是甜是酸,这实际上就是一个分类问题。
分类和回归是机器学习可以解决两大主要问题,从预测值的类型上看,连续变量预测的定量输出称为回归;离散变量预测的定性输出称为分类。例如:预测明天多少度,是一个回归任务;预测明天阴、晴、雨,就是一个分类任务。
线性回归(Linear Regression)
预测函数
在一维特征空间,线性回归是通过学习一条直线,使得这条直线尽可能拟合所有已有的看到的点(观测数据),并希望未看到的数据(测试数据)也尽可能落在这条线上(泛化性能),是预测值,是实际值。
在多维空间,线性回归表示为,简化形式为,我们的目的,是要找到一个参数令对数据拟合得最好。
损失函数
那么怎样评价它对于观测到的数据点拟合得好坏呢?所以需要对我们做出的假设进行评估,一般这个函数成为损失函数(loss function)
很直观的想法是希望预测值与实际值尽可能接近,即看预测值与实际值之间的均方误差是否最小,定义线性回归损失函数为
所以现在变成了一个优化问题,即找到要找到令损失函数最小的。定义均方误差有着非常好的几何含义,对应常用的欧式距离(Euclidean distance),基于均方误差最小化进行模型求解的方法称为“最小二乘法”(least square method)。
问:均方误差函数作为损失函数的概率学解释?为什么不用点到直线的距离?
答:这主要是与样本噪声所服从的分布有关。由于假定样本的噪声服从的分布是高斯分布且独立同分布,计算联合概率分布,根据最大似然法则,能推导出要令最小,其中表示实际点,表示直线上的理想预测结果,即最小二乘形式,对应实际值到预测值的距离平方。不用点到直线的距离,个人感觉主要还是为了方便计算,因为点到直线距离公式时参数会出现在分母上,不利于求解。
推导细节可参考:在进行线性回归时,为什么最小二乘法是最优方法?
最小二乘法
最小二乘法是一种完全数学描述的方法,用矩阵表示,展开并对其求偏导,令偏导即可得到所求的
然而现实任务中当特征数量大于样本数时,不满秩,此时有多个解;而且当数据量大时,求矩阵的逆非常耗时;对于不可逆矩阵(特征之间不相互独立),这种正规方程方法是不能用的。所以,还可以采用梯度下降法,利用迭代的方式求解。
梯度下降法
梯度下降法是按下面的流程进行的:
1)首先对赋值,这个值可以是随机的,也可以让是一个全零的向量。
2)改变的值,使得按梯度下降的方向进行减少。
对于只有两维属性的样本,即的等高线图
利用梯度下降法,逐步最小化损失函数,找准梯度下降方向,即偏导数的反方向,每次前进一小步,直到收敛
迭代更新的方式有多种
- 批量梯度下降(batch gradient descent),也就是是梯度下降法最原始的形式,对全部的训练数据求得误差后再对进行更新,优点是每步都趋向全局最优解;缺点是对于大量数据,由于每步要计算整体数据,训练过程慢;
- 随机梯度下降(stochastic gradient descent),每一步随机选择一个样本对进行更新,优点是训练速度快;缺点是每次的前进方向不好确定,容易陷入局部最优;
- 微型批量梯度下降(mini-batch gradient descent),每步选择一小批数据进行批量梯度下降更新,属于批量梯度下降和随机梯度下降的一种折中,非常适合并行处理。
逻辑回归(Logistic Regression)
逻辑回归由于存在易于实现、解释性好以及容易扩展等优点,被广泛应用于点击率预估(CTR)、计算广告(CA)以及推荐系统(RS)等任务中。逻辑回归虽然名字叫做回归,但实际上却是一种分类学习方法。
线性回归完成的是回归拟合任务,而对于分类任务,我们同样需要一条线,但不是去拟合每个数据点,而是把不同类别的样本区分开来。
预测函数
对于二分类问题,,1表示正例,0表示负例。逻辑回归是在线性函数输出预测实际值的基础上,寻找一个假设函数函数,将实际值映射到到0,1之间,如果,则预测,及属于正例;如果,则预测,即属于负例。
逻辑回归中选择对数几率函数(logistic function)作为**函数,对数几率函数是Sigmoid函数(形状为S的函数)的重要代表
则逻辑回归输出的预测函数数学表达式为
其中是参数向量。对于的直观解释是:对于给定的输入,表示其对应类标即属于正例的概率。
问:为什么逻辑回归又叫对数几率回归?
答:上式可以变化为
是属于正例的概率,是属于反例的概率,两者比值叫做几率(odds),表示了作为正例的相对可能性。取对数就叫做对数几率(log odds,或logit)。
如果说线性回归是对于特征的线性组合来拟合真实标记的话(),那么逻辑回归是对于特征的线性组合来拟合真实标记为正例的概率的对数几率()
对于输入分类结果为类别1和类别0的概率分别为:
例如,如果对于给定的,通过已经确定的参数计算得出,则表示有70%的几率为正例,相应的为负例的几率为。
决策面
在逻辑回归中,我们预测:
- 当大于等于0.5时,预测;
- 当小于0.5时,预测。
根据上面绘制出的S形函数图像,我们知道:
- 时,
- 时,
- 时。
又,所以
- 大于等于0时,预测;
- 小于0时,预测。
假设我们有一个模型:并且参数是向量[-3 1 1]。
则当大于等于0,即大于等于3时,模型将预测。
绘制直线,便是我们模型的分界线,将预测为1的区域和预测为0的区域分隔开。
损失函数
如何求分类任务的最优解呢?第一个直接的想法是仍然沿用上述的均方误差来表示真实样本与预测值之间的差距
但这个函数不是凸函数,很难进行优化。
于是我们接着转换思路,既然是分类任务,那么我们可以对于每个类别分别取计算它们各自的损失呀。对于真实标记是1的样本,我们希望预测值越接近于1,损失越小;对于真实标记是0的样本,我们希望预测值越接近于0时损失越小,-log函数正好满足以上情况
Andrew Ng在课程中直接给出了交叉熵损失函数及数据集全部损失函数,但是并没有给出具体的解释,只是说明了这个函数来衡量函数预测的好坏是合理的。
问:为什么定义这样的损失函数?
答:实际上是通过极大似然估计推导得到的
由于只能取0或1,服从二项分布,则后验概率对于个独立同分布的训练样本,其似然函数写作
为了方便操作,取对数,则对数似然函数为
根据“最大似然估计”,求取最大值时的,定义损失函数为
所以最后目标变成取最小值时的为最佳参数。
与线性回归类似,利用梯度下降法更新
虽然得到的梯度下降更新迭代公式看上去与线性回归的梯度下降算法一样,但是这里的与线性回归不同,所以实际上是不一样的。除了梯度下降法,还有其他的一些用来求代价函数最小时参数的方法,如牛顿法、共轭梯度法(Conjugate Gradietn)、局部优化法(BFGS)和有限内存局部优化法(LBFGS)等。
正则化(Regularization)
欠拟合和过拟合
以线性回归预测房价为例
欠拟合(unerfitting),高偏差(bias),没有很好地拟合训练数据,存在较大偏差,不是一个好模型;
过拟合(overfitting),高方差(variance),对训练数据拟合过于好,泛化性能差,上下波动厉害,也不是一个好模型。
上述情况对于LR也存在
过拟合问题通常发生在变量(特征)过多的时候。这种情况下训练出的方程总是能很好的拟合训练数据,也就是说,我们的代价函数可能非常接近于0或者就为0,使其拟合只局限于训练样本中,无法很好预测其他新的样本。
解决过拟合问题的方法主要有两种:
1. 减少特征数量,通过人工或者算法选择哪些特征有用保留,哪些特征没用删除,但会丢失信息。
2. 正则化,保留特征,但减少特征对应参数的大小,让每个特征都对预测产生一点影响。
假设我们在损失函数上加上一些项,对和进行惩罚,变成
这样求出的和就会非常小,接近0,得到一个近似的二次函数。
一般来说,正规化背后的思路就是,如果我们的参数值对应一个较小值的话(参数值比较小),那么往往我们会得到一个形式更简单的假设。
但更一般地说,如果我们像惩罚和这样惩罚其它参数,那么我们往往可以得到一个相对较为简单的假设。
实际上,这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此就不易发生过拟合的问题。
假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化算法来选择这些惩罚的程度。我们需要修改代价函数,在后面添加一个正则项,收缩每个参数。
正则化线性回归
对于正则化线性回归,损失函数变成
注:根据惯例,不对进行惩罚。
其中叫做正则化参数,用于平衡拟合训练数据和保持参数值较小避免过拟合之间的关系。
如果过大,则
用梯度下降法迭代求,由于不对进行惩罚,所以重复下面计算直到收敛:
对上面算法中时的式子进行调整得:
正则化逻辑回归
对于逻辑回归损失函数加入正则项得:
通过求导用梯度下降法更新
看上去形式跟正则化线性回归一样,但其中,所以与正则化线性回归不同。
多类分类
LR是一个传统的二分类模型,它也可以用于多分类任务,其基本思想是:将多分类任务拆分成若干个二分类任务,然后对每个二分类任务训练一个模型,最后将多个模型的结果进行集成以获得最终的分类结果。一般来说,可以采取的拆分策略有:
one vs one策略
假设我们有N个类别,该策略基本思想就是不同类别两两之间训练一个分类器,这时我们一共会训练出种不同的分类器。在预测时,我们将样本提交给所有的分类器,一共会获得个结果,最终结果通过投票产生。
one vs all策略
该策略基本思想就是将第种类型的所有样本作为正例,将剩下的所有样本作为负例,进行训练得到一个分类器。这样我们就一共可以得到个分类器。在预测时,我们将样本提交给所有的分类器,一共会获得个结果,我们选择其中概率值最大的那个作为最终分类结果。
LR特点以及适用场景
LR实现简单高效易解释,计算速度快,易并行,在大规模数据情况下非常适用,更适合于应对数值型和标称型数据,主要适合解决线性可分的问题,但容易欠拟合,大多数情况下需要手动进行特征工程,构建组合特征,分类精度不高。
- LR直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题
- LR能以概率的形式输出,而非知识0,1判定,对许多利用概率辅助决策的任务很有用
- 对率函数任意阶可导,具有很好的数学性质,许多现有的数值优化算法都可以用来求最优解,训练速度快
适用情景:LR是很多分类算法的基础组件,它的好处是输出值自然地落在0到1之间,并且有概率意义。因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况。虽然效果一般,却胜在模型清晰,背后的概率学经得住推敲。它拟合出来的参数就代表了每一个特征(feature)对结果的影响。也是一个理解数据的好工具。
应用上:
- CTR预估,推荐系统的learning to rank,各种分类场景
- 某搜索引擎厂的广告CTR预估基线版是LR
- 某电商搜索排序基线版是LR
- 某新闻app排序基线版是LR
大规模工业实时数据,需要可解释性的金融数据,需要快速部署低耗时数据
LR就是简单,可解释,速度快,消耗资源少,分布式性能好
ADMM-LR:用ADMM求解LogisticRegression的优化方法称作ADMM_LR。ADMM算法是一种求解约束问题的最优化方法,它适用广泛。相比于SGD,ADMM在精度要求不高的情况下,在少数迭代轮数时就达到一个合理的精度,但是收敛到很精确的解则需要很多次迭代。