关于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一样,为了简化计算量,本质上是一致的。