python - 为什么在回归正则化时跳过 theta0?

标签 python numpy machine-learning regularized

我目前正在 coursera 上学习 ML,并借助 Andrew Ng 的 ML 类(class)。我在 python 中执行作业,因为我更习惯它而不是 Matlab。我最近遇到了一个关于我对正则化主题的理解的问题。我的理解是,通过进行正则化,人们可以添加在预测中足够重要的不太重要的特征。但是在实现它时,我不明白为什么在计算成本时会跳过 theta(parameters) 的第一个元素,即 theta[0] 。我已经提到了其他解决方案,但他们也做了相同的跳过但没有解释。

这是代码:

`

 term1 = np.dot(-np.array(y).T,np.log(h(theta,X)))
 term2 = np.dot((1-np.array(y)).T,np.log(1-h(theta,X)))
 regterm = (lambda_/2) * np.sum(np.dot(theta[1:].T,theta[1:])) #Skip theta0. Explain this line
 J=float( (1/m) * ( np.sum(term1 - term2) + regterm ) )
 grad=np.dot((sigmoid(np.dot(X,theta))-y),X)/m
 grad_reg=grad+((lambda_/m)*theta)
 grad_reg[0]=grad[0]

`

公式如下:

Regularized Cost function

这里 J(theta) 是成本函数 h(x) 是 sigmoid 函数或假设。 lamnda 是正则化参数。

最佳答案

Theta0 指的是偏差。 当我们希望正确划分决策边界时,偏见就会出现。只考虑一个例子

Y1=w1 * X 然后 Y2= w2 * X

当 X 的值接近于零时,可能会出现很难将它们分开的情况,这会导致角色产生偏见。

Y1=w1 * X + b1 且 Y2= w2 * X + b2

现在,通过学习,决策边界将始终清晰。

让我们考虑一下为什么现在使用正则化。

这样我们就不会过度拟合,并且平滑曲线。正如您所看到的方程,它的斜率 w1 和 w2 需要平滑,偏差只是分离的截距。因此,在正则化中使用它们是没有意义的。

虽然我们可以使用它,但对于神经网络来说它不会有任何区别。但我们可能会面临大幅降低偏差值的问题,以至于可能会混淆数据点。因此,最好不要在正则化中使用偏差。

希望它能解答您的问题。 最初发布:https://medium.com/@shrutijadon10104776/why-we-dont-use-bias-in-regularization-5a86905dfcd6

关于python - 为什么在回归正则化时跳过 theta0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54017246/

相关文章:

python - 使用 Healpy 在 Cartview 中添加轴

python - numpy.all Axis 参数行为不当?

python - Python 中的 ElasticNetCV 与 R 中的 cvglmnet

matlab - matlab中的主成分分析?

python - 运行 ChromeDriver 的多个实例

python - Celery 中的异常处理?

python - 运行 Python 文件时 VS Code 错误 22

python - 如何使用 Pandas 对所有 CSV 文件列和行执行数学运算

python - Numpy - 修改匹配值旁边的值

python - 如何使用 scikit 对具有大量潜在值的文本进行准确分类?