优化逻辑回归中的权重(对数似然)
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||。
- 这有时是个问题,但通过正则化解决了
- 仅当 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 时,趋向于非常快地减去无穷大)。如果无限增加 w
,l(w)
将变为负无穷大。因此,存在一个有限的 w
最大化似然 。
但是有一个重要的例外。它发生在 classes 被某个超平面完全分离时(它与class大小无关) .在这种情况下,第一项和第二项都将趋向于 0
而 ||w||
趋于无穷大。
但如果 class 完全分开,您可能根本不需要逻辑回归!它的力量在于概率预测,但在完全分离的情况下,预测可能是确定性的!因此,您可以将 SVM 应用于您的数据。
或者您可以求解正则化问题,最大化 l(w)-lambda*||w||
。例如,在 scikit-learn 逻辑回归 中。在这种情况下,如果 l(w)
足够接近 0,则 ||w||
将占主导地位,并且 objective 函数最终将在 w
中减小。
因此,objective 函数中的一个小惩罚解决了您的后顾之忧。这是一个广泛应用的解决方案,不仅在逻辑回归中,而且在线性模型(Lasso、Ridge 等)和神经网络中。
在逻辑回归中:
假设函数,
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||。
- 这有时是个问题,但通过正则化解决了
- 仅当 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 时,趋向于非常快地减去无穷大)。如果无限增加 w
,l(w)
将变为负无穷大。因此,存在一个有限的 w
最大化似然 。
但是有一个重要的例外。它发生在 classes 被某个超平面完全分离时(它与class大小无关) .在这种情况下,第一项和第二项都将趋向于 0
而 ||w||
趋于无穷大。
但如果 class 完全分开,您可能根本不需要逻辑回归!它的力量在于概率预测,但在完全分离的情况下,预测可能是确定性的!因此,您可以将 SVM 应用于您的数据。
或者您可以求解正则化问题,最大化 l(w)-lambda*||w||
。例如,在 scikit-learn 逻辑回归 l(w)
足够接近 0,则 ||w||
将占主导地位,并且 objective 函数最终将在 w
中减小。
因此,objective 函数中的一个小惩罚解决了您的后顾之忧。这是一个广泛应用的解决方案,不仅在逻辑回归中,而且在线性模型(Lasso、Ridge 等)和神经网络中。