logistic regression一点理解
关于logistic regression一些常见问题,整理出来,方便大家应对各种坑爹的面试官。
为什么用sigmoid函数?
the odds of experiencing an event
如果我们想预测每天股票涨多少,可以假设线性模型,然后通过MSE进行模型更新;但是如果我们想要预测每天是否涨这样就不行了,因为f(x)对于的结果要么是1要么是0(要么涨要么不涨)。
要解决这个问题,我们先理解一个概念the odds of experiencing an event:
假设我们认为股票涨的概率为p,对于伯努利分布而言,不涨的概率即为1-p。那么我们构造了p/(1-p),就是the odds of experiencing an event胜率,即为对数胜率。当我们坚信它会涨的情况下,p趋向1,趋向正无穷;当我们坚信它不会涨的情况下,p趋向0,趋向负无穷。这就又转化为可以用线性模型预测的问题了:
将展开就可以得到:,这就解释了为什么说logistic regression是线性模型,因为它的决策边界是线性的;这就解释了为什么想到了要用sigmoid作为压缩函数。
exponential model
就这一种办法么?当然不是:
假设第i个特征对涨的贡献是,则记数据点(属于涨的概率为,正比于;
假设第i个特征对不涨的贡献是,则记数据点(属于不涨的概率为,正比于
所以,令涨=1则有:
,上下同除以且令,则依旧得到了的sigmoid结果。
exponential family
如果大家对数学有点点研究的话,exponential family指出:如果一类分布(a class of distribution)属于exponential family,那么它能写成如下形式:
伯努利分布可以写成:
把后面的展开,就有了sigmoid形式出现了:
对应上方的exponential family的形式,,这不又回到了the odds of experiencing an event胜率的问题了嘛。
为什么要用交互熵做损失函数?
极大似然角度:
我们假设预测结果服从伯努利分布,那么可以把一个case预测结果写成:
其中为给定前提下概率值
要使当前参数下所有事情发生的概率最大,联合分布为各边缘分布的乘积,得到:
其中
取log后方便计算:
这个就是我们最初的交互熵的形式。
信息熵角度:
熵
用来衡量信息量大小,熵越大,越不稳定,信息量越大。
KL散度
用来衡量两份数据的相似程度,KL散度越大,越不相似。
从公式上,我们就可以看出:
其实很好理解的,对应训练数据traindata分布,和未知的真实数据分布越一致越好;同理,模型预测的分布,和训练数据traindata分布也是越一致越好,所以用KL散度来度量就是一个不错的方法。
至于为什么不直接最小化而是选择了最小化H(A,B),我是觉得就和交互熵求导前面加上1/2一样,为了简化计算量,本质上是一致的。
欢迎大家关注我的个人bolg,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码疑问都欢迎通过公众号发消息给我哦。