sklearn逻辑回归 极大似然 损失_算法 | 一个硬币与逻辑回归的故事
利用先验知识,寻找经验损失最小的模型。
李航《统计学习方法》
和线性回归一样,逻辑回归也是常用的算法之一,如果熟悉深度学习的话,可以发现,在很多时候,深度学习就是逻辑回归变体与进化。逻辑回归的推导问题,也是面试中最常问的问题之一。本篇文章,就详细介绍逻辑回归的两种重要思路:极大似然估计和梯度下降。
从一个特殊的硬币开始
这是我曾遇到的一个面试题:假设一枚不规则的硬币,要知道它正面的概率是多少,抛了10次,其中6次正面,4次背面,请用极大似然估计计算硬币正面的概率? 想要解决这一问题,首先做一些设定,假设硬币正面概率为p, 硬币是反面时概率为(1-p)。那么如果抛两次硬币分别是一次正面,一次是反面,这一事件发生的概率P,可以表示为: 如果是抛10次,6次正面,4次背面,那么这一事件P发生的概率就可以写成: 极大似然估计,就是要使得事件发生的概率P最大。那么这个问题就可以转换成,当P最大时得到的p,就是要求的硬币正面的概率。如何求最大的P和正面概率p?将最大值问题转换成最小值问题,求P最大值的问题转变成求-P的最小值的问题。(这一步是为了配合梯度下降,可以不做,如果不转换,可以用梯度上升的方法,其他不变。)
将公式两边同时取对数,这也可以叫做对数似然;指数运算复杂度较高,取对数可以将乘法变成加法,其次对数并不会改变原函数的单调性。原公式变为:
对 l 求导数,从上面的图像可以知道,当导数等于0时,获得最小值。
对上面的导数求解,就可以得到极大似然估计求解的硬币正面的概率p=0.6。
这就是极大似然估计硬币正面概率的方法,。那么,将上面的解题步骤进行推广,就可以得到逻辑回归的推导过程。
逻辑回归本质是分类!
逻辑回归,本质上就是把线性回归的方程放到Sigmoid的函数里,公式是: 把这个函数放到坐标系里,它长这样: 所以,逻辑回归的过程,就是将线性回归的结果进行"弯折",使得其结果在0-1,而这个结果,就是样本是正样本y=1时的概率。来个通俗的例子: 成年人的平均体重w是60kg,平均身高h是170cm,未成年的平均体重是40kg,平均身高是140cm(为了计算方便,并不是真实数据,别较真)。假设我们训练的线性回归模型是y=0.005w+0.005h,我们直观的感受就是,成年人的回归结果要在1.15附近,未成年人的回归结果在90附近。但是单纯依靠回归结果,我们没办法对未知样本进行一个类别判定,所以,就需要逻辑回归的"弯折"。 当预测一个新的样本时,w=60, h=160,线性回归的结果是110,经过逻辑回归,Ta是成年人的概率: 即,如果我们假设当概率超过0.5时(这个阈值可以改动),就将样本认定为正样本,那么这个待预测的人就是成年人。 这也就是逻辑回归的过程。如果进一步推广,将一个逻辑回归模型变成多个,形成一层的逻辑回归,然后一层变成多层逻辑回归,这就变成了神经网络,而单个逻辑回归的"弯折"能力通过叠加,也就可以处理一些非线性、不规则的情况。
逻辑回归的梯度下降
逻辑回归的梯度下降和线性回归的梯度下降,在原理上是一样的,一样可以按照NP-hard的思路进行拆解。目标函数:可以将硬币问题进行一般化处理,得到使得经验损失最小,也就是样本所代表的事件,发生的概率最大。
其中,n代表了样本的数量,y_i第i个样本的真实标签(0或1),目标函数的图像可以参考本文第一幅图。
输入序列/值:与线性回归相同,也是w和b的组合。
约束条件:与线性回归相同。
如果对梯度下降不太熟悉,建议看下:算法 | 换个角度理解下:线性回归与梯度下降!
按照极大似然估计求解硬币正面概率的步骤:对目标函数(损失函数)取对偶问题(转换成求最小值),然后取对数;
对目标函数分别求w的偏导数;
非常神奇的是,逻辑回归函数的导数有个特性,h'(x)=h(x)(1-h(x)),那么上面的公式简化下就是:
再次化简!注意上面h(x)(1-h(x))是在求和函数Sum之外的,此时x并没有指定,当与Sum求乘积的时候,h(x)就相当于h(x_i),最后。就可以得到一个非常眼熟的公式:
让偏导数变为0,然后加个学习率,就可以得到w迭代前进的方向;
更新权重w,继续迭代。
突然哲学的广义线性模型
仔细观察损失函数最后对w求偏导数得到的梯度下降公式,与线性回归的梯度下降公式在本质上是完全一样的。数学上为了追求简洁和统一,于是把这些类似的模型统称为:广义线性模型(GML)。这类模型包括:线性回归、多项式回归、逻辑回归、岭回归(Ridge,也是L2正则)、Lasso回归(L1正则)等。想要更详细的了解,建议移步skLearn官网~最后补充一个小总结:线性回归通过最小二乘估计法获取损失函数,逻辑回归是通过极大似然估计法获得损失函数,两者都可以通过梯度下降法寻找最优解(w和b的组合)。求求各位点个关注吧~~~ 相关文章:算法 | 换个角度理解下:线性回归与梯度下降!算法|NP-hard可能没那么难。?面向对象我会了,请问对象哪儿领?其他有趣的故事:入狱小技巧|我们总算做了一件有用的事!缓存|高并发下与数据库的读写一致性ES | 让搜索变得简单高效