加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Stanford ML - Regularization 正则化

发布时间:2020-12-14 01:41:48 所属栏目:百科 来源:网络整理
导读:在线性和逻辑回归中,如果选择的特征过多,会出现overfitting的情况:回归函数匹配训练集内的数据特别好,但是不能很好的预测新数据。解决overfitting的方法一般有两种: 1. 减少特征的数量 - 用老婆的话说,就是控制参数的稀疏性,不让参数过多,防止过拟合

在线性和逻辑回归中,如果选择的特征过多,会出现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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读