吴恩达机器学习练习五

1.     线性回归正则化的代价函数和梯度计算

 

predictions = X*theta;

sigma=predictions-y;

J= sigma'*sigma/(2*m);

J=J+lambda*(theta(2:end)'*theta(2:end))/(2*m);

grad=(predictions-y)'*X./m;

grad(2:end)=grad(2:end)'+lambda.*theta(2:end)./m;

%=========================================================================

grad = grad(:);

2.     学习曲线:

for i=1:m

  [theta] = trainLinearReg(X(1:i, :), y(1:i),lambda);

[error_train(i),dummy] =linearRegCostFunction(X(1:i, :), y(1:i), theta, 0);

[error_val(i),dummy] =linearRegCostFunction(Xval, yval, theta, 0);

end

学习曲线的练习时,需要注意,计算训练集时用1:i的子集训练theta(因为要画出样本数量对学习模型的影响),而学习到的theta要计算验证集时,需要计算整个验证集。以此判断不同的样本数量对学习到的模型的影响。

3.     欠拟合

欠拟合时考虑增加特征数量

%将每一行的特征扩展到p个特征。

for i=1:p

X_poly(:,i)=X.^i;

End

4.     lambda与学习曲线关系

lambda_vec = [0 0.001 0.003 0.01 0.03 0.1 0.3 1 3 10]';

for i =1:length(lambda_vec)

[theta] = trainLinearReg(X, y, lambda_vec(i));

[error_train(i),dummy] =linearRegCostFunction(X, y, theta, lambda_vec(i));

[error_val(i),dummy] =linearRegCostFunction(Xval, yval, theta, lambda_vec(i));

end


猜你喜欢

转载自blog.csdn.net/weixin_38712697/article/details/80877212