机器学习系列之(一) 线性回归

前言

学习机器学习也有一年多了,最近因为需要面试得把基础巩固一下,所以又重新复习了一下基础知识,这个系列将作为总结的第一篇,和大家一起学习(有个建议,平时没事的时候多看看以前看过的资料,随着你知识积累的增加,真的,每次都会有新发现)

问题引入

本篇将以吴恩达老师的机器学习课为基础进行讲解,网址为吴恩达线性回归网址

这里以最经典的房价预测为例,如图:
机器学习系列之(一) 线性回归
在波特兰,你收集到了几十组数据,形如(size,price),每一个size对应一个prize,比如1500 平方米对应的prize大概是310(1000 dollars),那么如果你的朋友有一个1250平的房子,他问你他的房子值多少钱,我觉得你的第一选择可能是查一查你收集的数据中有没有1250平的房子,一看没有,那可怎么办?这个时候就是回归方法派上用场的时候了。

假设函数

为了把价格和size对应起来,我们提出了一个假设函数的概念h,对于每一个size,都会通过假设函数将其映射为一个对应的prize,我们表示其形式如下:
机器学习系列之(一) 线性回归

代价函数

表示好假设函数以后,任取一对θ,就可以得到一个对应的价格,但是这个对应显示不是最合适的,我们需要通过什么方式来使这个对应值和真实值最接近,现在我们有的资源只是收集到的这几十组数据,那么我们的目的就是使这个假设值在每个x值上与真实值差距最小,那么怎么来表示这个差距呢,如下图:
机器学习系列之(一) 线性回归
这里加平方是因为括号里面的差值有可能是负数,对于每个样本来说,假设函数和真实值的差距是这样的,那么对于所有的样本来说,求和就是了:
机器学习系列之(一) 线性回归
前面的1/2m只是一个用来简化运算的项,我们的目的是使J(θ)最小,这样和前面的项是没有关系的,那么如何使这个项最小呢,这就要用到接下来介绍的梯度下降了。

梯度下降

首先声明,梯度下降算法并不是针对优化代价函数设计的,他可以最小化任何函数,如下图:
机器学习系列之(一) 线性回归
那么针对于这个损失函数,梯度下降法的应用过程就是:

  1. 先初始化一对θ
  2. 接着就是求偏导项:机器学习系列之(一) 线性回归
  3. 更新θ,这里有一点:因为x,y都是实数,所以在损失函数里,只有θ是未知项,可以对θ进行求导,公式为:机器学习系列之(一) 线性回归
  4. 重复(1)-(3),直到损失函数收敛,这里要说的一点是怎么判定损失函数是否收敛呢,有两种方式,第一种:画出损失函数和迭代次数的对应图,当线条变得平缓时,证明已收敛。第二种:当迭代一次前后,损失函数的差值小于某一个很小的值时,这时证明函数已经接近收敛。

多元线性回归

在现实生活中,不可能只靠面积就能判断一栋房子的价格,当然还得考虑其他因素,比如卧室的数量,所处的楼层数,房子已经使用的年数等等,这就是所说的多远线性回归,其假设函数为:
机器学习系列之(一) 线性回归
其中x1,x2…xn代表不同的因素,在机器学习中,我们称之为特征,θ0,θ1…θn代表对于每个特征的参数,也可以说是权重,这里设定x0=1,改成向量化的表示方式,假设函数还可以表示成:
机器学习系列之(一) 线性回归
那么代价函数为:
机器学习系列之(一) 线性回归
相应的,梯度下降过程为:
机器学习系列之(一) 线性回归

注意几点:

  1. 单变量和多变量的梯度下降过程极其相似,原因很简单:梯度下降的导数项是偏导项,只针对一个参数进行求偏导。
  2. 在多变量中的偏导项中,后面的关于x的项,其只是和对应θ相对应的项,不是所有的x。

技巧

在梯度下降时,为了加快训练速度,可以采用特征缩放和均值归一化的操作。可以参考网址
为了得到非线性的假设函数,还可以使用多项式回归,不过这个方式使用的较少,这里不多做介绍了。可以参考网址