机器学习(1)—— 线性回归

一 线性回归原理

如何实现线性回归?

主要的思想:熟悉目标函数,计算它们的梯度和优化目标参数集。

这些基础工具是后续复杂算法的基础。更多的关于线性回归的细节参考[Lecture Note],

 

线性回归的目标: 从输入向量值 $x\in\Re^{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_{\theta}(x) = \sum_{\substack{j}}\theta_{j}x_{j} = \theta^{\top}x$,其中,$h_{\theta}x$表示选择不同的参数$\theta$的函数簇,我们的任务找到最优的$\theta$使$h_{\theta}(x^{(i)})$尽可能的与$y^{(i)}$相近。

即,找寻参数$\theta$使如下公式最小化

$J(\theta) = \frac{1}{2} \sum_{i}^{}(h_{\theta}(x^{(i)}) - y^{(i)}) ^2 = \frac{1}{2} \sum_{i}(\theta^{\top}x^{(i)} - y^{(i)})^2$

该函数即为我们问题的“损失函数(cost function)”,用于度量对于特定的$\theta$下预测的$y^{(i)}$引入的错误。也称之为“loss function”, “penalty"或”objective function“。

二 函数最小化

现在我们所要做的是找到参数$\theta$,使上述的$J(\theta)$最小化。 有很多算法用于最小化该函数,以下我们一种非常有效,也非常容易实现的算法——梯度下降算法(Gradient Descent)。

对于通常使用用于最小化该函数的算法,需要提供两部分关于$J{(\theta)}$的信息:我们需要编写代码计算

$J{(\theta)}$和 $ \bigtriangledown_{\theta}J(\theta) $ 。

接下来的优化过程就是通过最优化算法的处理找到最优的$\theta$ 。

对于上面的表达式$J(\theta)$,给定训练集$x^{(i)}$和$y^{(i)}$, 可以使用MATLAB非常容易的实现计算$J(\theta)$,剩下的要求是计算梯度

其中对于损失函数$J(\theta)$对于特定的参数$\theta_{j}$的微分为:

 

三 实现(MATLAB)

对于上述的线性回归原理,用MATLAB代码实现的话,需要实现目标函数$J(\theta)$ 和梯度$ \bigtriangledown_{\theta}J(\theta) $的计算。

 

四 参考

Linear Regression

posted @ 2017-08-30 20:29  wxer  阅读(210)  评论(0编辑  收藏  举报