[ch05-01]正规方程法解决多变量线性回归问题(代码片段)

woodyh5 woodyh5     2023-05-05     594

关键词:

系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI
点击star加星不要吝啬,星越多笔者越努力。

5.1 正规方程解法

英文名是 Normal Equations。

对于线性回归问题,除了前面提到的最小二乘法可以解决一元线性回归的问题外,也可以解决多元线性回归问题。

对于多元线性回归,可以用正规方程来解决,也就是得到一个数学上的解析解。它可以解决下面这个公式描述的问题:

[y=a_0+a_1x_1+a_2x_2+dots+a_kx_k ag1]

5.1.1 简单的推导方法

在做函数拟合(回归)时,我们假设函数H为:

[h(w,b) = b + x_1 w_1+x_2 w_2+...+x_n w_n ag2]

(b=w_0),则:

[h(w) = w_0 + x_1 cdot w_1 + x_2 cdot w_2+...+ x_n cdot w_n ag3]

公式3中的x是一个样本的n个特征值,如果我们把m个样本一起计算,将会得到下面这个矩阵:

[H(w) = X cdot W ag4]

公式5中的X和W的矩阵形状如下:

[ X = eginpmatrix 1 & x_1,1 & x_1,2 & dots & x_1,n 1 & x_2,1 & x_2,2 & dots & x_2,n \dots 1 & x_m,1 & x_m,2 & dots & x_m,n endpmatrix ag5 ]

[ W= eginpmatrix w_0 w_1 \dots w_n endpmatrix ag6 ]

然后我们期望假设函数的输出与真实值一致,则有:

[H(w) = X cdot W = Y ag7]

其中,Y的形状如下:

[ Y= eginpmatrix y_1 y_2 \dots y_m endpmatrix ag8 ]

直观上看,W = Y/X,但是这里三个值都是矩阵,而矩阵没有除法,所以需要得到X的逆矩阵,用Y乘以X的逆矩阵即可。但是又会遇到一个问题,只有方阵才有逆矩阵,而X不一定是方阵,所以要先把左侧变成方阵,就可能会有逆矩阵存在了。所以,先把等式两边同时乘以X的转置矩阵,以便得到X的方阵:

[X^T X W = X^T Y ag9]

其中,(X^T)是X的转置矩阵,(X^T X)一定是个方阵,并且假设其存在逆矩阵,把它移到等式右侧来:

[W = (X^T X)^-1X^T Y ag10]

至此可以求出W的正规方程。

5.1.2 复杂的推导方法

我们仍然使用均方差损失函数:

[J(w,b) = sum (z_i - y_i)^2 ag11]

把b看作是一个恒等于1的feature,并把z=XW计算公式带入,并变成矩阵形式:

[J(w) = sum (x_i w_i -y_i)^2=(XW - Y)^T cdot (XW - Y) ag12]

对w求导,令导数为0,就是W的最小值解:

[ eginaligned partial J(w) over partial w &= partial over partial w[(XW - Y)^T cdot (XW - Y)] &=partial over partial w[(X^TW^T - Y^T) cdot (XW - Y)] &=partial over partial w[(X^TXW^TW -X^TW^TY - Y^TXW + Y^TY)] endaligned ag13 ]

求导后:

第一项的结果是:(2X^TXW)

第二项和第三项的结果都是:(X^TY)

第四项的结果是:0

再令导数为0:

[ J'(w)=2X^TXW - 2X^TY=0 ag14 ]
[ X^TXW = X^TY ag15 ]
[ W=(X^TX)^-1X^TY ag16 ]

结论和公式10一样。

以上推导的基本公式可以参考第0章的公式60-69。

逆矩阵((X^TX)^-1)可能不存在的原因是:

  1. 特征值冗余,比如(x_2=x^2_1),即正方形的边长与面积的关系,不能做为两个特征同时存在
  2. 特征数量过多,比如特征数n比样本数m还要大

以上两点在我们这个具体的例子中都不存在。

5.1.3 代码实现

我们把表5-1的样本数据带入方程内。根据公式(5),我们应该建立如下的X,Y矩阵:

[ X = eginpmatrix 1 & 10.06 & 60 1 & 15.47 & 74 1 & 18.66 & 46 1 & 5.20 & 77 \dots \endpmatrix ag17 ]

[ Y= eginpmatrix 302.86 393.04 270.67 450.59 \dots \endpmatrix ag18 ]

根据公式(10):

[W = (X^T X)^-1X^T Y ag10]

  1. X是1000x3的矩阵,X的转置是3x1000,(X^TX)生成(3x3)的矩阵
  2. ((X^TX)^-1)也是3x3
  3. 再乘以(X^T),即(3x3)x(3x1000)的矩阵,变成3x1000
  4. 再乘以Y,Y是1000x1,所以(3x1000)x(1000x1)变成3x1,就是W的解,其中包括一个偏移值b和两个权重值w,3个值在一个向量里
if __name__ == '__main__':
    reader = SimpleDataReader()
    reader.ReadData()
    X,Y = reader.GetWholeTrainSamples()
    num_example = X.shape[0]
    one = np.ones((num_example,1))
    x = np.column_stack((one, (X[0:num_example,:])))
    a = np.dot(x.T, x)
    # need to convert to matrix, because np.linalg.inv only works on matrix instead of array
    b = np.asmatrix(a)
    c = np.linalg.inv(b)
    d = np.dot(c, x.T)
    e = np.dot(d, Y)
    #print(e)
    b=e[0,0]
    w1=e[1,0]
    w2=e[2,0]
    print("w1=", w1)
    print("w2=", w2)
    print("b=", b)
    # inference
    z = w1 * 15 + w2 * 93 + b
    print("z=",z)

5.1.4 运行结果

w1= -2.0184092853092226
w2= 5.055333475112755
b= 46.235258613837644
z= 486.1051325196855

我们得到了两个权重值和一个偏移值,然后得到房价预测值z=486万元。

至此,我们得到了解析解。我们可以用这个做为标准答案,去验证我们的神经网络的训练结果。

代码位置

ch05, Level1

正规方程(normalequation)——对于线性回归问题的一种快速解法

对于某些线性回归问题,正规方程方法可能更加简单高效。正规方程推导过程如下: 梯度下降法和正规方程的比较: 总结:  只要特征数量并不是特别大,对于线性回归问题正规方程是一个比梯度下降算法更快的替代... 查看详情

[machinelearning]多变量线性回归(linearregressionwithmultiplevariable)-特征缩放-正规方程

  我们从上一篇博客中知道了关于单变量线性回归的相关问题,例如:什么是回归,什么是代价函数,什么是梯度下降法。  本节我们讲一下多变量线性回归。依然拿房价来举例,现在我们对房价模型增加更多的特征,例如... 查看详情

机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程)

一、多变量的线性回归在#机器学习系列一#中,我们讨论了单变量的线性回归,而多变量的线性回归与单变量类似,一致内容就不再赘述了。首先我们来看一个例子,下表是波特兰的房子价格,针对不同的房屋... 查看详情

ng机器学习视频笔记——线性回归的多变量特征缩放标准方程法

...视频笔记(三)——线性回归的多变量、特征缩放、标准方程法 (转载请附上本文链接——linhxx) 一、多变量        当有n个特征值,m个变量时,h(x)=θ0+θ1x1+θ2x2…+θnxn,其中可以认为x0=1。... 查看详情

线性回归的基本概念以及正规方程

...散值1.3简单线性回归1.4基本名词的定义1.5多元线性回归2.正规方程2.1最小二乘法的矩阵表示2.2多元一次方程举例2.2.1二元一次方程2.2.2三元一次方程2.2.3八元一次方程2.2.4sklearnsklearnsklearn算法使用2.2.5带截距的线性方程2.2.5.1增加截... 查看详情

机器学习-吴恩达-正规方程多变量回归公式

矩阵的迹    A为nXn的矩阵     查看详情

正规方程

正规方程: 对于上面的线性回归算法我们都是采用的梯度下降法,使得损失函数最小,而对于线性回归算法还有另外一种使得损失函数最小的方法,那就是正规方程。 正规方程式通过求解下面的方程来找出使得代价函数... 查看详情

机器学习经典算法源码分析系列--线性回归

...数代入展开:  Matlab代码实现:  2) 正规方程 Matlab代码实现:  关于正规方程的推导:   查看详情

多变量线性回归

...不是变量不是全都式一阶      六、正规方程未完  查看详情

[ch05-02]用神经网络解决多变量线性回归问题(代码片段)

系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI,点击star加星不要吝啬,星越多笔者越努力5.2神经网络解法与单特征值的线性回归问题类似,多变量(多特征值)的线性回归可以被看做是一种高维空间的线性拟合。... 查看详情

吴恩达-coursera-机器学习-week2

...征缩放4.4梯度下降法实践2-学习率4.5特征和多项式回归4.6正规方程4.7正规方程及不可逆性(可选)五、Octave教程(OctaveTutorial)5.1基本操作5.2移动数据5.3计算数据5.4绘图数据5.5控制语句:for,whil 查看详情

吴恩达机器学习17:正规方程

1.对某些线性回归问题,正规方程给出了更好的解决方法,来求得参数θ,截止到目前我们一直使用线性回归算法是梯度下降法,为了最小化代价函数J(θ),我们使用梯度下降多次迭代,来收敛得到全局的最小值。与此相反的正规... 查看详情

机器学习|多变量线性回归|吴恩达学习笔记(代码片段)

...07;特征缩放🐇学习率📚特征和多项式回归📚正规方程📚梯度下降与正规方程的比较📚多维特征接上文单变量线性回归,现在我们对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多... 查看详情

机器学习之线性回归概念总结速记

...骤分析代码过程线性回归的损失和优化损失函数优化算法正规方程梯度下降梯度的概念梯度下降和正规方程的对比算法选择依据欠拟合和过拟合定义区别二者出现的原因和解决办法正则化线性回归简介线性回归应用场景房价预测... 查看详情

正规方程的可逆性

如果XTX不可逆:常见的原因可能是:1.冗余特征,其中两个特征是非常密切相关的(即它们是线性相关的)。2.太多的变量(例如M≤N)。在这种情况下,删除某些特性或使用“正则化”(后面的课中将对此进行解释)。 解决... 查看详情

机器学习线性回归的损失和优化(代码片段)

...失和优化线性回归的损失和优化1.损失函数2.优化算法2.1正规方程2.1.1什么是正规方程2.1.2正规方程求解举例2.1.3正规方程的推导推导方式一推导方式二2.2梯度下降(GradientDescent)2.2.1什么是梯度下降2.2.2梯度的概念2.2.3梯度下降举例2.2... 查看详情

正规方程,梯度下降,岭回归——机器学习(代码片段)

...平均梯度下降算法(SAG)三.波士顿房价预测——正规方程( 查看详情

线性回归的梯度下降和正规方程组求解

1#coding:utf-82importmatplotlib.pyplotasplt3importnumpyasnp45defdataN(length):6x=np.zeros(shape=(length,2))7y=np.zeros(shape=length)8foriinrange(0,length):9x[i][0]=110x[i][1]=i11y[i]=(i+25)+np.random. 查看详情