美文网首页
一元线性回归的算法思想

一元线性回归的算法思想

作者: PrivateEye_zzy | 来源:发表于2017-10-23 15:44 被阅读0次

所谓的一元线性回归其实就是找到一条直线,使得该条直线可以以最小的误差(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以最小的误差去拟合训练数据

一元线性回拟合结果

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

相关文章

  • 2020-08-13--线性回归01

    线性回归算法简介 解决回归问题 思想简单,容易实现 许多强大的非线性模型的基础 结果具有很好的 线性回归分为一元线...

  • 机器学习系列(十一)——线性回归Linear Regressio

    线性回归算法 和knn算法不同,线性回归算法主要用于解决回归问题,它同样思想简单,实现容易,而且是许多强大的非线性...

  • 一元线性回归的算法思想

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

  • [FM]从线性回归到FM模型

    一.线性回归 线性回归是万物之源,其基本思想贯穿了很多算法的推导中。 线性回归的模型是: ...

  • 我对线性回归算法的理解

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

  • 2020-02-14

    线性回归:线性回归分为一元线性回归和多元线性回归,一元线性回归用一条直线描述数据之间的关系,多元回归是用一条曲线描...

  • 第八节线性回归

    1线性回归算法特点 线性回归主要用于解决回归问题;思想简单,实现容易;许多强大的非线性模型的基础;结果具有很好的可...

  • Matlab一元/多元回归(后续会有更新)

    一元线性回归&一元非线性回归 多元回归/逐步回归 多元回归 先画散点图,看有没有线性性质,再决定能不能用多元线性回...

  • 多元线性回归

    概述 之前我们讲了最基本、最简单的一元线性回归算法,本章主要讲解多元线性回归,以及梯度下降、特征缩放和正规方程解等...

  • 线性模型

    1. 基本形式 即已知x,y通过机器学习的算法求得w与b 2.线性回归 2.1 问题描述 2.2 一元线性回归 2...

网友评论

      本文标题:一元线性回归的算法思想

      本文链接:https://www.haomeiwen.com/subject/psaiuxtx.html