非线性回归

曲线拟合方法有:局部加权线性回归算法、给定已确定的模型、多项式。

局部加权算法

优点:拟合效果好。
缺点:要重新对每一种预测训练参数,时间代价大。
待续。。。

多项式

多项式回归是线性回归的一种扩展。假设一个非线性样本的拟合函数为 f ( x ) f(x) f(x);根据泰勒公式,若一个函数 n 阶可导,那么我们可以用 n 阶多项式来无限逼近这个函数,因此我们可以用多项式来拟合非线性样本。

其次,在实践中回归函数通常都是未知的,即很难找到一个完全符合理论值的模型;即使能找到一个非线性方程来拟合样本,也难以用一个简单的函数变换来转化为线性模型,所以通常做法是用多项式函数拟合样本。

  多项式回归:由“多项式”和“回归”组成。
  多项式polynomial:在数学中,多项式是指由若干个单项式(monomial)相加组成的代数式叫做多项式。多项式中的每个单项式叫做多项式的,这些单项式中的最高项次数,就是这个多项式的次数。单项式由单个或多个变量和系数相乘组成。

多项式函数: h θ ( x ) = ∑ k 1 k 2 . . . k n x 1 k 1 x 2 k 2 . . . x n k n h_θ(x)=\displaystyle\sum_{k_1k_2...k_n}x_1^{k_1}x_2^{k_2}...x_n^{k_n} hθ(x)=k1k2...knx1k1x2k2...xnkn
  多项式按照 “字典排列法” 展开,字典排列法是多项式中定义的一个先后顺序;设两个单项式分别对应 n 元数组 ( k 1 , . . . , k n ) (k_1,...,k_n) (k1,...,kn) ( l 1 , . . . , l n ) (l_1,...,l_n) (l1,...,ln)
    考虑 k j − l j k_j-l_j kjlj j = 1 , 2 , . . . , n j=1,2,...,n j=1,2,...,n,若有 j ≤ n j≤n jn,使
     k 1 − l 1 = 0 , ⋯   , k j − 1 − l j − 1 = 0 k_1-l_1=0,\cdots,k_{j-1}-l_{j-1}=0 k1l1=0,,kj1lj1=0,而 k j − l j > 0 k_j-l_j>0 kjlj0,则称n 元数组 ( k 1 , . . . , k n ) (k_1,...,k_n) (k1,...,kn)先于数组 ( l 1 , . . . , l n ) (l_1,...,l_n) (l1,...,ln),记为: ( k 1 , . . . , k n ) (k_1,...,k_n) (k1,...,kn) ( l 1 , . . . , l n ) (l_1,...,l_n) (l1,...,ln)。举个列子,数组(1,1,1)先于(1,0,2)。多项式就按这个规律展开,下面以三元三次多项式为列,具体说明多项式的展开:
     h θ ( x 1 x 2 . . . x 3 ) = ∑ k 1 k 2 k 3 x 1 k 1 x 2 k 2 x 3 k 3 h_θ(x_1x_2...x_3)=\displaystyle\sum_{k_1k_2k_3}x_1^{k_1}x_2^{k_2}x_3^{k_3} hθ(x1x2...x3)=k1k2k3x1k1x2k2x3k3,其 3 元3次数组为:
    当n=3时: [3,0,0]
         [2,1,0],[2,0,1]
         [1,2,0],[1,1,1],[1,0,2]
         [0,3,0],[0,2,1],[0,1,2],[0,0,3]
    当n=2时: [2,0,0]
         [1,1,0],[1,0,1]
         [0,2,0],[0,1,1],[0,0,2]
    当n=1时: [1,0,0],[0,1,0],[0,0,1],所以,展开式为:
     h θ ( x 1 x 2 . . . x 3 ) = x 1 3 + x 1 2 x 2 + x 1 2 x 3 + x 1 x 2 2 + x 1 x 2 x 3 + x 1 x 3 2 + x 2 3 + x 2 2 x 3 + x 2 x 3 2 + x 3 3 + h_θ(x_1x_2...x_3)=x_1^3+x_1^2x_2+x_1^2x_3+x_1x_2^2+x_1x_2x_3+x_1x_3^2+x_2^3+x_2^2x_3+x_2x_3^2+x_3^3+ hθ(x1x2...x3)=x13+x12x2+x12x3+x1x22+x1x2x3+x1x32+x23+x22x3+x2x32+x33+
             x 1 2 + x 1 x 2 + x 1 x 3 + x 2 2 + x 2 x 3 + x 3 2 + x_1^2+x_1x_2+x_1x_3+x_2^2+x_2x_3+x_3^2+ x12+x1x2+x1x3+x22+x2x3+x32+
             x 1 + x 2 + x 3 x_1+x_2+x_3 x1+x2+x3,仅三元三次多项式就展开了19项(不含常数项),可见多元非线性回归很复杂。

次数的选择:
多项式函数有多种,一般来说,需要先观察数据的形状,再去决定选用什么形式的多项式函数来处理问题。比如,从数据的散点图观察,如果有一个“弯”,就可以考虑用二次多项式;有两个“弯”,可以考虑用三次多项式;有三个“弯”,则考虑用四次多项式,以此类推。

考虑到多元非线性回归很复杂,我们以一元二次多项式拟合来说明非线性变换过程。设
   y = a x 2 + b x + c y=ax^2+bx+c y=ax2+bx+c,令 x 1 = x 2 , x 2 = x x_1=x^2,x_2=x x1=x2,x2=x;则原方程可转换为,
   y = a x 1 + b x 2 + c y=ax_1+bx_2+c y=ax1+bx2+c,于是就可以调用线性回归方程的拟合方法了。实际上,线性回归并不知道 x 1 x_1 x1 x 2 x^2 x2的变换,而是把它当做一个变量来处理,只是为模型添加了特征而没有改变线性回归拟合模型的方式。

因此,多项式拟合并不是直接构建多项式模型,而是数据预处理效果。即在生成模型前,提前将数据特征转变成多项式特征,所以达到即便是线性模型,也能拟合曲线。

你可能感兴趣的:(线性回归,python)