概述
本文旨在简明扼要的阐述我对线性回归算法的理解,线性回归是属于监督学习,根据其特征取值可分为一元线性回归和多元线性回归,本文主要以一元线性回归为主。
首先,插播一则小广告(本人笔名由以前的Allen改为Anuo.)谢谢!
例子
假设您要出售一套房子,您想预测下到底能买多少钱?您从中介那里得到一些房价信息,我们拿到的数据如下:我们的目标就是要找出如上图的红色线条函数,让它尽可能的拟合实际的数据,这样我们就可以预测出房子大小x时可卖y刀啦。
上面从中介那里得到的数据就是我们的训练集,我们希望通过它来预测,当房子大小为x时能买多少钱y。所以,我们的假设函数如下:
根据上面的训练数据,可以推导出:
x=852时,y=178
x=1416时,y=232
以此类推,我们的最终目标就是通过这些训练数据,找到θ_0 和θ_1 的取值,来确定我们的线性函数,这个过程就叫线性拟合。那么如何进行线性拟合呢?
模型
线性回归中我们要解决的是最小化的问题,上面说了,我们的目标是要找到θ_0和θ_1的取值,来使我们的预测值ℎ𝜃 (x)最接近真实值y,所以需要得到的是ℎ𝜃 (x) − y的值最小,公式如下:
进一步演变公式:
其中,m为训练集样本数,1/2𝑚是我们要尝试尽量减少平均误差,只是为了数学更直白一点。因此对这个求和值的二分之一求最小值,应该得出θ_0和θ_1的值来。
简单地说,我们要做的就是找到能使训练集中预测值和真实值的差的平方和的1/2m最小的θ_0和θ_1的值,这就是线性回归的整体目标函数。最终得到我们的代价函数如下:
代价函数
假设θ_0 =0,那么我们的公式就得以简化,如下图所示:
假设我们的训练集为(1,1),(2,2),(3,3)…
假设θ_1=0,继续套用公式,可以得到J(0)=2.3,以此类推,根据假设值我们可以得到若干个点,(0,2.3),(0.5,0.58),(1,0)... 可以画出如下所示的图形:
如上图所示,每一个θ_1 的取值都对应着一条hθ(x) 函数直线,如上图所示,当θ_1=1时J(θ1) 的值最小,且刚好与我们的训练集重合,完美的拟合了训练数据。
当我们只有一个参数θ_1时,我们画出的图形是一个二维的平面碗状图形,当我们有两个参数θ_0和θ_1时,我们的代价函数的图形就变成如下图形:
这是一个3D曲面图,坐标为𝜃_0和𝜃_1,曲面的高度就是J(θ0, θ1)的值,当取不同的𝜃_0和𝜃_1值时,可以得到对应的J(θ0, θ1)的值。
如何得到𝜃_0和𝜃_1的值呢?我们可以采用梯度下降法。
梯度下降
梯度下降的算法为重复以下算法直到收敛:
其中 := 为赋值,𝛼为学习率,𝜕/𝜕𝜃𝑗求𝐽(𝜃0, 𝜃1) 的偏导。
学习率相当于步进,决定收敛算法的快慢,学习率较小,则收敛速度较慢,学习率较大,则收敛速度较快,但如果学习率过大,则可能导致发散而无法收敛。
线性回归与梯度下降
前面我们已经得到线性回归模型和梯度下降算法,这里将介绍如何结合两者,产生机器学习的第一个算法线性回归算法。
根据已得到的模型,进行如下推导:
采用多元微分法可得到j=0(𝜃_0)和1(𝜃_1 )时的偏导函数如下:
最终,我们得到线性回归梯度下降算法如下:
结束
好啦,以上是最基本、最简单的线性回归算法,本文注重理论,可能稍显枯燥,后面我会继续分析算法的优化,多元线性回归,并结合实例进行阐述。
让人遗憾的是,简书不支持数学公式,所以我大部分地方是从我的word文档里面贴图过来的,花费我大量的时间不说,可能有些地方难免会失去数学本来的味道。
写这篇文章的目的,一是帮助自己加深对机器学习算法的理解;二是很希望能帮助到需要的同学,大家共同进步。
本人知识水平有限,如有错误之处,还请不吝斧正。
致谢:Andrew Ng发布的教学视频和资料。
Anuo.
成都
Aug 28,2018