1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 机器学习 一元非线性回归模型

机器学习 一元非线性回归模型

时间:2023-12-05 18:11:39

相关推荐

机器学习 一元非线性回归模型

实际问题中,变量之间常常不是直线。这时,通常是选配一条比较接近的曲线,通过变量替换把非线性方程加以线性化,然后按照线性回归的方 法进行拟合。

#常见的可转化一元线性回归的模型#

倒幂函数曲线y=a+b⋅1xy=a+b \cdot \dfrac{1}{x}y=a+b⋅x1​型

令x′=1x{x}'=\dfrac{1}{x}x′=x1​, 则得y=a+b⋅x′y=a+b \cdot {x}'y=a+b⋅x′.双曲线1y=a+b⋅1x\dfrac{1}{y}=a+b \cdot \dfrac{1}{x}y1​=a+b⋅x1​型

令x′=1x,y′=1y{x}'=\dfrac{1}{x}, {y}'=\dfrac{1}{y}x′=x1​,y′=y1​, 则得y′=a+b⋅x′{y}'=a+b \cdot {x}'y′=a+b⋅x′.幂函数曲线y=d⋅xby=d \cdot x^by=d⋅xb型

令y′=Iny,x′=Inx,a=Ind{y}'=Iny, {x}'=Inx, a=Indy′=Iny,x′=Inx,a=Ind, 则得y′=a+bx′{y}'=a+b{x}'y′=a+bx′.指数曲线y=d⋅ebxy=d \cdot e^{bx}y=d⋅ebx型

令y′=Iny,a=Ind{y}'=Iny, a=Indy′=Iny,a=Ind, 则得y′=a+bx{y}'=a+bxy′=a+bx.倒指数曲线y=d⋅ebxy=d \cdot e^{\dfrac{b}{x}}y=d⋅exb​型

令y′=Iny,x′=1x,a=Ind{y}'=Iny, {x}'=\dfrac{1}{x}, a=Indy′=Iny,x′=x1​,a=Ind, 则得y′=a+bx′{y}'=a+b{x}'y′=a+bx′.

综上所述,许多曲线都可以通过变换化为直线,于是可以按直线拟合的方法来处理。对变换后的数据进行线性回归分析,之后将得到的结果再代回原方程。因而,回归分析是对变换后的数据进行的,所得结果仅对变换后的数据来说是最佳拟合,当再变换回原数据坐标时,所得的回归曲线严格地说并不是最佳拟合,不过,其拟合程度通常是令人满意的。

#一元多项式回归模型#

不是所有的一元非线性函数都能转换成一元线性方程,但任何复杂的一元连续函数都可用高阶多项式近似表示,因此对于那些较难直线化的一元函数,可用下式来拟合。

分析

y^=b0+b1x+b2x2+⋯+bnxn\hat{y}=b_{0}+b_{1}x+b_{2}x^2+\cdots+b_{n}x^n y^​=b0​+b1​x+b2​x2+⋯+bn​xn

如果令X1=x,X2=x2,⋯,Xn=xnX_{1}=x,X_{2}=x^2,\cdots,X_{n}=x^nX1​=x,X2​=x2,⋯,Xn​=xn,则上式可以转化为多元线性方程。

y^=b0+b1X1+b2X2+⋯+bnXn\hat{y}=b_{0}+b_{1}X_{1}+b_{2}X_{2}+\cdots+b_{n}X_{n} y^​=b0​+b1​X1​+b2​X2​+⋯+bn​Xn​

这样就可以用多元线性回归分析求出系数b0,b1,⋯,bnb_{0},b_{1},\cdots,b_{n}b0​,b1​,⋯,bn​。(求解方法是最小二乘法)

虽然多项式的阶数越高,回归方程与实际数据拟合程度越高,但阶数越高,回归计算过程中的舍入误差的积累也越大,所以当阶数nnn过高时,回归方程的精确度反而会降低,甚至得不到合理的结果。故一般取n=3∼4n=3\sim4n=3∼4。

下面我们看一个例子。

已知某种半成品在生产过程中的废品率yyy与它的某种化学成分xxx有关,试验数据如下表所示。试根据散点图特点选配一条合适的拟合曲线关系。

| xxx | 34 | 36 | 37 | 38 | 39 | 39 | 39 | 40 | 40 | 41 | 42 | 43 | 43 | 45 | 47 | 48 |

| ------------- |:-------------? -----?

| yyy | 1.30 | 1.00 | 0.73 | 0.90 | 0.81 | 0.70 | 0.60 | 0.50 | 0.44 | 0.56 | 0.30 | 0.42 | 0.35 | 0.40 | 0.41 | 0.60 |

解:二次多项式回归模型为

y=b0+b1x+b2x2+εy=b_{0}+b_{1}x+b_{2}x^2+\varepsilon y=b0​+b1​x+b2​x2+ε

令X1=x,X2=x2X_{1}=x, X_{2}=x^2X1​=x,X2​=x2,则上式可以转化为二元线性方程:

y^=b0+b1X1+b2X2\hat{y }=b_{0}+b_{1}X_{1}+b_{2}X_{2} y^​=b0​+b1​X1​+b2​X2​

##参数估计:选用最小二乘法##

根据表中数据,得

β^=(b0b1b2)=(XTX)−1XTY\hat{\beta }=\begin{pmatrix}b_{0}\\ b_{1}\\ b_{2}\end{pmatrix}=\left(X^TX\right)^{-1}X^TY β^​=⎝⎛​b0​b1​b2​​⎠⎞​=(XTX)−1XTY

由MatlabMatlabMatlab程序求得

β^=(18.2642−0.80970.0092)\hat{\beta }=\begin{pmatrix}18.2642\\-0.8097\\0.0092\end{pmatrix} β^​=⎝⎛​18.2642−0.80970.0092​⎠⎞​

所以回归方程为

y=18.2642−0.8097x+0.0092x2y=18.2642-0.8097x+0.0092x^2 y=18.2642−0.8097x+0.0092x2

##方差分析表及相关性检验##

假设H0:b1=b2=0H_{0}: b_{1}=b_{2}=0H0​:b1​=b2​=0

由方差检验,及MatlabMatlabMatlab程序求得

由于F=48.2196>F0.01(2,13)=6.7010F=48.2196>F_{0.01}(2,13)=6.7010F=48.2196>F0.01​(2,13)=6.7010,说明回归方程在α=0.01\alpha=0.01α=0.01水平上是高度显著的。

下面是求解的一些统计量:

拟合的图像如下图所示。

显然,从拟合的图像可以看出,拟合的效果比较好。

##Matlab代码

clear all;clcX1=[34;36;37;38;39;39;39;40;40;41;42;43;43;45;47;48];x1=X1;x2=X1.*X1;X=[ones([size(X1,1),1]),x1,x2];Y=[1.30;1.00;0.73;0.90;0.81;0.70;0.60;0.50;0.44;0.56;0.30;0.42;0.35;0.40;0.41;0.60];beta=inv((X'*X))*X'*Y; %回归系数disp('偏回归系数');disp(beta);%回归分析z1=X;z1(:,1)=[];n=size(Y,1); %观察单位数m=size(X,2); p=m-1;%自变量个数alpha=0.05; yhat=X*beta;%方差分析表(F检验)SSR=(yhat-mean(Y))'*(yhat-mean(Y)); %回归平方和SSE=(yhat-Y)'*(yhat-Y); %残差平方和SST=(Y-mean(Y))'*(Y-mean(Y)); %总平方和Fb=(SSR/(m-1))/(SSE/(n-m)); %显著性检验的统计量Fa=finv(1-0.01,2,13);Falpha=2*(1-fcdf(abs(Fb),m-1,n-m)); %P值table1=cell(4,7); %创建元胞table1(1,:)={'模型','偏差平方和','自由度','均方','F值','Fa','F.Sig'};table1(2,1:7)={'回归',SSR,m-1,SSR/(m-1),Fb,Fa,Falpha};table1(3,1:7)={'残差',SSE,n-m,SSE/(n-m),[],[],[]};table1(4,1:3)={'总和',SST,n-1};%决定系数检验R2=SSR/SST; %决定系数R=sqrt(R2); %复相关系数disp('复相关系数');disp(R);Sy=sqrt(SSE/(n-m));%剩余标准差disp('估计的标准误差');disp(Sy);disp('方差分析表');disp(table1);xl=min(X1);xr=max(X1);xx=linspace(xl,xr,1000);yy=polyval(fliplr(beta'),xx);plot(X1,Y,'k*',xx,yy,'-k');

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。