首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

线性模型之线性回归

线性回归

1

线性模型是一个非常复杂的模型,它的基本数学模型表达式如下:

其中x是已知的,w是一个加权数。线性回归只是线性模型中的一小块,而且不难。

给定数据集D={(x1,y1),(x2,y2)……(xi,yi)}目标是最终通过一些列的方法得到一个函数

y=wx+b

使得在出现新的x时,带入函数后使得y的误差最小。我们采用均方误差来度量拟合误差。即

(w*,b*)=minΣ(f(xi)-yi)² (1)

上式可化为

(w*,b*)=minΣ(yi-w*xi-b)² (2)

对于(2)式,由于是w和b的二次函数,由二元函数求最小值的知识,对两边同时求偏导,并令他们同时等于零,解出来的w和b一定能使误差最小。

由上述方法求导并化简后可得

解释一下,由于在编辑器里不太好搞公式,所以我就在其它地方搞好了再截图。公式中假设了有m个数据。

这就是我们经常听见的最小二乘法了。当然,拟合的好坏不仅仅之和算法有关,和数据的优良也有关系。(需要注意的是,这里只有一个输入x当有很多输入时,方法也是一样的,但是要复杂得多,我暂时还没有掌握其精髓,所以就先不写了。)

虽然现在matlab和众多的数学软件都有现成的函数可以用,但是为了体验这个过程,我还是自己编了一段代码,数据是在网上找的。其结果如下(代码在附件中);

附件:

%y=wx+b

close all

clear all

x=[75 90 148 183 242 263 278 318 256 200 140 80];

y=[2 5 6 7 22 25 28 30 22 18 10 2];

subplot(1,2,1)

plot(x,y,'o')

title('拟合前')

X=mean(x);%求x的平均数

A=0;B=0;C=0;D=0;m=length(x);%标志位

for i=1:m

A=A+x(i)^2;

end

for i=1:m

B=B+x(i);

end

for i=1:m

C=C+y(i)*(x(i)-X);

end

w=C./(A-B.^2./m);

for i=1:m

D=D+y(i)-w*x(i);

end

b=D/m;

t=0:1:320;

s=w.*t+b;

subplot(1,2,2)

plot(t,s,'r',x,y,'o')

title('拟合后')

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712G0YGXN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券