zoukankan      html  css  js  c++  java
  • 线性回归数学推导

    个人掘金链接

    个人博客原文链接

    一、数学基础

    似然函数

    概率(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 ]

  • 相关阅读:
    eclipse提速01
    eclipse提速02
    快速清空Access资料库中所有表的数据
    删除数据之后自增长列重新开始计数
    JS中控制两个小数位
    JS控制table中tr位置互换
    MIME 类型列表
    JS中对于email格式的判断
    获取网站根目录的方法
    通过存储过程创建SQL作业
  • 原文地址:https://www.cnblogs.com/fonxian/p/10332890.html
Copyright © 2011-2022 走看看