regularized linear regression

close all,
clear,clc
%load data
x = load('ex5Linx.dat');
y = load('ex5Liny.dat');
%plot raw data
plot(x,y,'o','MarkerEdgeColor','b','MarkerFaceColor','r');

m = length(y);
x=[ones(m,1),x,x.^2,x.^3,x.^4,x.^5]

lambda=[0,1,10];
d=eye(6);
d(1,1)=0;
theta=zeros(size(x,2),size(lambda,2));
H=[];
plotstyle = {'b', 'r', 'g'}
xrange=linspace(min(x(:,2)),max(x(:,2)))';
xtest=[ones(size(xrange)),xrange,xrange.^2,xrange.^3,xrange.^4,xrange.^5];
%normal equation的求解
for i=1:3
    theta(:,i) =(x'*x+lambda(i)*d)^(-1)*x'*y
    J(i)=1/(2*m)*(x*theta(:,i)-y)'*(x*theta(:,i)-y)+lambda(i)*(theta(:,i)'*theta(:,i))    
    H= [H xtest*theta(:,i)];
    hold on
    %plot(x(:,2),H(:,i),char(plotstyle(i)),'LineWidth',2)
    plot(xrange,H(:,i),char(plotstyle(i)))
end

legend('training data','\lambda=0','\lambda=1','\lambda=10')%注意转义字符的使用方法;
xlabel('x')
ylabel('y')


运行结果:

regularized linear regression_第1张图片

图1  通过正规化拟合出来的3条直线,对应不同lambda的值

regularized linear regression_第2张图片

图2  在不同的lambda下,得到的theta的不同值,以及代价函数的不同值(lambda=0,1,10)


当lambda=0,1,3,5,7,9的时候, 结果如下:

regularized linear regression_第3张图片

图3 在lambda为不同值得时候的拟合曲线





你可能感兴趣的:(Machine,Learning)