线性回归(Matlab)

单变量线性回归

假设方程:(构造矩阵x时,使x(:,1)=1)


代价函数:(y是训练集中实际值,hθ(x)是预测值


利用gradient descent(梯度下降),一步步迭代求出使代价函数最小的θ,**注意:对于单变量,θ是二维的


data = load('ex1data1.txt');
X = data(:, 1);
y = data(:, 2);
m = length(y); % number of training examples
plotData(X, y);
X = [ones(m, 1), data(:,1)]; % Add a column of ones to x
theta = zeros(2, 1); % initialize fitting parameters
% Some gradient descent settings
iterations = 1500;
alpha = 0.01;
%compute theta
for iter = 1:iterations
 temp1=theta(1)-alpha/m*sum((X*theta-y).*X(:,1));
 temp2=theta(2)-alpha/m*sum((X*theta-y).*X(:,2));
 theta(1)=temp1;
 theta(2)=temp2;
end
hold on; % keep previous plot visible
plot(X(:,2), X*theta, '-')
legend('Training data', 'Linear regression')
hold off % don't overlay any more plots on this figure


运行结果:

ex1data1.txt部分数据:


多变量线性回归

多变量线性回归与单变量大同小异,只是θ维度变为n*1,在用gradient descent方法计算时,用一个循环计算即可。

 temp=zeros(size(theta,1),1);
for i=1:size(theta,1),
    temp(i)=theta(i)-alpha/m*sum((X*theta-y).*X(:,i));
end;
for i=1:size(theta,1),
    theta(i)=temp(i);
end;


在迭代中可以计算出每一次迭代损失函数的值(即每个theta对应的J的值)然后画出来。

J=(X*theta-y)'*(X*theta-y)/2/m;

随着迭代次数增加,J逐渐减小,alpha值增大,J减小速度越快,但是,当alpha很大时J不会一直减小会出现波动。



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值