附上网页学习链接,可缓存下载:网易云吴恩达的公开课
本部分讲述了线性回归原理,线性回归的求解方法(梯度下降和正规方程组),代价函数的选择原因以及过拟合欠拟合(局部权重线性回归)问题。
一、监督学习:
当我们预测连续值的时候被称为回归regression问题,预测离散值被称为分类classification问题。
Part 1 :
1.回归问题例子:房屋面积和房价的关系
input features: living area
output or target variable:
training example:
training set:
其实可以把这个问题看成一个空间投影问题,机器学习知识学习了一个映射函数,此时的function h 被叫做 hypothesis。如下图:
2.处理方法:线性回归linear regression:
当有多个因素(特征)影响房价的时候,我们可以列出特征和房价的线性关系:
此时θi被称为权重weights,为了后期方便矩阵运算,我们假设(x向量中它不是特征),就可以得到一个向量表达式,n表示总的特征数:
为了使预测的h(x)更加接近y,需要选择一个代价函数(cost function)表示所有预测和真实值的差距之和:
我们的目的也就是使这个方程J最小化。以下列出一些线性回归求解方法。
2.1 梯度下降法(gradient descent)
:上面代价函数的倒数
:学习率,learning rate
(1)
这个的原理大家在之前谷歌网上学习视频应该学习过了,公式(1)原因不在详述,可以直接百度梯度下降原理。
(2)
视频里的推导过程,一定要自己推一遍。由公式(1)(2)得到:
(3)
多个样本更新:
(4)
公式(3)被叫做LMS update rules最小均方差更新法则(Widrow-Hoff learning rule),我们发现,更新和学习率有关,也和误差项有关。
① batch(批量) gradient descent:每次迭代更新使用训练集的所有样本,此时(4)中m为样本总个数,训练速度慢
② stochastic(随机)or incremental(增量) gradient descent:每次迭代更新使用随机一个样本,选择的公式(3)更新,收敛速度快,但解可能不是最优。
③Mini-batch(小批量) Gradient Descent:也就是对于m个样本,我们采用x个样子来迭代,1<x<m。
详细可参看链接:https://blog.csdn.net/u010327061/article/details/79608041
2.2 正规方程组(The normal equations)
这个是除了梯度下降法的另外一种最小化cost function的方法,需要矩阵论里面的一些知识。这个方法的实质是使cost function的倒数为0,而此时的cost function 的倒数是用矩阵表示的,如下:
使上述公式为0,即可求得θ解:
如果还是不太理解的话可对照这篇博客学习(请原谅我的偷懒):
http://blog.csdn.net/blackyuanc/article/details/69849023
我们也可以看出这种方法和梯度下降法的差别:梯度下降法是通过一点一点接近正确结果,正规方程组是直接求得结果,在特征维度少的情况下,正规方程组的计算会比梯度下降法快很多,推荐计算线性回归时多使用该方法。
3. Probabilistic interpretation(回归问题中选择代价函数的原因解释)
这一部分是从概率论的视角来解释为何我们的代价函数选择的是
当然对于这部分的解释网上也有很多的参考,懒懒的我就直接贴上链接了。
最开始,我们假设误差服从高斯分布,最后,我们最大化似然函数l(θ)等价于最小化损失函数J(θ),这也说明了在我们的推导中,最后结果与我们假设的高斯分布的方差σ是没有关系的。
总结: 在之前的概率假设下,最小方差回归和寻找θ的极大似然估计是对应的。在这一系列假设下,最小方差回归是处理极大似然估计的直接方法。我们假设误差项服从高斯分布,这个假设对于线性回归模型来说非常形象,其实我们一开始就假设了这个模型是一个线性模型,那么很自然的我们会考虑误差一定是离线性函数越近可能性越大,离线性函数越远可能性越小。所以在机器学习模型中,假设对于我们来说相当重要。
4.局部权重线性回归(Locally weighted linear regression)针对过拟合欠拟合问题
欠拟合 正常拟合 过拟合
先贴出一篇文章方便大家更好的理解underfitting和overfitting。
而局部权重线性回归是加了一个权重项,像这样:
在离x越远的x(i)所对应的w(i)越小,相对于只对x周边的一部分求得代价函数的最小值。
τ在这里被叫做bandwidth parameter,带宽参数,可以控制x周围的概念,即控制距离x多远可以参与线性函数的估计,τ
越大,参与的点越多,反之,参与的点越少。
详细流程如下:
由于局部权重线性回归方法每个预测每一个点时候都需要重新计算一次θ的值,每次计算都要使用所有训练集,因此,算法费时间复杂度会很高,是一种non-parametric算法。前面的基本线性回归(无权重)是一种parametric学习算法。
6. 学习了理论知识就是要对代码进行学习啦,可以参考我以前的一个博客:TensorFlow下的线性回归和梯度下降
如有错误请支持,如有问题多交流!