zoukankan      html  css  js  c++  java
  • 线性回归——最小二乘法(二)

    上篇文章中介绍了单变量线性回归,为什么说时单变量呢,因为它只有单个特征,其实在很多场景中只有单各特征时远远不够的,当存在多个特征时,我们再使用之前的方法来求特征系数时是非常麻烦的,需要一个特征系数一个偏导式,而却最要命的时特性的增长时及其迅猛的,几十、几百、几千……

    单变量线性回归:
    多变量线性回归:

      所以从这里我们开始将介绍线性回归的另一种更方便求解多变量线性回归的方式:最小二乘法矩阵形式

    模型变换

      线性回归的标量形式:

      这里把上诉式子中的系数m与误差c转换为向量(为了统一从下面开始使用
    表示c与m),把式子中c看成是1c,把1与特征x也转换为向量;

    所以有:

    损失函数

      损失函数也可以变为:

      根据矩阵乘积转置规则损失函数可以进一步化简为:


    偏导数

      还是和之前一样求损失函数L的极小值,所以求上式L关于W的偏导数;

    向量微分常用等式

    求L关于W的偏导数:

    因为

    则有:

    W则是通过矩阵形式求出来的最小乘法的解;

    示例

      下面还是先使用上次的那组数据进行线性拟合,然后再使用多变量数据再次进行线性拟合已验证上诉算法:

    单变量线性回归示例:

    这里使用上面得到的最小二乘法矩阵形式公式对以下数据集进行线性拟合:

    n x y
    1 2 4
    2 6 8
    3 9 12
    4 13 21

    x、y的矩阵为:

    根据公式求w

    以下子求整个式子不好求,我们可以先分解该公式;



    所以,也就是c=-0.23092,m=1.53092

    线性回归函数可以写成:y = 1.53092x -0.23092

    预测y的值:

    y = 1.53092 * 2 - 0.23092=2.83092
    y = 1.53092 * 6 - 0.23092=8.9546
    y = 1.53092 * 9 - 0.23092=13.54736
    y = 1.53092 * 13- 0.23092=19.67104

      与上偏文章直接求关于m与c的偏导得出来的结果几乎一样(因为小数点不同所以精度有所差异);下篇文章我们将使用本篇文章里的最小二乘法矩阵形式处理多变量的情况;

    参考资料:
    https://zh.wikipedia.org/zh/最小二乘法
    a first course in machine learning

    文章首发地址:Solinx
    http://www.solinx.co/archives/721

  • 相关阅读:
    LeetCode Single Number
    Leetcode Populating Next Right Pointers in Each Node
    LeetCode Permutations
    Leetcode Sum Root to Leaf Numbers
    LeetCode Candy
    LeetCode Sort List
    LeetCode Remove Duplicates from Sorted List II
    LeetCode Remove Duplicates from Sorted List
    spring MVC HandlerInterceptorAdapter
    yum
  • 原文地址:https://www.cnblogs.com/softlin/p/5965939.html
Copyright © 2011-2022 走看看