优化逻辑回归中的权重(对数似然)

Optimizing weights in logistic regression ( log likelihood )

在逻辑回归中:

假设函数,

                   h(x) = ( 1 + exp{-wx} )^-1

其中,w - weights/parameters 适合或优化


成本函数(-ve 对数似然函数)给出为:

对于单次训练,例如 (x,y):

         l(w) = y * log ( h(x) ) + (1 - y) * log ( 1 - h(x) )

目标是在所有训练示例中最大化 l(w),从而估计 w。


问题:

考虑这样一种情况,其中正 (y=1) 训练示例比负 (y=0) 训练示例多得多。

为简单起见:

如果我们只考虑正例 (y=1): 算法运行:

           maximize ( l(w) )

          =>  maximize ( y * log ( h(x) ) )

          =>  maximize ( log( h(x) ) )

          =>  maximize ( h(x) ); since log(z) increases with z

          =>  maximize ( ( 1 + exp{-wx} )^-1 )

          =>  maximize ( wx );   
   since a larger wx will increase h(x) and move it closer to 1

换句话说,优化算法会尝试增加(wx)以便更好地拟合数据并增加可能性。


但是,算法似乎有可能以一种意想不到的方式增加 (wx) 但无论如何都不会改进解决方案(决策边界):

             by scaling w: w' = k*w  ( where k is positive constant )

我们可以在不改变解决方案的情况下增加 (k*wx)。

1) 为什么这不是问题?或者这是一个问题?

2) 有人可能会争辩说,在一个正例多于负例的数据集中,该算法将尝试不断增加 ||w||。

  1. 这有时是个问题,但通过正则化解决了
  2. 仅当 class 完全分开时

如果只有y=1,算法确实会尝试使wx尽可能大,并且永远不会收敛.但是如果你只有一个class,你根本就不需要逻辑回归

如果数据集不平衡(y=1 比 y=0 多得多),一般,逻辑回归会遭受没有收敛问题

让我们看看为什么。假设你只有 1 个负样本 x_0,和 N 个相同的正样本 x_1。然后对数似然看起来像

l(w) = N * log(h(x_1)) + log(1-h(x_0))

h(x) 的界限在 0 和 1 之间,因此两个分量的上方都以 0 为界,但下方没有界限。

现在,如果 w 足够大并且你不断增加它,第一项只会略微增加(因为它已经接近于 0),但第二项会下降得非常快(因为 log(x)x 接近 0 时,趋向于非常快地减去无穷大)。如果无限增加 wl(w) 将变为负无穷大。因此,存在一个有限的 w 最大化似然

但是有一个重要的例外。它发生在 classes 被某个超平面完全分离时(它与class大小无关) .在这种情况下,第一项和第二项都将趋向于 0||w|| 趋于无穷大。

但如果 class 完全分开,您可能根本不需要逻辑回归!它的力量在于概率预测,但在完全分离的情况下,预测可能是确定性的!因此,您可以将 SVM 应用于您的数据。

或者您可以求解正则化问题,最大化 l(w)-lambda*||w||。例如,在 scikit-learn 逻辑回归 中。在这种情况下,如果 l(w) 足够接近 0,则 ||w|| 将占主导地位,并且 objective 函数最终将在 w 中减小。

因此,objective 函数中的一个小惩罚解决了您的后顾之忧。这是一个广泛应用的解决方案,不仅在逻辑回归中,而且在线性模型(Lasso、Ridge 等)和神经网络中。