用于Logistic回归的随机梯度下降总是返回Inf的成本,并且权重向量永远不会更接近

时间:2014-10-17 05:00:30

标签: matlab machine-learning regression logistic-regression

我正在尝试在MATLAB中实现逻辑回归求解器,并且我通过随机梯度下降找到权重。我遇到了一个问题,我的数据似乎产生了无限的成本,无论发生什么事情,它都永远不会失败...... 这两个看起来都很好,我无法想象为什么我的成本函数总是会无限回归。

Here is my training data其中第一列是类(1或0),接下来的7列是我想要回归的功能。

1 个答案:

答案 0 :(得分:3)

你的渐变有错误的标志:

  

gradient = learningRate。*(trueClass(m) - predictClass)。* transpose([1.0 features(m,:)])

应该是:

  

gradient = learningRate。*(predictClass - trueClass(m))。* transpose([1.0 features(m,:)))

有关详细信息,请参阅Andrew Ng的note。 相对于第j个参数的梯度如下获得:(其中h(x)是逻辑函数; y是真实标签; x是特征向量。) enter image description here

否则,当您采用渐变的负数时,您正在进行渐变提升。我相信这就是为什么你最终会获得无限的成本,因为它已经死了,你永远不会失去它。

更新规则仍应为:

  

weightVector = weightVector - gradient