线性回归就是用线性方程去拟合一组数据, x 的最高阶是1, 用方程可以表示为:
我们令 x0=1 则上式可以改写为:
既然是拟合的模型, 则肯定会存在不符合该模型的点, 第 i 个点的真实值与模型预测的值之间的差称为误差:
假设总共有 m 个数据点, 则我们定义代价函数为:
我们的目的是使总的误差最小, 只需求得使 J(θ) 最小的 θ 即可。
那代价函数为什么是这个形式的呢? 我们可以假定目标变量具有如下的形式
其中 ϵi 是服从 N(0,σ2) 的且满足iid的随机噪声, 其概率密度可写作为:
也即:
因为参数 θ 未知, 我们寻求使满足 (xi,yi) 可能性最高的 θ 值估计:
为了计算上的方便, 使两边取对数, 则有:
从上面式子的结果可以看出, 我们只须令
取最小值即可. 这便是为什么在线性回归中使用均方误差作为性能度量的一个解释。
由于代价函数 J(θ) 是凸函数, 存在全局最优解.
下面介绍两种方法:
由于梯度是函数下降最快的方向, 因此我们可以重复对 J(θ) 做梯度下降使其收敛到全局最小.
更新 θ 的步骤为:
其中 α 是学习率.假设现在我们只有一个样本 (x,y) 来看看如何求:
根据以上导出的式子可以看出, 对于只有一个数据点的情形, 参数 θ 的更新规则为:
那么考虑所有的 m 个数据点之后的更新式子为:
我们从上面更新 θ 的式子中可以看出, 每更新一个一个参数 θj , 我们都要进行m个样本的求和, 这样如果样本数非常大的话, 是非常消耗计算资源的. 为了避免上述问题, 我们可以只应用一个样本数据对参数进行更新.
注意我们不保证随机梯度下降一定能收敛到全局最小, 但在实践中, 其收敛结果是足够接近最优 θ 的.
J(θ) 写成向量形式可以表示为:
由于 J(θ) 有全局最优解, 我们令其导数为0可以直接求解最优参数.
从而有
注意这一步的求解需要满足一个隐含的条件: XTX 是满秩的或是正定的。
如果 XTX 不满秩,可以在代价函数上计入正则化项:
对该代价函数求导:
令其为0可得:
只要在训练样本的特征数 n<10000 的情况下, 都可以考虑使用正规方程, 因为它不需要选择学习率 α , 不需要一步一步的进行迭代. 而当 n>10000 时, 计算 (XTX)−1 耗费的时间就不容忽视了, 其时间复杂度为 O(n3) , 此时推荐使用梯度下降法进行参数求解.
线性回归可能存在的一个问题是欠拟合,因为它求的是具有最小均方误差的无偏估计,有些方法允许在估计中引入一些偏差,从而降低预测的均方误差。
我们为每个样本点赋予不同的权重,则代价函数可表示为:
其中样本权重定义为:
参数 τ 控制着权重随 预测值 x 与样本 x(i) 的距离衰减速率。
最后求得参数为:
可以看到每次预测 x 的回归值,都要重新计算权系数矩阵 W ,也就是说使用局部加权回归时需要储存训练样本,而线性回归则不需要。