精华内容
下载资源
问答
  • 线性回归——正规方程推导过程 我们知道线性回归中除了利用梯度下降算法来求最优解之外,还可以通过正规方程的形式来求解。 首先看到我们的线性回归模型: f(xi)=wTxif(x_i)=w^Tx_if(xi​)=wTxi​ 其中w=(w0w1...wn)...

    线性回归——正规方程推导过程


    我们知道线性回归中除了利用梯度下降算法来求最优解之外,还可以通过正规方程的形式来求解。

    首先看到我们的线性回归模型:
    f ( x i ) = w T x i f(x_i)=w^Tx_i f(xi)=wTxi
    其中 w = ( w 0 w 1 . . . w n ) w=\begin{pmatrix}w_0\\w_1\\...\\w_n\end{pmatrix} w=w0w1...wn x i = ( x 0 x 1 . . . x n ) x_i=\begin{pmatrix}x_0\\x_1\\...\\x_n\end{pmatrix} xi=x0x1...xn,m表示样本数,n是特征数。

    然后我们的代价函数(这里使用均方误差):
    J ( w ) = ∑ i = 1 m ( f ( x i ) − y i ) 2 J(w)=\sum_{i=1}^m(f(x_i)-y_i)^2 J(w)=i=1m(f(xi)yi)2
    接着把我的代价函数写成向量的形式:
    J ( w ) = ( X w − y ) T ( X w − y ) J(w)=(Xw-y)^T(Xw-y) J(w)=(Xwy)T(Xwy)
    其中 X = ( 1 x 11 x 12 ⋯ x 1 n 1 x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋮ ⋱ ⋮ 1 x m 1 x m 2 ⋯ x m n ) X=\begin{pmatrix} 1 & x_{11} & x_{12}& \cdots & x_{1n} \\ 1 & x_{21} & x_{22}& \cdots & x_{2n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & x_{m1} & x_{m2}& \cdots & x_{mn} \\ \end{pmatrix} X=111x11x21xm1x12x22xm2x1nx2nxmn

    最后我们对w进行求导,等于0,即求出最优解。在求导之前,先补充一下线性代数中矩阵的知识:
    1.左分配率: A ( B + C ) = A B + A C A(B+C) = AB+AC A(B+C)=AB+AC;右分配率: ( B + C ) A = B A + C A (B+C)A = BA + CA (B+C)A=BA+CA
    2.转置和逆: ( A T ) − 1 = ( A − 1 ) T (A^T)^{-1}=(A^{-1})^T (AT)1=(A1)T ( A T ) T = A (A^T)^T=A (AT)T=A
    3.矩阵转置的运算规律: ( A + B ) T = A T + B T (A+B)^T=A^T+B^T (A+B)T=AT+BT
    ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT

    然后介绍一下常用的矩阵求导公式:
    1. δ X T A X δ X = ( A + A T ) X \frac{\delta X^TAX}{\delta X}=(A+A^T)X δXδXTAX=(A+AT)X

    2. δ A X δ X = A T \frac{\delta AX}{\delta X}=A^T δXδAX=AT

    3. δ X T A δ X = A \frac{\delta X^TA}{\delta X}=A δXδXTA=A

    然后我们来看一下求导的过程:
    1.展开原函数,利用上面的定理
    J ( w ) = ( X w − y ) T ( X w − y ) = ( ( X w ) T − y T ) ( X w − y ) = w T X T X w − w T X T y − y T X w + y T y J(w)=(Xw-y)^T(Xw-y)=((Xw)^T-y^T)(Xw-y)\\=w^TX^TXw-w^TX^Ty-y^TXw+y^Ty J(w)=(Xwy)T(Xwy)=((Xw)TyT)(Xwy)=wTXTXwwTXTyyTXw+yTy
    2.求导,化简得,
    δ J ( w ) δ w = ( X T X + ( X T X ) T ) w − X T y − ( y T X ) T = 0    ⟹    2 X T X w − 2 X T y = 0    ⟹    X T X w = X T y    ⟹    w = ( X X T ) − 1 X T y \frac{\delta J(w)}{\delta w}=(X^TX+(X^TX)^T)w-X^Ty-(y^TX)^T=0\\\implies 2X^TXw-2X^Ty=0\\\implies X^TXw=X^Ty\\\implies w=(XX^T)^{-1}X^Ty δwδJ(w)=(XTX+(XTX)T)wXTy(yTX)T=02XTXw2XTy=0XTXw=XTyw=(XXT)1XTy

    最后补充一下关于矩阵求导的一些知识,不懂可以查阅矩阵求导、几种重要的矩阵及常用的矩阵求导公式

    展开全文
  • 正规方程推导

    2019-11-24 11:06:23
    正规方程是通过求解下面的方程来找出使得代价函数最小的参数: 设有m个训练实例,每个实例有n个特征,则训练实例集为: 其中表示第i个实例第j个特征。 特征参数为: 输出变量为: 故代价函数为: ...

    多变量线性回归代价函数为:

    其中: 

    正规方程是通过求解下面的方程来找出使得代价函数最小的参数:

    设有m个训练实例,每个实例有n个特征,则训练实例集为:

    这里写图片描述 
    其中这里写图片描述表示第i个实例第j个特征。

    特征参数为:

    这里写图片描述

    输出变量为:

    这里写图片描述

    故代价函数为:

    这里写图片描述

    进行求导,等价于如下的形式:

    这里写图片描述

    求导公式:

    • 其中第一项:

    这里写图片描述

    • 第二项:

    这里写图片描述 
    该矩阵求导为分母布局下的标量/向量形式: 
    故有, 
    这里写图片描述

    • 第三项:

    这里写图片描述 
    该矩阵求导为分母布局下的标量/向量形式: 
    故有: 
    这里写图片描述

    • 第四项:

    这里写图片描述 
    其中这里写图片描述为标量,可看成一个常数。 
    该矩阵求导为分母布局下的标量/向量形式: 
    故有: 
    这里写图片描述

    综上,正规方程为:

    这里写图片描述

    最终可得特征参数的表示:

    这里写图片描述

     

     

     

    梯度下降与正规方程的比较:

    梯度下降

    正规方程

    需要选择学习率

    不需要

    需要多次迭代

    一次运算得出

    当特征数量n大时也能较好适用

    需要计算如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为  ,通常来说当n小于10000 时还是可以接受的

    适用于各种类型的模型

    只适用于线性模型,不适合逻辑回归模型等其他模型

    总结:

    只要特征变量的数目并不大,标准方程是一个很好的计算参数的替代方法。具体地说,只要特征变量数量小于一万,通常使用标准方程法,而不使用梯度下降法。

    展开全文
  • 正规方程推导过程

    千次阅读 2017-09-15 19:31:00
    那啥,之前笔记里这部分是略过的。这里整理一下吧。有兴趣的可以对照看看和你推倒的过程一样不。我们先回顾一下,我们定义...于是,令Rss等于某一极小值,则对参数求导,得:展开,得进而就可以得到于是我们就得到正规
    那啥,之前笔记里这部分是略过的。这里整理一下吧。有兴趣的可以对照看看和你推倒的过程一样不。

    我们先回顾一下,我们定义观测结果y和预测结果y’之间的差别为Rss:

    Rss = \sum_{i=1}^{n}({y_i-y_i'} )^2= \sum_{i=1}^{n}({y_i-h(x_i)} )^2 = (y-h(X))^T*(y-h(X))

    设若参数的矩阵为\theta,则h(X)=\theta*X

    那么Rss  = (y-h(X))^T*(y-h(X)) =  (y-X*\theta)^T*(y-X*\theta)

    按照我们的定义,这个Rss的意思是y和y’之间的差,那么当Rss无限趋近于0的时候,则y≈y’,即我们求得的预测结果就等于实际结果。

    于是,令Rss等于某一极小值\delta ,则(y-X*\theta)^T*(y-X*\theta) ==\delta

    对参数\theta求导,得:

    \frac{d}{d(\theta)}(y-X*\theta)^T*(y-X*\theta)== 2X^T*(y-X*\theta)==0

    展开,得 2X^T*y==2*X^T*X*\theta

    进而就可以得到\theta ==(X^T*X)^{-1}*X^T*y

    于是我们就得到正规方程了。


    再讲一个推导方式:

    我们可以用矩阵乘法:

    Y=X\theta

    两边同时乘以X^T

    X^TY=X^TX\theta

    然后再乘以(X^TX)^{-1}

    (X^TX)^{-1}X^TY=(X^TX)^{-1}X^TX\theta

    就得到\theta = (X^TX)^{-1}X^TY

    ……不过这第二种方法是在知道了正规方程是什么以后再推导的。虽然看起来很快,然而并没有告诉你为什么。

    展开全文
  • 其数学表达式为: min⁡w∣∣Xw−y∣∣22\min\limits_{w} || X w - y||_2^2wmin​∣∣Xw−y∣∣22​ 其系数的求解 - 正规方程: w=(XTX)−1XTyw = (X^TX)^{-1}X^Tyw=(XTX)−1XTy 正规方程推导 令 f(w)=∣∣Xw−y∣...

    线性模型 - 普通最小二乘法


    广义线性模型

    目标值 y 是输入变量 x 的线性组合

    如果 y ^ \hat{y} y^ 是预测值,那么有:

    y ^ ( w , x ) = w 0 + w 1 x 1 + . . . + w p x p \hat{y}(w, x) = w_0 + w_1 x_1 + ... + w_p x_p y^(w,x)=w0+w1x1+...+wpxp

    在sklearn中,定义向量 w = ( w 1 , . . . , w p ) w = (w_1, ..., w_p) w=(w1,...,wp) 为系数(斜率) coef_ ,定义 w 0 w_0 w0 为截距 intercept_


    普通最小二乘法

    在sklearn中,LinearRegression 拟合一个带有系数 w = ( w 1 , . . . , w p ) w = (w_1, ..., w_p) w=(w1,...,wp) 的线性模型,使得数据集实际观测数据和预测数据(估计值)之间的残差平方和最小。其数学表达式为:

    min ⁡ w ∣ ∣ X w − y ∣ ∣ 2 2 \min\limits_{w} || X w - y||_2^2 wminXwy22

    其系数的求解 - 正规方程:

    w = ( X T X ) − 1 X T y w = (X^TX)^{-1}X^Ty w=(XTX)1XTy


    正规方程的推导

    f ( w ) = ∣ ∣ X w − y ∣ ∣ 2 2 f(w) = ||Xw - y||_2^2 f(w)=Xwy22

    由于向量2范数的公式为:

    ∣ ∣ X ∣ ∣ 2 = ∑ i = 1 n x i 2 ||X||_2 = \sqrt{\sum\limits_{i = 1}^nx_i^2} X2=i=1nxi2

    再根据矩阵运算法则,可将原公式变形为:

    f ( w ) = ( X w − y ) T ( X w − y ) f(w) = (Xw - y)^T(Xw - y) f(w)=(Xwy)T(Xwy)

    展开:

    f ( w ) = ( w T X T − y T ) ( X w − y ) f(w) = (w^TX^T - y^T)(Xw - y) f(w)=(wTXTyT)(Xwy)

    f ( w ) = w T X T X w − w T X T y − y T X w + y T y f(w) = w^TX^TXw - w^TX^Ty - y^TXw + y^Ty f(w)=wTXTXwwTXTyyTXw+yTy

    f ( w ) = w T X T X w − 2 y T X w + y T y f(w) = w^TX^TXw - 2y^TXw + y^Ty f(w)=wTXTXw2yTXw+yTy

    目的是求原函数的最小值,所以对其求导,令导数等于0即可

    根据矩阵求导法则求导结果:

    f ′ ( w ) = 2 X T X w − 2 X T y f'(w) = 2X^TXw - 2X^Ty f(w)=2XTXw2XTy

    f ′ ( w ) = 0 f'(w) = 0 f(w)=0 ,则:

    2 X T X w − 2 X T y = 0 2X^TXw - 2X^Ty = 0 2XTXw2XTy=0

    移项化简:

    X T X w = X T y X^TXw = X^Ty XTXw=XTy

    两边同时左乘逆矩阵 ( X T X ) − 1 (X^TX)^{-1} (XTX)1

    ( X T X ) − 1 ( X T X ) w = ( X T X ) − 1 X T y (X^TX)^{-1}(X^TX)w = (X^TX)^{-1}X^Ty (XTX)1(XTX)w=(XTX)1XTy

    最后可得正规方程:

    w = ( X T X ) − 1 X T y w = (X^TX)^{-1}X^Ty w=(XTX)1XTy


    实例验证

    import numpy as np
    from sklearn import linear_model
    from sklearn import datasets
    
    X, y = datasets.load_boston(True)
    
    reg = linear_model.LinearRegression(fit_intercept=False)
    reg.fit(X, y)
    print('sklearn封装好的LinearRegression模型计算的系数:', reg.coef_, sep='\n', end='\n\n')
    
    coef = np.linalg.inv(X.T @ X) @ X.T @ y
    print('自己用正规方程计算的系数:', coef, sep='\n')
    
    

    结果:

    sklearn封装好的LinearRegression模型计算的系数:
    [-9.28965170e-02  4.87149552e-02 -4.05997958e-03  2.85399882e+00
     -2.86843637e+00  5.92814778e+00 -7.26933458e-03 -9.68514157e-01
      1.71151128e-01 -9.39621540e-03 -3.92190926e-01  1.49056102e-02
     -4.16304471e-01]
    
    自己用正规方程计算的系数:
    [-9.28965170e-02  4.87149552e-02 -4.05997958e-03  2.85399882e+00
     -2.86843637e+00  5.92814778e+00 -7.26933458e-03 -9.68514157e-01
      1.71151128e-01 -9.39621540e-03 -3.92190926e-01  1.49056102e-02
     -4.16304471e-01]
    

    我们发现,sklearn的LinearRegression模型计算的系数和我们直接用正规方程计算的系数一致,说明该模型的拟合的确用的是最小二乘法

    但是这是忽略截距的情况,即 fit_intercept=False

    如果需要截距,我们用正规方程求解时,需要把截距 w 0 w_0 w0 对应的特征 1 1 1 也加在数据 X 中(见文章开头的广义线性模型)求解:

    import numpy as np
    from sklearn import linear_model
    from sklearn import datasets
    
    X, y = datasets.load_boston(True)
    
    reg = linear_model.LinearRegression()
    reg.fit(X, y)
    print('sklearn封装好的LinearRegression模型计算的系数:', reg.coef_, sep='\n', end='\n\n')
    print('sklearn封装好的LinearRegression模型计算的截距:', reg.intercept_, sep='\n', end='\n\n')
    
    # 截距w0对应的特征为1,所以添加一列值全为1数组
    x0 = np.ones(X.shape[0])
    X = np.c_[x0, X]
    
    intercept_coef = np.linalg.inv(X.T @ X) @ X.T @ y
    print('自己用正规方程计算的系数:', intercept_coef[1:], sep='\n', end='\n\n')
    print('自己用正规方程计算的截距:', intercept_coef[0], sep='\n')
    
    

    结果:

    sklearn封装好的LinearRegression模型计算的系数:
    [-1.08011358e-01  4.64204584e-02  2.05586264e-02  2.68673382e+00
     -1.77666112e+01  3.80986521e+00  6.92224640e-04 -1.47556685e+00
      3.06049479e-01 -1.23345939e-02 -9.52747232e-01  9.31168327e-03
     -5.24758378e-01]
    
    sklearn封装好的LinearRegression模型计算的截距:
    36.45948838509001
    
    自己用正规方程计算的系数:
    [-1.08011358e-01  4.64204584e-02  2.05586264e-02  2.68673382e+00
     -1.77666112e+01  3.80986521e+00  6.92224640e-04 -1.47556685e+00
      3.06049479e-01 -1.23345939e-02 -9.52747232e-01  9.31168327e-03
     -5.24758378e-01]
    
    自己用正规方程计算的截距:
    36.459488385095966
    

    我们发现,结果一致,说明sklearn中的LinearRegression模型的拟合原理正是最小二乘法。

    展开全文
  • 线性模型 – 普通最小二乘法 广义线性模型 目标值 y 是输入变量 x 的线性组合 如果 y^\hat{y}y^​ 是预测值,那么有: y^(w,x)=w0+w1x1+…+wpxp\hat{y}(w, x) = w_0 + w_1 x_1 + … + w_p x_py^​(w,x)=w0​+w1​x1...
  • 最小二乘法正规方程推导过程线性回归岭回归:添加 L2L_2L2​ 正则项 输入样本 X∈Rm×n\textbf{X}\in \mathbb{R}^{m\times n}X∈Rm×n,输出 y∈Rm×1\textbf{y}\in\mathbb{R}^{m\times 1}y∈Rm×1,需要学习的参数 ...
  • 线性回归的正规方程推导参考资料 除了梯度下降法,我们还可以用正规方程法来求线性回归模型。 设样本数量为mmm,每个样本有nnn个特征,线性回归模型hθ(x)h_\theta(x)hθ​(x)为: hθ(x)=θ0x0+θ1x1+θ2x2+⋯+θ...
  • 正规方程推导详解

    2019-07-07 20:18:00
    当我们在求解梯度下降算法的时候,经常会用到正规方程来求解w的值,这个时候就用到正规方程来求解是最快的方法,但是正规方程又是怎么来的呢?我们来看看:首先我们设我们的损失函数为MSE train,那么这个时候我们只...
  • 线性回归 正规方程详细推导过程

    千次阅读 2018-11-02 15:48:38
    最近在学习吴恩达的机器学习,讲到里面了比较简单的求出的方法:正规方程。 视频里只告诉我们这个公式,但是没有具体告诉我们推到过程,对于我这种数学学渣来说实在一眼看不出来是什么意思,查了很久才稍微懂了点点...
  • 正规方程推导过程

    千次阅读 2018-10-07 20:40:47
    转载自:https://zhuanlan.zhihu.com/p/22474562
  • 在机器学习中,相对于梯度下降算法,正规方程更适合解决线性回归问题。 通常机器学习教程是这么介绍正规方程...从求导直接得到向量解,那么正规方程推导过程是怎样的呢? 下面为大家介绍详细的推导步骤: ...
  • 正规方程(含推导过程) from 吴恩达的机器学习

    万次阅读 多人点赞 2018-06-06 09:21:35
    正规方程是通过求解下面的方程来找出使得代价函数最小的参数的:假设我们的训练集特征矩阵为X(包含了 )并且我们的训练集结果为向量 y,则利用正规方程解出向量: **********例:正规方程推导过程参考:https://b...
  • 来源:CSDN  原文:https://blog.csdn.net/chenlin41204050/article/details/78220280 ---------------------  作者:木兄  来源:CSDN  原文:...版权声明:本文为博主原创文章...
  • 对于某些线性回归问题,正规方程方法是更好的解决方案,这种方法是对(代价函数)求的导数并使其为0,它能够不需要迭代直接求出。如下: 本文将涉及矩阵的求导,以下先对矩阵求导做出介绍。 首先定义表示m×n的...
  • import numpy as np import matplotlib.pyplot as plt #定义维度 m=40 ...#定义一个正态分布,参数分别为均值,方差以及X的行向量 ... return 1/np.sqrt( 2 * np.pi * var )*np.exp( - (x-mean) ** 2 /...
  • 我将在接下来的内容中介绍:损失函数L(θ)的来历和意义,以及正规方程结论的数学推导过程 代价函数 代价函数,又叫损失函数,表示的是建立的机器模型与真实值的差异。代价函数输出的值越大,代表所模型预测的值的...
  • 推导,用例数目m=2时,X=[1x111x12],Y=[y11y12],θ=[θ11θ12]先推导,用例数目m=2时,X=\begin{bmatrix} 1 & x_1^1 \\ 1 & x_1^2 \\ \end{bmatrix},Y= \begin{b...
  • 正规方程是通过求解代价函数的导数,令导数为0来求theta的值。 第一个等式是线性回归的代价函数,第二个等式是将其写成向量化的形式。 我们知道向量的转置乘以该向量的含义是求出向量中各元素的平方和 令...
  • 个人原创笔记,若有错误,请大佬们指正!
  • 对于某些线性回归的问题,正规方程将提供更好的方法来求得参数θ最优值。之前我们一直在使用线性回归的算法是梯度下降法,为了最小化代价函数J(θ),我们使用梯度下降这种迭代算法,经过很多步也就是梯度下降的多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,305
精华内容 922
关键字:

正规方程推导

友情链接: 4032.zip