大家好,本文主要和大家分享coursera网站上斯坦福大学机器学习公开课(吴文达老师)第六周Reguirized Linera Regression and Bias v.s Variance的课后编程题。这周的课程主要介绍了一些模型选择,样本分类,bias and variance,regularization参数选择,learing curves学习曲线绘制等知识。以下为本人编写的代码和一些个人的见解,如有错误,请留言批评指正,谢谢。
1.首先,我们需要对linearRegCostFunction.m这个文件进行改造。这个文件是利用线性拟合为模型,计算样本X,y在指定theta和lambda的参下的代价J和偏导grad。
function [J, grad] = linearRegCostFunction(X, y, theta, lambda)
% You need to return the following variables correctly
J = 0;
grad = zeros(size(theta));
J = sum((X * theta - y).^2)/(2*m) + lambda / (2 * m) * (sum(theta .^2 ) - theta(1)^2); %计算正则化线性回归的代价
grad = ((X * theta - y)' * X)'/m + lambda / m * theta; %计算正则化线性回归的梯度
grad(1) = grad(1) - lambda / m * theta(1); %不惩罚theta0,重新加回去,theta0在matlab数组中的下标为1
grad