线性回归(Linear Regression)
先看个例子,比如,想用面积和卧室个数来预测房屋的价格 训练集如下![](https://img.haomeiwen.com/i3281836/a657ab4f4155829b.png!web)
规定:m为training examples,x为inputs,y为output,(x,y)是training example。
首先,我们假设为线性模型,那么hypotheses定义为
![](https://img.haomeiwen.com/i3281836/e1db6cbe1c21e274.png!web)
![](https://img.haomeiwen.com/i3281836/eca7e604d5ce7bf3.png!web)
其中x1,x2表示面积和#bedrooms两个feature。
那么对于线性模型,更为通用的写法为:
![](https://img.haomeiwen.com/i3281836/6c0ede987fdd3af2.png!web)
那么线性回归的目的,就是通过训练集找出使得误差最小的一组参数θ(称为学习) 为了可以量化误差,定义损失函数(cost function)
![](https://img.haomeiwen.com/i3281836/d9466d06ac91a8c9.png!web)
比较好理解,就是训练集中所有样本点,真实值和预测值之间的误差的平方和 其中1/2是为了后面计算方便,求导时会消掉 所以我们目的就是找到θ使得J(θ)最小,这就是最小二乘法(最小平方),很容易理解。
梯度下降(gradient descent)
为了求解这个最优化问题,即找到θ使得J(θ)最小,可以有很多方法 先介绍梯度下降法。这是一种迭代方法,先随意选取初始θ,比如θ=0向量,然后不断的以梯度的方向修正θ,最终使J(θ)收敛到最小。当然梯度下降找到的最优是局部最优,也就是说选取不同的初值,可能会找到不同的局部最优点。但是对于最小二乘的损失函数模型,比较简单只有一个最优点,所以局部最优即全局最优。
对于某个参数的梯度,其实就是J(θ)对该参数求导的结果 所以对于某个参数每次调整的公式如下,
![](https://img.haomeiwen.com/i3281836/a8ea8beab3187060.png!web)
α is called the learning rate,代表下降幅度,步长,小会导致收敛慢,大会导致错过最优点 所以公式含义就是,每次在梯度方向下降一步
下面继续推导,假设训练集里面只有一个样本点,那么梯度推导为,
![](https://img.haomeiwen.com/i3281836/bf1fc03d63e76930.png!web)
![](https://img.haomeiwen.com/i3281836/3e73f24714c96d2a.png!web)
所以提出一种stochastic gradient descent(随机梯度下降)。想法很简单,即每次只考虑一个样本点,而不是所有样本点 那么公式就变为,
![](https://img.haomeiwen.com/i3281836/e74d65c9542df55f.png!web)
其实意思就是,每次迭代只是考虑让该样本点的J(θ)趋向最小,而不管其他的样本点 这样算法会很快,但是收敛的过程会比较曲折。整体效果,还是可以will be reasonably good approximations to the true minimum 所以适合用于较大训练集的case
Normal Equations 前面说了如何用梯度下降来解线性回归问题 其实对于线性回归,也可以不用这种迭代最优的方式来求。因为其实可以通过normal equations直接算出θ,即具有解析解
首先对于训练集,可以写成下面的向量形式
![](https://img.haomeiwen.com/i3281836/886beb4fcaa0ef22.png!web)
![](https://img.haomeiwen.com/i3281836/af71f9e6f90d54cd.png!web)
由于
![](https://img.haomeiwen.com/i3281836/a03548f6e3108548.png!web)
![](https://img.haomeiwen.com/i3281836/794507fe3edd5860.png!web)
并且
![](https://img.haomeiwen.com/i3281836/bd28d53f1e10fd36.png!web)
![](https://img.haomeiwen.com/i3281836/644a1b2c0f9d7813.png!web)
可以看到经过一系列的推导,J(θ)有了新的表达形式 那么J(θ)的梯度,即求导,可以得到
![](https://img.haomeiwen.com/i3281836/cb00b25ddb583525.png!web)
![](https://img.haomeiwen.com/i3281836/f1be3302efb3241f.png!web)
![](https://img.haomeiwen.com/i3281836/360269c58db4f753.png!web)
可以参考,Normal Equations
网友评论