zoukankan      html  css  js  c++  java
  • 简单多元线性回归(梯度下降算法与矩阵法)

    from:https://www.cnblogs.com/shibalang/p/4859645.html

    多元线性回归是最简单的机器学习模型,通过给定的训练数据集,拟合出一个线性模型,进而对新数据做出预测。

    对应的模型如下:

    n: 特征数量。

    一般选取残差平方和最小化作为损失函数,对应为:

    M:训练样本数量。

    通过最小化代价损失函数,来求得 值,一般优化的方法有两种,第一是梯度下降算法(Gradient Descent),第二种是矩阵法(The normal equations)。

    梯度下降算法

    一个初始值,然后逐步的迭代改变的值,是代价损失函数逐次变小,使每次都往梯度下降的方向改变:

    表示下降速度。

    为了求偏导数,当只有一个样本时,即

    即:

    当有多个训练样本时,下降梯度算法即为:

    由于每次迭代都需要计算所有样本的残差并加和,因此此方法也叫做批下降梯度法(batch

    gradient descent),当有大规模数据时,此方法不太适合,可采取它得一个变种,即每次更新权重时,不是计算所有的样本,而是选取其中一个样本进行计算梯度,这个方法叫做随机下降梯度法(stochastic gradient descent):

    随机下降梯度法与下降梯度法对比可能收敛更快,但是可能找不到最优点而在最优点附近徘徊。

     

    矩阵求解法

    由于梯度下降算法需要多次迭代,并且需要指定下降速率,如果下降速度过快则可能错过最优点,如果过慢则需要迭代多次,因此还可选用矩阵法求解。

    首先,需要定义一些用到的线性代数知识:

    对于一个函数,表示一个输入mxn的矩阵,输入为一个实数,即输入x为矩阵,则对此函数求导数为:

    即对矩阵中每个元素求导,结果也为一个m*n的矩阵。

    另外,定义矩阵的迹trace,为矩阵主对角线元素之和:

    如果A为实数a,则 tr a=a。

    以下是关于矩阵迹的一些性质:

    对于多元线性回归,将训练数据的特征作为一个矩阵:

    同时将其对应的y值也作为一个矩阵:

    因此,

    求导数,且:

    则:

    令上式为0,则

    以上即为矩阵法的推导,其中涉及到线性代数的知识没有证明,只要将给定的公式带入求导即可得出此结论。

    矩阵法与下降梯度法对比好处是不需要多次迭代,一次计算即可得出精确结果,但当数据量过大时,即设计矩阵X过大时,对矩阵的乘法即求逆有很大计算复杂度,因此此方法适用于小规模数据。另外,用矩阵法时不需要对输入特征数据中心化。

     

     

    总结

    以上就是简单多元线性回归,及其对应的下降梯度算法与矩阵算法,虽然简单,但是其他一些复杂算法的基础。

  • 相关阅读:
    将迁移学习用于文本分类 《 Universal Language Model Fine-tuning for Text Classification》
    深度 | 提升深度学习模型的表现,你需要这20个技巧(附论文)
    [线性代数] 矩阵白化
    基于搜索的贝叶斯网络结构学习算法-K2
    Deep learning:四十三(用Hessian Free方法训练Deep Network)
    2020年AI、CV、NLP顶会最全时间表
    浅谈人脸识别中的loss 损失函数
    控制uniFrame显示的一个管理类
    php+sqlserver之如何操作sqlserver数据库
    php支持连接sqlserver数据库
  • 原文地址:https://www.cnblogs.com/bonelee/p/8996304.html
Copyright © 2011-2022 走看看