一元线性回归的算法思想

所谓的一元线性回归其实就是找到一条直线,使得该条直线可以以最小的误差(Loss)来逼近拟合训练数据

最小二乘法配合梯度下降算法,就是一个完整的线性回归过程

本章知识点:

1. 最小二乘法表示

2. 梯度下降法原理

3. 复合函数求导过程

下面假设我们有N个二维训练数据点,我们的预测函数为h(x) = m * x + b

N个二维离散点

我们希望研究这群离散点的关系,我们不妨假设其关系是线性的,那么我们需要计算出一条直线L ,使得L距离每一个离散点都很近

最好的情况,我们希望所有的离散点都在L上,也就是满足L的方程,但是一条直线去拟合所有的点肯定是不现实的(不可能所有的点都满足线性关系)所以我们希望找到的L离所有的数据点尽可能的靠近,既找到每一个点(xi,yi)和L距离最小值 d = | yi - (m * xi + b)|,我们对N个d进行求和,由最小二乘法来表示误差函数为:

误差函数一

其中i表示第i个点,N表示样本总数,我们将Loss求和平均来作为最终的损失:

误差函数二

现在我们有了预测函数h(x)和损失函数Loss,那么我们怎么求出这条直线L来最好的拟合数据集呢?

其实也就是求L损失函数的最小化误差,这里一般有两个方法

1. 求函数极值

我们把Loss看成由m和b组合的二元函数,其中x,y,i,N均是已知的,那么求Loss最小值的问题就是求函数极值为题,利用基本的高数知识,我们需要求出每个变量的偏导数,并求解这组方程组:

偏导数求极值

涉及简单的复合函数求导和求和求导,非常基础的高数知识,我们只要用数学知识直接解出m和b,就可以得到L的方程

但是这不是一个最可靠的方法,因为计算机不适合直接求解数学方程的解,计算机是没有学过高等数学的,它只知道基本的加减乘除(本质上基于加法器实现),而计算机的计算能力非常出众,远远超过人类,我们应该从基本的数学定理的原理出发告诉计算机做某个基本的变化,让其迭代更新,用计算量换取结果,所以我们应该利用梯度下降法去逼近真实结果

2. 梯度下降法

这是一个非常神奇的算法,可以说没有它,就没有现在的深度学习,几乎所有的深度学习模型都会用到梯度下降算法,如最经典的反向传播算法,对所有参数使用梯度下降算法,使得神经网络模型的各个参数在训练数据上的损失函数尽可能小,也就是模型参数最合理,再一次的让神经网络发生了质变

其基本思想是:沿着损失(代价)函数梯度下降的方向搜索极小值(同理也可以沿着梯度上升的方向搜索极大值)

我们设x表示方程中的变量参数,J(x)表示在给定的参数取值下,训练数据集上损失函数的大小,那么整个优化的过程可以抽象为寻找一个适合的参数x,使得J(x)最小,而目前没有一个通用的方法可以对任意损失函数直接求解最佳的参数取值,而梯度下降算法会不断迭代更新参数x,即让参数x沿着总损失很小的方向去更新

梯度下降算法示意图

从上图中我们看到当x = 3.5时候,J(x)取得最小值,而最低点左侧的斜率是负值,另外一侧斜率是正值,这是再好不过的收敛条件,我们只要沿着梯度的方向一点一点的下滑,下滑的过程就是求导,下滑的次数,就是迭代,而每次需要下滑多长,需要通过步长来决定,所以我们还需要定义一个步长表示每次下滑的距离

一般来说,我们也将步长叫做学习率,而如何加速算法收敛速度和防止收敛过程中发生震荡,是一门值得研究的学问,有很多成熟的方法,如冲量策略,衰减因子策略等,这里不深入讲解

现在定义了学习率和迭代次数,我们就可以在迭代的过程中,一边求梯度,一边下滑更新参数了

很明显,我们需要在滑动中更新参数m和参数b

更新参数

因为梯度存在方向,所以我们使用加号并不会影响参数的更新

下面用python配合numpy模拟实现梯度下降算法过程

计算梯度,更新参数
迭代梯度下降算法

现在,我们利用梯度下降算法来优化Loss函数后,也得到了相应的m和b的值,那么也就找到了直线L = m*x + b,使得L以最小的误差去拟合训练数据

一元线性回拟合结果

代码和测试数据见:一元线性回归

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容