clc
clear all
close all
rate=0.002;
qp=zeros(3,3);
data = load('RegularizedData.txt');
plot(data(:,1),data(:,2),'*');
trainData = data(1:10, 1);
Price= data(1:10, 2);
trainData =[ones(size(trainData,1),1) trainData diag(trainData*trainData') diag(diag(trainData*trainData')*trainData') diag(diag(diag(trainData*trainData')*trainData')*trainData')]
q=[1;1;1;1;1];
h=(q'*trainData')';
for i=1:100000
q=q-(rate/10)*((h-Price)'*trainData)';
h=(q'*trainData')';
df=((h-Price)'*trainData)';
if abs(max(df))<0.00000001
break;
end
end
hold on
(q'*trainData')'-Price
x = linspace (0,1.1); %区间用小括号表示
F=q(5)*x.^4+q(4)*x.^3+q(3)*x.^2+q(2)*x+q(1);
plot(x,F);
%%进行正则化后的
l=60;
q2=[1;1;1;1;1];
h=(q2'*trainData')';
for i=1:100000
q2=q2-(rate/10)*((h-Price)'*trainData)';
q2(2:5)=q2(2:5)*(1-rate*(l/10));
h=(q2'*trainData')';
df=((h-Price)'*trainData)';
if abs(max(df))<0.00000001
break;
end
end
(q2'*trainData')'-Price
x = linspace (0,1.1); %区间用小括号表示
F=q2(5)*x.^4+q2(4)*x.^3+q2(3)*x.^2+q2(2)*x+q2(1);
plot(x,F,'b');
当正则参数l取为100时的图像如蓝色曲线:
当l等于0.1时如图所示