我正在尝试在MATLAB中实现逻辑回归求解器,并且我通过随机梯度下降找到权重。我遇到了一个问题,我的数据似乎产生了无限的成本,无论发生什么事情,它都永远不会失败...... 这两个看起来都很好,我无法想象为什么我的成本函数总是会无限回归。
Here is my training data其中第一列是类(1或0),接下来的7列是我想要回归的功能。
答案 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
是特征向量。)
否则,当您采用渐变的负数时,您正在进行渐变提升。我相信这就是为什么你最终会获得无限的成本,因为它已经死了,你永远不会失去它。
更新规则仍应为:
weightVector = weightVector - gradient