我对线性回归算法的理解

概述

本文旨在简明扼要的阐述我对线性回归算法的理解,线性回归是属于监督学习,根据其特征取值可分为一元线性回归和多元线性回归,本文主要以一元线性回归为主。

首先,插播一则小广告(本人笔名由以前的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=1,套用公式:
假设θ_1=0.5,套用公式:

假设θ_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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容