入门机器学习(一)--单变量线性回归

写在前面

本系列依据吴恩达机器学习课程,对每一节课进行提炼和总结,并结合课后作业进行相应的讲解。由于原课程的课后作业是用MATLAB完成的,本系列为了方便,将用python实现课后作业。

1.模型描述

以预测房价为例,训练集为:

入门机器学习(一)--单变量线性回归

用以下指标来对模型进行描述:

m:训练集的数目

x's:输入变量/输入特征

y‘s: 输出变量/目标变量

(x,y):一个训练样本

(x(i),y(i)):第i个训练样本

监督学习的过程:将训练数据集作为输入,进行算法的学习,然后输出一个假设函数,命名为h.即hypothesis

入门机器学习(一)--单变量线性回归

单变量的假设函数为:

入门机器学习(一)--单变量线性回归

其中的参数有两个,分别是:

入门机器学习(一)--单变量线性回归

2. 代价函数

单变量线性回归的代价函数为:

入门机器学习(一)--单变量线性回归

该代价函数也称为平方误差函数,前面的1/2m项是为了求解J函数最小值的时候方便计算。

我们目标是求得使代价函数取最小值时的参数值,即:

 

入门机器学习(一)--单变量线性回归

补充一个知识点:

代价函数,损失函数,目标函数三个函数之间的区别

损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。

代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。

目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是Cost Function + 正则化项)。

关于目标函数和代价函数的区别还有一种通俗的区别:目标函数是最大化或者最小化,而代价函数是最小化。

关于代价函数J的三维图像为:

入门机器学习(一)--单变量线性回归

该函数是凸函数,大多数代价函数都是凸函数,凸函数有个特点:凸函数没有局部最优解,只有全局最优解

3. 梯度下降法

梯度下降法是求解代价函数最优化很普遍的方法,其基本思路为:

初始化参数θ,慢慢的改变参数,使代价函数J越来越小。

从图像上可以很形象地看出来梯度下降法的思路:

入门机器学习(一)--单变量线性回归

初始化参数θ0和θ1(如图左峰最上方一点),朝着下降最快的方向进行移动,每移动一步,就重复之前的步骤,直到到达局部最低点。如果换个起始点,可能到达的就是另一个局部最低点,如下图所示。

入门机器学习(一)--单变量线性回归

梯度下降法的迭代公式为:

入门机器学习(一)--单变量线性回归

其中j的值域为:

入门机器学习(一)--单变量线性回归

在该迭代公式中,

“:=”符号的意思是赋值,类似于C/C++中的“=”

赋值号左边的为下一步要达到的点,赋值号右边的为本次迭代的起始点

α为步长,也称为学习率,步长过长可能导致不收敛从而得不到结果步长过短会延长找到最低点的时间,所以选一个合适的步长很重要。

最后一项对代价函数J求偏导带表着前进方向,如果偏导数大于0,那θ就沿着负方向移动如果偏导数小于0,那θ就沿着正方向移动

在此注意:

计算偏导数的时候要同步,也就是按照以下步骤计算:

入门机器学习(一)--单变量线性回归

入门机器学习(一)--单变量线性回归

并不是:

入门机器学习(一)--单变量线性回归

这样在计算temp1的时候,θ0已经被更新了,这样计算θ1的时候是错误的。

4. 线性回归的梯度下降

这部分主要是将梯度下降法应用到线性回归当中

入门机器学习(一)--单变量线性回归

其中最重要的就是关于迭代公式中偏导数的求解,下面对其求偏导的过程进行演算:

入门机器学习(一)--单变量线性回归

入门机器学习(一)--单变量线性回归

对j分情况进行求偏导:

入门机器学习(一)--单变量线性回归

入门机器学习(一)--单变量线性回归

所以梯度下降算法可以表示为:

入门机器学习(一)--单变量线性回归

该梯度下降法会在之后的作业练习中用来,届时它的用法会做详细的说明。