加入惩罚项的逻辑回归(正则化)——Octave代码

逻辑回归的代价函数:

当特征较多时,需要高阶多项式去拟合,那么容易出现过拟合的状态,此时需要正则化来进行处理,从而避免过拟合的情况发生,提供泛化能力。

 

惩罚项:

 

正则化后的代码:

J = 1/m*sum(-y.*log(sigmoid(X*theta))-(1-y).*log(1-sigmoid(X*theta)))+lambda/(2*m)*(theta_1'*theta_1);

 

注意:

  • 逻辑回归的假设函数是:

       

  • 由于 \theta _{0} 不需要参与正则化计算,所以把 \Theta 向量第一个元素设置为0:
theta_1 = [0;theta(2:end)];
  • 只有惩罚项要用到theta_1,前面的不需要修改 \Theta,从而用的是theta
  • 惩罚项的分母 (2*m)要加括号,不然m就变成分子的一部分了。(我就因为括号问题费了不少劲)
  • 尽量用向量化编写代码,而不是用for循环,因为矩阵的计算效率更高。

 

梯度下降代码:

grad = (X'*(sigmoid(X*theta)-y))/m+lambda/m*theta_1;

 

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值