之前所讨论的梯度下降算法,其算法模型是“线性回归模型”,我们可以理解为变量与因变量之间的关系是线性的。而现实情况是,使用线性模型去描述所有数据,很容易出现欠拟合(underfitting)的情况;同样,如果使用相当复杂的模型去描述数据集中所有的细节,则很容易产生另一种问题:过拟合(overfitting),即过分关注细节而忽略了数据变化的趋势。
所以,我们在此引出另一种模型:Locally weighted regression algorithm(LWLR/LWR),通过名字我们可以推断,这是一种更加关注局部变化的模型。的确如此,在普通的linear regression algorithm中,cost function是完全基于training set的,我们通过算法与training set求出h(x)的参数theta,然后训练结束,此后无论推测多少输出,h(x) 不再发生任何变化。
而LWR的完全不同之处在于,我们的cost function是由training set和要预测的数据共同决定的。我们从linear regression的cost function中看到,每个training example的权重都是相等的,而在LWR algorithm中,则是利用的权重项来给予预测值周边局部内的training sub-set更高关注,而基本忽略其他域内training examples的。其cost function为如下形式:
其中权重项的值为:
如果仔细观察,我们可以分析出这个函数是如何为局部范围内的训练样例加权而为局部范围外的训练样例除权的了:
a.当训练样例与x无限接近,我们可以知道,此时的权重项无限接近于1
b.当训练样例与x逐渐远离直至无穷远,此时的权重将无限接近于0
c.w的表达式看起来很像高斯分布,虽然它和高斯分布没什么关系,但的的确确也是一个Bell-Shaped Curve,而分母处tow称为bandwidth parameter,其作用类似于高斯分布中均方差的作用,用以控制钟形曲线的宽窄陡峭程度,如果tow很大,则表明离散程度大,曲线平缓,如果tow小,说明分布比较集中,曲线比较陡峭。
从某种意义上讲,LWR基本忽略了远离局部域的训练样例,专注于在预测值周边的training sub-set中建立线性回归模型,并做局部拟合。普通的linear regression模型是一种parametric learning algorithm,也就是说,学习过程有明确的参数,一旦确定就不会改变,一旦学习就可以丢弃。但locally weighted linear regression是non-parametric learning algorithm,每次进行预估时,都需要进行重新学习。所以说,虽然lwr提供了更精准的拟合,但占用了更多的存储空间,计算时间也会更长。