• 线性回归数学推导


    个人掘金链接

    个人博客原文链接

    一、数学基础

    似然函数

    概率(probability):描述已知参数时的随机变量的输出结果;

    似然函数(likelihood):用来描述已知随机变量输出结果时,未知参数的可能取值。

    [L( heta | x) = f(x | heta) ]

    似然函数和密度函数是完全不同的两个数学对象,前者是关于( heta)的函数,后者是关于(x)的函数。

    高斯分布

    数学期望(mean):试验中,每次可能结果的概率乘以其结果的总和。

    (伯努利)大数定律:当试验次数足够多时,事件发生的频率无穷接近于该事件发生的概率。

    伯努利试验:设试验E只可能有两种结果:“A”和“非A”

    n重伯努利试验:将E独立的重复地进行n次,则称这一穿重复的独立试验为n重伯努利试验

    二项分布(伯努利分布):将一伯努利试验重复了n次,在这n次试验中成功次数k,k为随机变量,称为二次随机变量,其分布称为二项分布

    [P(X = k) = C_n^kp^k(1-p)^{n-k} , k = 1,2,...,n ]

    正态分布:又称“高斯分布”

    [f(x) = frac 1 {sqrt{2 pi }sigma} e ^ {- frac {(x^2-mu^2)} {2sigma^2}} ]

    对数公式

    [log AB = log A + log B ]

    矩阵计算

    矩阵转置:行变列,列变行。

    矩阵乘法:A的列数必须与B的行数相等

    [A = left[ egin{matrix} a & b & c end{matrix} ight] \\ B = left[ egin{matrix} e & f & g end{matrix} ight] \\ A^T B = ae + bf + cg ]

    矩阵求导

    [frac {d( { x ^ T A X } )} {d(x)} = 2Ax \\ frac {d( { x ^ T A } )} {d(x)} = A \\ frac {d( { A x} )} {d(x)} = {A ^ T} ]

    二、推导

    线性回归公式

    [y = wx + b ]

    当存在多个特征参数的时候,不同的特征参数对目标函数值有不同的权重参数。

    [h_ heta(x) = heta _ 1 x _ 1 + heta _2 x _ 2 + ... + heta _n x _ n \\ = sum_{i=1}^n heta _ i x _ i ]

    使用矩阵来表示

    [ heta^T x = left[ egin{matrix} heta _ 1 \\ heta _ 2 \\ .\\ .\\ .\\ heta _ n \\ end{matrix} ight] left[ egin{matrix} x _ 1 & x _ 2 & ... & x _ n end{matrix} ight] = sum_{i=1}^n heta _ i x _ i = h_ heta(x) ]

    计算误差

    误差项:真实值和预测值之间存在的一个误差,我们通常希望误差越小越好。

    [h_ heta(x) = heta ^ T x + xi ]

    [y ^ {(i)} = heta ^ T x ^ {(i)} + xi ^ {(i)} ]

    误差项符合高斯分布,所以

    [P(xi _ i) = frac 1 { sqrt {2 pi } sigma} e ^ { - frac { xi ^ 2 } { 2 sigma ^ 2}} ]

    [P(y _ i | x _ i ; heta) = frac 1 { sqrt { 2 pi } sigma } e ^ { - frac { { (y _ i - heta ^ T x _ i)} ^ 2 } {2 sigma ^ 2 } } ]

    要计算某些参数和特征组合让误差最小,这里引入似然函数

    [L( heta) = prod_{ i=1 }^{ m } P(y _ i | x _ i ; heta) = prod_{i=1}^{m} frac 1 { sqrt{2 pi } sigma } e ^ {- frac { { (y _ i - heta ^ T x _ i) } ^ 2 } { 2sigma^2 } } ]

    [log L( heta) = log prod_{i=1}^{m} frac 1 { sqrt{ 2 pi }sigma } e ^ { - frac { { ( y _ i - heta ^ T x _ i ) } ^ 2 } { 2sigma^2 } } ]

    [= sum_{i=1}^{m} log frac 1 { sqrt{ 2 pi }sigma } e ^ { - frac { { (y _ i - heta ^ T x _ i) } ^ 2 } { 2sigma^2 } } ]

    [= sum_{i=1}^{m} ( log frac 1 { sqrt{ 2 pi }sigma } + log e ^ { - frac { { ( y _ i - heta ^ T x _ i ) } ^ 2 } { 2 sigma ^ 2 } }) ]

    [= m log frac 1 { sqrt{ 2 pi }sigma } - frac 1 { 2 { sigma } ^ 2 } sum_{i=1}^{m} { ( y _ i - heta ^ T x _ i ) } ^ 2 ]

    因不考虑定值,得出(J( heta))越小越好

    [J( heta) = frac 1 {2} sum_{i=1}^{m} {(y _ i - heta ^ T x _ i)} ^ 2 ]

    矩阵求偏导

    根据矩阵知识,将上式转换

    [J( heta) = frac 1 {2} sum_{i=1}^{m} {(h _ heta(x _ i) - y _ i)} ^ 2 ]

    [= frac 1 {2} (x heta - y) ^ T (x heta - y) ]

    对矩阵求偏导

    [partial_ heta J( heta) = partial _ heta ( { frac 1 {2} (x heta - y) ^ T (x heta - y) } ) ]

    [= partial_ heta { ( frac 1 {2} ( heta ^ T x ^ T - y ^ T ) (x heta - y) ) } ]

    [= partial _ heta { ( frac 1 {2} ( { heta ^ T x ^ T x heta } - { heta ^ T x ^ T y } - {y ^ T x heta } + {y ^ T y } ) } ]

    [= frac 1 {2} ( { 2 x ^ T x heta } - { x ^ T y } - { (y ^ T x) ^ T } ) ]

    [= {x ^ T x heta} - { x ^ T y} ]

    最终求解

    最好的情况是,偏导数为0,说明梯度递减已经到达最底部

    线性回归最优权重求解如下:

    [ heta = {(x ^ T x) ^ {-1}} {x ^ T} y ]

  • 相关阅读:
    LeetCode题解之Flipping an Image
    LeetCode 之Find Minimum in Rotated Sorted Array
    LeetCode题解Transpose Matrix
    LeetCode 题解之Minimum Index Sum of Two Lists
    LeetCode题解之Intersection of Two Linked Lists
    LeetCode 题解之Add Two Numbers II
    LeetCode题解之Add two numbers
    href="#"与href="javascript:void(0)"的区别
    有关ie9 以下不支持placeholder属性以及获得焦点placeholder的移除
    ie7下属性书写不规范造成的easyui 弹窗布局紊乱
  • 原文地址:https://www.cnblogs.com/fonxian/p/10332890.html
Copyright © 2020-2023  润新知