线性回归

线性回归

给定数据集D={(**x1**,y1),(**x2**,y2).....,(**xm**,ym)},(有m个样本)其中**xi**=(xi1;xi2;xi3.....;xid),(每个样本有d个特称或者属性)线性回归试图学得一个线性模型尽可能准确地预测实值输出标记。
我们考虑一种最简单的情形:输入属性的数目只有一个,即预测的线性模型可以表示为f(xi)=w*xi+b
确定w和b就是我们要做的事情,显然,关键在于如何衡量f(x)和y之间的差距,而均方误差是回归任务中最常用的性能度量,因此我们可以试图让均方误差最小化,即

在这里插入图片描述
基于均方误差最小化来进行模型求解的方法称为“最下二乘法”,在回归方程中最小二乘法就是试图找到一条直线,使所有样本到直线的欧式距离之和最小。
求解w,b,将上式分别对w和b求偏导数,得到
在这里插入图片描述
在这里插入图片描述
matlab实现代码:

num=100;
a=1;
b=3;%生成y=ax+b的100个随机数字
Xbuf=zeros(num,1);
Ybuf=zeros(num,1);
for i=1:num
    Xbuf(i,1)=10*rand;
    Ybuf(i,1)=a*Xbuf(i,1)+b +rand*2;
end
plot(Xbuf,Ybuf,'.r');
sum=0;
for i=1:100
    sum=sum+Xbuf(i,1);
end
xave=sum/100;
divisor=0;
for i=1:100
    divisor=divisor+Ybuf(i,1)*(Xbuf(i,1)-xave);
end
mod=0;
Xsquare=0;
for i=1:100
    Xsquare=Xsquare+Xbuf(i,1)*Xbuf(i,1);
end
w=divisor/(Xsquare-sum*sum/100);%y=wx+b的w计算
b_sum=0;
for i=1:100
   b_sum= b_sum+Ybuf(i,1)-w*Xbuf(i,1);
end
b=b_sum/100; %y=wx+b的b的计算
x=0:0.1:10;
y=w*x+b;
hold on;
plot(x,y,'-');
hold off;


结果展示:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值