一 线性回归原理
如何实现线性回归?
主要的思想:熟悉目标函数,计算它们的梯度和优化目标参数集。
这些基础工具是后续复杂算法的基础。更多的关于线性回归的细节参考[Lecture Note],
线性回归的目标: 从输入向量值 $xinRe^{n}$ 预测目标值$y$。
例如,我们预测一座房子的价格,其中$y$表示房子的价格,$x$中的元素$x_{j}$表示描述房子的特征(像房子的大小和卧室的数目),
假设我们具有很多的房子的数据特征,其中第$i$个房子的特征用$x^{(i)}$表示,对应的价格用$y^{(i)}$表示。
对于这些数据,我们的目标是找到函数$y = h(x)$, 对于各个训练函数使$y^{(i)} approx h(x^{(i)})$。
若我们成功找到这样的函数$h(x)$。且我们有足够的房子和对应的价格例子(即训练集),我们希望$h(x)$是一个非常好的预测器,对新的未知价格的房子(即测试集)进行价格预测。
为了找到函数使$y^{(i)} approx h(x^{(i)})$, 首先需要决定如何表示函数$h(x)$,
开始我们使用线性函数:$h_{ heta}(x) = sum_{substack{j}} heta_{j}x_{j} = heta^{ op}x$,其中,$h_{ heta}x$表示选择不同的参数$ heta$的函数簇,我们的任务找到最优的$ heta$使$h_{ heta}(x^{(i)})$尽可能的与$y^{(i)}$相近。
即,找寻参数$ heta$使如下公式最小化
$J( heta) = frac{1}{2} sum_{i}^{}(h_{ heta}(x^{(i)}) - y^{(i)}) ^2 = frac{1}{2} sum_{i}( heta^{ op}x^{(i)} - y^{(i)})^2$
该函数即为我们问题的“损失函数(cost function)”,用于度量对于特定的$ heta$下预测的$y^{(i)}$引入的错误。也称之为“loss function”, “penalty"或”objective function“。
二 函数最小化
现在我们所要做的是找到参数$ heta$,使上述的$J( heta)$最小化。 有很多算法用于最小化该函数,以下我们一种非常有效,也非常容易实现的算法——梯度下降算法(Gradient Descent)。
对于通常使用用于最小化该函数的算法,需要提供两部分关于$J{( heta)}$的信息:我们需要编写代码计算
$J{( heta)}$和 $ igtriangledown_{ heta}J( heta) $ 。
接下来的优化过程就是通过最优化算法的处理找到最优的$ heta$ 。
对于上面的表达式$J( heta)$,给定训练集$x^{(i)}$和$y^{(i)}$, 可以使用MATLAB非常容易的实现计算$J( heta)$,剩下的要求是计算梯度
其中对于损失函数$J( heta)$对于特定的参数$ heta_{j}$的微分为:
三 实现(MATLAB)
对于上述的线性回归原理,用MATLAB代码实现的话,需要实现目标函数$J( heta)$ 和梯度$ igtriangledown_{ heta}J( heta) $的计算。