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