引用
线性回归
简单线性回归:对数据做散点图后,发现有线性相关趋势,因此利用线性回归方法获取散点拟合直线方程式,拟合指标是误差平方和。
利用matlab或者Octave进行线性拟合时,可以用polyfit(x,y,n)函数,但线性回归计算方法是什么呢?根据引用网站,线性回归有最小二乘法、梯度下降法、最大似然法,这里先学习最小二乘法。
最小二乘法
推导
多元线性方程:
y=w0+w1∗x1+w2∗x2+...+wn∗xn
系数阵W和变量
W=
⎛⎝⎜⎜⎜w0w1...wn ⎞⎠⎟⎟⎟
,X=
⎛⎝⎜⎜⎜11...1x11x21...xn1............x1nx2n...xnn⎞⎠⎟⎟⎟
….
最终得到W为线性方程的系数矩阵(常数项为第一位,与系数阵排列格式一致)。
举例
简单线性回归
利用最小二乘法进行简单线性回归,等我遇到多元线性回归问题再补充:
Brand and Model | Price | Rating |
---|---|---|
Precor | 3700 | 87 |
Key | 2500 | 84 |
Octane | 2800 | 82 |
Life | 1900 | 74 |
Nordic | 1000 | 73 |
Schwinn | 800 | 69 |
Vision | 1700 | 68 |
Pro | 600 | 55 |
对不同产品的价格与评分进行简单线性回归:
Matlab/Octave代码:
%%W为系数阵,w0为常数项,w1为一次项系数,X为x的矩阵,Y为y矩阵
W=[w0;w1];
X=[1,3700;1,2500;1,2800;1,1900;1,1000;1,800;1,1700;1,600];
Y=[87;84;82;74;73;69;68;55];
%%利用最小二乘法计算W
W=inv(X'*X)*X'*Y;
所得结果
W=
5.8158e+001
8.4488e-003
即线性回归方程为:y=5.8158e+001+ 8.4488e-003*x;
利用Octave的polyfit函数验证
x=X(:,2)';
y=Y';
polyfit(x,y,1)
所得结果为
ans=
8.4488e-003 5.8158e+001
注:Octave的最后一项才是常数项,需要注意
To be continued.