首先我们来看一个线性回归的问题,在下面的例子中,我们选取不同维度的特征来对我们的数据进行拟合。

 

局部加权线性回归Python 局部加权线性回归头歌_局部加权线性回归Python

 

对于上面三个图像做如下解释:

选取一个特征


来拟合数据,可以看出来拟合情况并不是很好,有些数据误差还是比较大针对第一个,我们增加了额外的特征


,这时我们可以看出情况就好了很多。这个时候可能有疑问,是不是特征选取的越多越好,维度越高越好呢?所以针对这个疑问,如最右边图,我们用5揭多项式使得数据点都在同一条曲线上,为

。此时它对于训练集来说做到了很好的拟合效果,但是,我们不认为它是一个好的假设,因为它不能够做到更好的预测。

 

针对上面的分析,我们认为第二个是一个很好的假设,而第一个图我们称之为欠拟合(underfitting),而最右边的情况我们称之为过拟合(overfitting)

 

所以我们知道特征的选择对于学习算法的性能来说非常重要,所以现在我们要引入局部加权线性回归,它使得特征的选择对于算法来说没那么重要,也就是更随性了。

 

在我们原始的线性回归中,对于输入变量

,我们要预测,通常要做:

局部加权线性回归Python 局部加权线性回归头歌_拟合_02

 

 

而对于局部加权线性回归来说,我们要做:

局部加权线性回归Python 局部加权线性回归头歌_拟合_03

为权值,从上面我们可以看出,如果

很大,我们将很难去使得

小,所以如果

很小,则它所产生的影响也就很小。

 

通常我们选择

的形式如下所示:

局部加权线性回归Python 局部加权线性回归头歌_权值_04

上式中参数

局部加权线性回归Python 局部加权线性回归头歌_局部加权线性回归Python_05

为新预测的样本特征数据,它是一个向量,参数

局部加权线性回归Python 局部加权线性回归头歌_权值_06

控制了权值变化的速率,


局部加权线性回归Python 局部加权线性回归头歌_拟合_07

的图像如下

局部加权线性回归Python 局部加权线性回归头歌_线性回归_08

可以看到

(1)如果

局部加权线性回归Python 局部加权线性回归头歌_局部加权线性回归Python_09

,则

局部加权线性回归Python 局部加权线性回归头歌_权值_10

(2)如果

局部加权线性回归Python 局部加权线性回归头歌_局部加权线性回归Python_11

,则

局部加权线性回归Python 局部加权线性回归头歌_局部加权线性回归Python_12

。也即,离

很近的样本,权值接近于1,而对于离

很远的样本,此时权值接近于0,这样就是在

局部构成线性回归,它依赖的也只是

周边的点

局部加权线性回归Python 局部加权线性回归头歌_拟合_13

图中红色直线使用线性回归做的结果,黑色直线使用LWR做的结果,可以看到局部加权回归的效果较好。

 

注意:

的形式跟高斯函数很像,但是它和高斯函数一点关系都没有,

是波长参数,

越大远距离样本权值下降更快。

局部加权线性回归Python 局部加权线性回归头歌_拟合_14

局部加权回归在每一次预测新样本时都会重新的确定参数,从而达到更好的预测效果当数据规模比较大的时候计算量很大,学习效率很低。并且局部加权回归也不是一定就是避免underfitting。

 

对于线性回归算法,一旦拟合出适合训练数据的参数θi’s,保存这些参数θi’s,对于之后的预测,不需要再使用原始训练数据集,所以是参数学习算法。

对于局部加权线性回归算法,每次进行预测都需要全部的训练数据(每次进行的预测得到不同的参数θi’s),没有固定的参数θi’s,所以是非参数算法。