coursera Stanford Machine Learning Week6 Ex5机器学习 实验5

Regularized Linear Regression and Bias v.s. Variance

1 对线性回归进行正则化

1.1观察数据

训练集X为12x1的向量,交叉验证集(CV)为21x1,测试集为21x1。

1.2正则化线性回归的代价函数

公式如上,其中h=x0*θ0 +X1*θ1,这里不太理解的是线性函数为什么要正则化。

打开linearregcostfunction.m文件,输入以下程序

 

%X = [ones(m,1),X];
h = X * theta;
J = 1/(2 * m)* sum((h - y).^2) + lambda/(2*m)*sum(theta.^2) - lambda/(2*m)*sum(theta(1,:).^2);

 

以上程序。注意X参数在传入这个函数时已经加偏置(1)了,在ex5.m文件中可查看。

1.3正则化的线性回归梯度

公式

在linearregcostfunction.m中加入以下程序

 

grad = (1/m*sum(repmat((h-y),1,size(X,2)).*X))';
grad = grad+lambda/m*theta;
grad(1) = grad(1) - lambda/m*theta(1);

 

以上程序

1.4 线性拟合

2偏差-方差

当模型出现高偏差时会产生欠拟合,出现高方差时会产生过拟合。用学习曲线画出训练集和测试集的误差来进行判断。

2.1学习曲线

打开learningcurve.m文件输入以下代码

 

for i = 1:m
theta = trainLinearReg(X(1:i,:),y(1:i),lambda);
[error_train(i),w] = linearRegCostFunction(X(1:i,:),y(1:i),theta,0);
[error_val(i),w2] = linearRegCostFunction(Xval,yval,theta,0);
end

以上代码

 

注意使用trainLinearReg函数求theta时lambda要使用传入的参数,而linearRegCostFunction函数的lambda要用0传过去,否则提交的script会计算错误导致不得分。

训练集要以当前训练量m来算theta和J,所以在循环体中用X(1:i,:),y(1:i)这两个参数。而验证要用全部验证集验证。
因为是线性的假设函数,对于本数据集无法较好的拟合,所以出现当m加大时,训练集和验证集的误差都很大也挺接近,也就是欠拟合,高偏差。

3多项式回归

假设函数为

其中x1 = (waterLevel); x2 = (waterLevel)^2; xp =(waterLevel)^p

打开polyFeatures.m文件加入以下代码

 

m = size(X,1);
for i =  1:m
for j =  1:p
X_poly(i,j) = X(i).^j; 
end
end

以上代码

 


3.1学习多项式回归

3.2调整正则化参数

这两节都不用添加代码,也没有注意去看。

3.3用验证集来选择lambda。

打开validationcurve.m文件输入以下代码

 

m = size(X,1);
mcv = size(Xval,1);
%X = (ones(:,1),X);
for i = 1:length(lambda_vec)
lambda = lambda_vec(i);
theta = trainLinearReg(X,y,lambda);
h = X * theta;
J = 1/(2 * m)* sum((h - y).^2) + lambda/(2*m)*sum(theta.^2) - lambda/(2*m)*sum(theta(:,1).^2);
error_train(i) = J;

hcv = Xval * theta;
Jcv = 1/(2 * mcv)* sum((hcv - yval).^2) + lambda/(2*mcv)*sum(theta.^2) - lambda/(2*mcv)*sum(theta(:,1).^2);
error_val(i) = Jcv
end

以上代码

 

3.4 3.5都没看

可提交代码
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值