Logistic regression,逻辑回归,很常见的二分类算法,简单好用,不过这看似简单的算法背后,其实可以引申出很多思考,基本的数学表达式如下:
这个公式描述了当给定x时,如何计算Y=1的概率,为什么偏偏是这样一个公式呢?其实也有一些简单的理由,先讲一个最简单的:不管X怎么变化,上述公式的取值都在0~1之间,而在现实世界中,任何事情发生的概率也都在0~1之间,所以就人为地将二者对标起来,至于能不能严丝合缝地对标起来,我们就不那么较真了,毕竟很多真理都是建立在假设之上的~
稍微深入一点,我们也可以计算Y=0的概率,即
二者的比值呢?
R有什么含义呢?R越大,样本为1的概率越大,R越小,样本为1的概率越小,而且还有个专门的名字,叫『几率』,(偶第一次遇到时感觉有点多余啊,用 P(Y=1|X) 不好吗),不过在数学上还是有点小便利的,对它取个对数就可以发现了:
左边的还有个专门的名字,叫『对数几率』,说白了,就是给几率取了个对数,那么便利在哪儿呢?便利在于概率是有范围的,而对数几率是无范围的,如果我们直接对概率建模,可选的函数有限,而如果对『对数几率』进行建模,可选的函数就多了去了,也就是说,我们的 f(X) 可以随便设计,最终都能有个概率上的解释,起码是几率上的解释。。。
海阔凭鱼跃,天高任鸟飞,既然如此,那我们选个最简单的
f(x)
…,令令令:
f(X) 现在就等价于对数几率了, f(X) 越大,样本标签Y=1的几率越大,上面的表达式是一个线性的表达式,也就是说, f(X) 是随着 Xi 线性变化的,不难发现,每个 Xi 都配了一个权重 wi , wi 越大,意味着这一维特征( Xi )越重要,这也就是为什么很多场景(比如金融反欺诈)比较喜欢逻辑回归了,因为容易解释。
这里又引申出一个问题了,如果真实情况中 f(X) 与 Xi 不是线性关系呢?比如发生贷款违约的概率会随着年龄变化,小于20岁或者大于80岁的有更高的的违约概率,中间的反而小一点,这种情况我们用线性模型建模就显得不恰当了,这也是逻辑回归的一个问题,不过凡事总有解决的办法,其中一种方法就是对特征进行分桶,将一个特征拆成多个特征,比如年龄,原来是一个特征(取值是0~100),现在拆成3个特征:年龄小于20,则三个特征分别是[100], 年龄大等于20小等于80,则三个特征为[010],年龄大于80,则为[001],这样就有三个权重可以调整了,从而引入了一定的非线性。
另外一种方法也是对特征进行一个转化处理,就是传说中的WOE,WOE跟对数几率有点关系,如下(可以根据贝叶斯公式推导出来):
等号左边就是对数几率,等号右边有2项,第1项是个常数,第2项就是WOE,所以不难发现,对数几率天然与WOE成线性关系,所以我们把X映射成WOE就可以了(注意这一步操作是非线性的),那么WOE怎么算呢?显然是给定Y后的条件概率,举个简单例子(直接截了网上的一张图,bad表示Y=1,good表示Y=0):
不难发现,WOE的递增顺序(对应对数几率的递增顺序)已经变成 18-35、35-50、50以上、10-18、0-10,非线性就是在这里引入的。
不过,目前大部分产品都用第一种方式引入非线性了,因为LR可以增量式训练,在训练过程中自适应Y的漂移和变化,而第二种方式就笨拙了些,导致泛化能力受到了一定的限制。
再总结一点,逻辑回归与线性回归有哪些相似点呢?(除了名字…),一句话:我们用线性回归建模『对数几率』就得到了逻辑回归…(参考公式(4)),不过由于二者概念不同,训练的思路也略有不同,前者是最大似然,后者是最小二乘。
逻辑回归的训练是基于最大似然的原理,简单起见,我们用
p
代表
注意,上式是 w 的函数,因为给定的样本是已知的,我们的目的就是从这些样本中找到最合适的
这个跟下面的是等价的:
这么写主要是为了引出正则化,因为正则化的目的是使得 ||w||2 (对应L2正则)尽量小,所以最后需要优化的式子就变成了:
C 是我们人为给的一个超参数,不需要拟合,可以根据经验给,也可以根据测试数据调整,
也有很多人会从贝叶斯的角度看待正则化,其实数学上是殊途同归的,以L2正则为例,它等价于假设
w
服从正态分布
这时候最大似然优化的就应该是公式7与公式11的乘积了,即:
对上面
max
里面的东西取『负对数』就得到了:
显然,最后一项就是正则项。为什么强制
w
服从正态分布会抑制过拟合呢?因为如果
拉普拉斯分布更陡峭,也就是说只有少数的 wi 在起作用,从而迫使结果更稀疏了。
给定一堆样本后,我们就是从最小化公式13的角度来找到最好的
w
,公式13是个关于
这里省去了一些推导,其实也没多少技巧,就是链式法则,重要的是结果很简明。对 t(w) 求导更简单,这里就不啰嗦了。