介绍
总结一下对 CS229 第三讲中的局部加权回归。线性回归并不能拟合一些特殊的模型,比如,忽上忽下的训练集。当目标函数没有明显的线性关系时,使用线性回归训练出来的线性模型并不能进行很好地匹配。这个时候就可以利用我们的局部加权回归来进行拟合。
什么是局部加权回归呢?
简单地说,就是当目标函数的线性关系不是很明显时,每次预测一个输入变量 x 的值的时候,选择距离 x 最近的那些点进行建模。通常使用的方法是,给所有的数据增加权值,距离 x 越近的点,权值越大,对构建模型的贡献也越大。下面具体介绍一下该算法。
算法思想
在介绍之前,先来看一下线性回归的预测步骤:
- 找到使损失函数 J(θ)=∑i=1m(y(i)−θTx(i))2J(\theta)= \sum_{i = 1}^m{(y^{(i)} - \theta^Tx^{(i)})}^2J(θ)=∑i=1m(y(i)−θTx(i))2最小的 θ\thetaθ 值。
- 输出 θTx\theta^TxθTx。其中 x 是要预测的变量值。
局部加权回归也是一样的步骤,只不过增加了权值:
- 找到使损失函数 J(θ)=∑i=1mw(i)(y(i)−θTx(i))2J(\theta)= \sum_{i = 1}^mw^{(i)}{(y^{(i)} - \theta^Tx^{(i)})}^2J(θ)=∑i=1mw(i)(y(i)−θTx(i))2最小的 θ\thetaθ 值。
- 输出 θTx\theta^TxθTx。其中 x 是要预测的变量值。
在这里,我们利用 w(i)w^{(i)}w(i) 来控制数据点对损失函数的影响,距离输入变量 x 越远的点,权值越小,对损失函数的贡献也就越小。通常情况下,我们定义权值 w 是有一定的规律,即:
w(i)=exp(−(x(i)−x)22τ2)w^{(i)} = exp(-\frac{{(x^{(i)} - x)} ^ 2}{2\tau^2})w(i)=exp(−2τ2(x(i)−x)2)
该函数被称为指数衰减函数,很像高斯分布,但并不是高斯分布。这里的 τ\tauτ 是波长参数,用来控制权值 www 的下降速率的,越大的话,权值下降越快,函数的形状也就越“瘦”。
总结
相比于线性回归,该算法最大的缺点就是每次预测 x 的值,都需要重新遍历一遍数据集进行建模。每次建立的模型只能对一个 x 有效,这就导致一个问题,当我们需要预测大量数据的时候,就要建立大量的模型,这会导致效率变得很低。