Stanford ML - Regularization 正则化

在线性和逻辑回归中,如果选择的特征过多,会出现overfitting的情况:回归函数匹配训练集内的数据特别好,但是不能很好的预测新数据。解决overfitting的方法一般有两种:

1. 减少特征的数量 - 用老婆的话说,就是控制参数的稀疏性,不让参数过多,防止过拟合。很专业的说,赞一个:)

2. 正则化 - 保留所有的特征,但是让theta的取值小些,这样每个特征对最终结果的影响就减小了。

这里呢介绍正则化这种方法。


正则化对线性回归和逻辑回归是一致的,都是cost function加上额外的一项来平衡theta的取值。线性回归的cost function如下:


对应的逻辑回归的cost function为:


注意theta的平方和是从theta1开始,不包括theta0。这样按照梯度下降求偏导的公式变为:


从而:



可以看出,这里对theta乘了一个小于但接近于1的系数,相当于迭代的时候对theta进行了衰减。这个公式讲义里面有点错误。


对线性回归normal equation方法进行正则化,theta的计算公式如下。矩阵为(n+1)*(n+1)维。



对逻辑回归的库函数fminunc进行正则化,纯粹套用公式如下:

J = y' * log(sigmoid(X*theta)) + (1 - y)' * log(1 - sigmoid(X*theta));
J = -J/m;

reg = 0;
for j = 2:size(theta)
    reg = reg + theta(j)^2;
end;
reg = reg * lambda / (2*m);

J = J + reg;

for j = 1:size(theta)
    grad(j) = (sigmoid(X*theta) - y)' * X(:,j);
    grad(j) = grad(j) / m;
end

for j = 2:size(theta)
    grad(j) = grad(j) + theta(j) * lambda / m;
end


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值