机器学习入门之单变量线性回归(上)——梯度下降法

统计学中,线性回归(英语:linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归(multivariate linear regression)。——————维基百科

  一直以来,这部分内容都是ML的敲门砖,吴恩达教授在他的课程中也以此为第一个例子,同时,本篇也参考了许多吴教授的内容。

  在这里,我简单把自变量称为x,因变量称为y。在单变量线性回归中,x是一个一维的连续值。

  单变量线性回归即是为所给数据,拟合一个最优方程,也就是划出一条最符合原始数据的线(通常要求数据为连续值)。

  在本篇,我们将用梯度下降的方法,拟合出一条与原始数据最接近的直线,换言之,找到拟合效果最好的直线方程。

  设直线方程如下:

     (θ0即是常数项,或者说是一个常数偏移值)

  在学习梯度下降法之前,我们还需要了解一些前缀知识,包括但不限于:

  • 归一化(数据预处理)

  归一化公式:

    

  归一化是一种把数据映射到[0, 1]区间内的预处理,在本例中,这样处理主要是为了提高梯度下降收敛的速度。

  • cost 函数

  cost函数(function)是一个评估回归模型是否拟合得好的函数,cost越低的函数,说明模型拟合数据集越好。

  在本例中,采用了比较常用的方差,即

     

  • 梯度 (gradient)以及迭代项的推导

  梯度是函数在变化最快的方向上的方向导数,它是偏导的一种应用(这部分知识可参考微积分或高等数学内容,虽然即使不了解也可直接使用推论,但如果想深入学习的话还是吃透为好)。按梯度的定义可知:

  

  这部分是对θ1的偏导,对θ0的偏导可自行推导,与以上差别不大。若有疑惑(为什么对cost 函数求梯度?),请往下看。

  了解完以上内容后,我们知道,对于给定的θ1和θ0,我们凭借cost 函数就能评估出他们的好坏(cost越小,拟合越好)。同时,我们知道不论对于θ1/0来说,必然存在某个最准确、拟合效果最好的值,一旦偏离这个值,偏离得越远,拟合效果就越差,cost 函数的值也就越大。

  假设θ0恒为0,那么cost 函数关于θ1的函数的图像应当为一个类似山谷的形状,如下图:

      

  最低点即使拟合最好的θ1(cost最小)。

  同理,假设θ0不恒定,那么图像将有两个自变量,形状大致像一个碗,如下图:

      (图源吴教授课程)

  易得,在‘碗’的最低点(θ0‘, θ1‘)即是拟合效果最好的θ0与θ1,那么如何找到这个最低点呢?

  梯度下降是这么认为的,首先随机取一个点,然后按梯度方向去迭代点,让点越来越趋近,最后收敛于最低点。

  打个比方:人在山上想下山,他环顾四周,控制一定的步伐,按最近的路径走下去,就能最快抵达山下。

  原理很简单,但是这个迭代公式该如何求呢?

  答案也不难,就是按照梯度的概念来:

       (偏导部分在前缀知识部分有说明)

  伪代码:

    ① 随机初始化点

    ② 按照一定的比例/步伐(学习率),往梯度向下的方向迭代

    ③ 收敛或精度足够时停止

  可能有的人不太懂收敛的原因,这部分涉及到微积分的知识,大致这样:

  当点越趋近最低点时,偏导会越来越小,直至为0,此时收敛。可以认为在接近最低点的过程中,切向量的值逐渐减小,到达最低点时,切向量为0,此时不论如何迭代,θ的值都不再变化。

  我们知道,前面的原理部分并没有涉及到α学习率(learning rate)这个概念,那么这个东西是要干什么呢?

  看过吴教授课程的同学可能知道,在下降的过程中,如果步伐太大的话,是无法收敛到最低点的,如果不加上α来控制步伐大小,在很多情况下,都可能导致无法找到最低点。

  为了解决这个问题,梯度下降引入了α来控制下降的步伐大小,确保能够收敛。但同时,α太小的话,也会导致收敛过慢。

  需要着重说明的是θ1和θ2应该严格同步更新,按我的理解来,这是因为梯度是基于当前点的最大变化值,如果异步更新的话,比方说我们先更新θ1,然后再遍历更新θ0,此时更新θ0是基于新的θ1,所以不满足梯度的要求。

  

  顺带一提,梯度下降总会收敛于局部最小值。不过在单变量线性回归中,局部最小值即是全局最小值。

  

  以上就是单变量线性回归的内容,接下来我们将尝试应用于数据集:

  给出一个数据集(工作经验与年薪)如下:

YearsExperience
Salary
1.1
39343.00
1.3
46205.00
1.5
37731.00
.... ....

  文末将给出下载地址。

  首先对数据进行归一化,提高收敛速度。然后我们简单地设置α为0.01,精度为1e-4,最大迭代次数为1e4。

  这里是拟合效果图:

  

  可以看到效果还是比较理想的,接下来是cost的变化图像:

  

  可以看到大致迭代3000次的时候基本收敛了,由于收敛值大于精度,所以程序把迭代次数都执行了一遍。

  

  总结:

    这部分内容应该说相当好上手,主要把握好梯度这个概念,之后就都不难了。并且梯度下降在机器学习中有比较广泛的应用,所以对它的学习必不可少。

    数据集和代码我都推到github上了,有需要请点击:https://github.com/foolishkylin/workspace/tree/master/machine_learning/getting_started/gradient_descent/liner_regression_single

原文地址:https://www.cnblogs.com/rosehip/p/10983543.html

时间: 2024-10-10 13:11:51

机器学习入门之单变量线性回归(上)——梯度下降法的相关文章

Stanford机器学习课程笔记——单变量线性回归和梯度下降法

Stanford机器学习课程笔记--单变量线性回归和梯度下降法 1. 问题引入 单变量线性回归就是我们通常说的线性模型,而且其中只有一个自变量x,一个因变量y的那种最简单直接的模型.模型的数学表达式为y=ax+b那种,形式上比较简单.Stanford的机器学习课程引入这个问题也想让我们亲近一下machine learning这个领域吧~吴恩达大神通过一个房屋交易的问题背景,带领我们理解Linear regression with one variable.如下: 不要看这个问题简答,大神就是大神

Stanford机器学习Week 1—单变量线性回归

本篇讲述以下内容: 单变量线性回归 代价函数 梯度下降 单变量线性回归 回顾下上节,在回归问题中,我们给定输入变量,试图映射到连续预期结果函数上从而得到输出.单变量线性回归就是从一个输入值预测一个输出值.输入/输出的对应关系就是一个线性函数. 下面是一个根据房屋面积预测房屋价格的例子. 假设有一个数据集,我们称作训练集,数据集包括房屋面积和房屋价格数据. x:表示输入变量,也叫特征变量. y:表示输出变量,也叫目标变量. (xi,yi):表示一个识训练样本,训练集的一行.i 表示 第 i 个训练

机器学习:单变量线性回归及梯度下降

******************************************************************************* 注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的<机器学习>课程笔记.博主深感学过课程后,不进行总结很容易遗忘,根据课程加上自己对不明白问题的补充遂有此系列博客.本系列博客包括线性回归.逻辑回归.神经网络.机器学习的应用和系统设计.支持向量机.聚类.将维.异常检测.推荐系统及大规模机器学习等内容. *******

Andrew Ng机器学习第一章——单变量线性回归

监督学习算法工作流程 h代表假设函数,h是一个引导x得到y的函数 如何表示h函数是监督学习的关键问题 线性回归:h函数是一个线性函数 代价函数 在线性回归问题中,常常需要解决最小化问题.代价函数常用平方误差函数来表示 代价函数就是用于找到最优解的目的函数,这也是代价函数的作用 ps:尽可能简化问题去理解一些抽象概念,如单一的参数变化等等 可以利用代价函数去寻找你拟合效果最好的假设函数的参数 当参数很多时,利用图表来寻找最小代价函数就变得比较复杂,故引出梯度下降法. 梯度下降法最小化任意代价函数J

机器学习门户网站——单变量线性回归

线性回归的概念.在高中的数学书出现了. 给你一些样本点,怎样找出一条直线,使得最逼近这些样本点. 给出一个样例:如果 x 是房子面积,y是房子价格.确定一条直线须要theta0和theta1. 给出x,我们就能够计算出房子的价格 h(x) = theta0+theta1*x 关键是怎样计算出theta0和theta1,也就是怎样找出这么一条直线呢? 在这里,引入一个概念,叫做cost function.m表示样本个数,也就是训练样本数目 这是一个square error.学过统计的应该常常见到

机器学习【第二篇】单变量线性回归

吴恩达机器学习笔记整理--单变量线性回归 通过模型分析,拟合什么类型的曲线. 一.基本概念 1.训练集 由训练样例(training example)组成的集合就是训练集(training set), 如下图所示,其中(x,y)是一个训练样本,训练集中每一行表示一个训练样本;(x^i,y^i)表示第i个训练样本. 2.假设函数h 使用某种学习算法对训练集的数据进行训练, 我们可以得到假设函数(Hypothesis Function), 如下图所示. 在房价的例子中,假设函数就是一个房价关于房子面

机器学习入门——单变量线性回归

线性回归的概念,在高中数学书里就出现过. 给你一些样本点,如何找出一条直线,使得最逼近这些样本点. 给出一个例子:假设 x 是房子面积,y是房子价格,确定一条直线需要theta0和theta1. 给出x,我们就可以计算出房子的价格 h(x) = theta0+theta1*x 关键是如何计算出theta0和theta1,也就是如何找出这么一条直线呢? 在这里,引入一个概念,叫做cost function.m表示样本个数,也就是训练样本数目 这是一个square error,学过统计的应该经常见到

机器学习之单变量线性回归(Linear Regression with One Variable)

1. 模型表达(Model Representation) 我们的第一个学习算法是线性回归算法,让我们通过一个例子来开始.这个例子用来预测住房价格,我们使用一个数据集,该数据集包含俄勒冈州波特兰市的住房价格.在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集: 我们来看这个数据集,如果你有一个朋友正想出售自己的房子,如果你朋友的房子是1250平方尺大小,你要告诉他们这房子能卖多少钱. 那么,你可以做的一件事就是构建一个模型,也许是条直线.从这个数据模型上来看,也许你可以告诉你的朋友,他大概

机器学习 Machine Learning(by Andrew Ng)----第二章 单变量线性回归(Linear Regression with One Variable)

第二章 单变量线性回归(Linear Regression with One Variable) <模型表示(Model Representation)>                                                             <代价函数(Cost Function)>                                                          <梯度下降(Gradient Descent)