精华内容
下载资源
问答
  • 多元线性回归系数求解
    万次阅读
    2019-08-01 14:03:04

    求解线性回归系数

    已知 n n n个观测值集合 { ( x i , y i ) , i = 1 , 2 , . . . , n } \{(x_i, y_i), i=1,2,...,n\} {(xi,yi),i=1,2,...,n}, 求回归系数 a a a,使得预测值 y ^ i = x i a \hat{y}_i={x_ia} y^i=xia与真实值 y i y_i yi的偏差平方和最小,即找目标函数 s = ∑ ( y i − y ^ ) 2 s=\sum(y_i - \hat{y})^2 s=(yiy^)2的最小值。

    • 当为一元线性回归,则 y i = x i 0 ∗ a 0 + x i 1 ∗ a 1 y_i = x_{i0}*a_0 + x_{i1}*a_1 yi=xi0a0+xi1a1,这里 x 0 i x_{0i} x0i恒等于1,那么 a 0 a_0 a0可看作为偏移量常数(截距);
    • 当为多元( m m m元)线性回归时, x i , a i x_i,a_i xi,ai为向量,令 x i = ( x i 0 , x i 1 , x i 2 , . . . , x i m ) T \boldsymbol{x_i}= (x_{i0}, x_{i1}, x_{i2},...,x_{im})^T xi=(xi0,xi1,xi2,...,xim)T, a = ( a 0 , a 1 , a 2 , . . . , a m ) T \boldsymbol{a} = (a_{0}, a_{1}, a_{2},...,a_{m})^T a=(a0,a1,a2,...,am)T, 则 y i = ∑ j = 0 m x i j a i = x i T a {y_i}=\sum_{j=0}^m{x_{ij}a_i} =\boldsymbol{x_i}^T\boldsymbol{a} yi=j=0mxijai=xiTa.

    因此,目标函数 s \boldsymbol{s} s可用矩阵形式表示:
    s ( a ) = ∑ i = 1 n ( y i − x i T a ) 2 = ( y − X T a ) T ( y − X T a ) , \boldsymbol{s}(\boldsymbol{a})=\sum_{i=1}^n{({y_i}-\boldsymbol{x_i}^T\boldsymbol{a})^2} =(\boldsymbol{y} - \boldsymbol{X}^T\boldsymbol{a})^T (\boldsymbol{y} - \boldsymbol{X}^T\boldsymbol{a}), s(a)=i=1n(yixiTa)2=(yXTa)T(yXTa),

    其中, X = ( x 1 , x 2 , . . . , x n ) T \boldsymbol{X}=(\boldsymbol{x_{1},x_{2},...,x_{n}})^T X=(x1,x2,...,xn)T, y = ( y 1 , y 2 , . . . , y n ) T \boldsymbol{y}=(y_1,y_2,...,y_n)^T y=(y1,y2,...,yn)T.

    s \boldsymbol{s} s的最小值,则可对目标函数 s \boldsymbol{s} s求导,令 u = y − X T a \boldsymbol{u} = \boldsymbol{y} - \boldsymbol{X}^T\boldsymbol{a} u=yXTa
    s ′ ( a ) = ( u T u ) ′ = u T u ′ + u T u ′ = 2 u T ( − X T ) = − 2 ( X u ) T . \boldsymbol{s}'(\boldsymbol{a}) = (\boldsymbol{u}^T\boldsymbol{u})' =\boldsymbol{u}^T\boldsymbol{u}'+\boldsymbol{u}^T\boldsymbol{u}'=2\boldsymbol{u}^T(-\boldsymbol{X}^T)=-2(\boldsymbol{X}\boldsymbol{u})^T. s(a)=(uTu)=uTu+uTu=2uT(XT)=2(Xu)T.

    【标量对向量求导: ( u T v ) ′ = u T v ′ + v T u ′ (u^Tv)'=u^Tv'+v^Tu' (uTv)=uTv+vTu】(u(x): nx1, v(x):nx1)

    s ′ ( a ) = 0 \boldsymbol{s}'(\boldsymbol{a})=0 s(a)=0,即 ( X ( y − X T a ) ) T = 0 (\boldsymbol{X} ( \boldsymbol{y} - \boldsymbol{X}^T\boldsymbol{a}))^T=0 (X(yXTa))T=0,解得 a ^ = ( X X T ) − 1 X y \hat{\boldsymbol{a}}=(\boldsymbol{XX}^T)^{-1}\boldsymbol{X}\boldsymbol{y} a^=(XXT)1Xy。 注意到, a ^ \hat{\boldsymbol{a}} a^的解中包含矩阵的逆,也就是说,只有当 X − 1 \boldsymbol{X}^{-1} X1存在时, a ^ \hat{\boldsymbol{a}} a^才有解。

    上述方法求解回归系数是一般最小二乘法 o r d i n a r y   l e a s t   q u a r e s ordinary\ least\ quares ordinary least quares, OLS

    python实现

    python中numpy中包含线性代数模块(linalg, linear algebra)可用于求解 a x = b \boldsymbol{ax=b} ax=b

    • 一、导入数据

      from numpy import *
      import pandas as pd
      stu_score = '{mydata_path}/data.tsv'
      dataset = pd.read_csv(stu_score, index_col=False) 
      dataset.head()
      len(dataset)
      

      在这里插入图片描述

    • 二、数据转化为矩阵,并计算回归系数

      def load_data(data_file):
          data_arr = []
          label_arr = []
          with open(data_file, 'r') as f:
              header = f.readline()
              for line in f:
                  mydata = line.strip().split(',')
                  mydata.insert(0, 1)  # 假定偏移量是常数c,第一列补1(y = ax + c)
                  data_info = [float(i) for i in mydata]
                  data_arr.append(data_info[:-1])
                  label_arr.append([data_info[-1]])  # 最后一列为对应y值
          return mat(data_arr), mat(label_arr)
      
      
      def stand_regres(x_mat, y_mat):
          x_mat_T = x_mat.T * x_mat # 下面判断x_mat_T是否可逆
          if linalg.det(x_mat_T) == 0:  # 若行列式|x_mat_T|不为0,则A可逆
              print('This matrix is singular, cannot do inverse!')  # 行列式为0
              return None
          else:
              # reg_coef = x_mat_T.I * (x_mat.T * y_mat)  # 可根据上面推到得到回归系数,
              reg_coef = linalg.solve(x_mat_T, x_mat.T * y_mat)  # 也可根据numpy中linalg模块中solve方法解ax + b = 0得到回归系数
          	return reg_coef
      
    • 三、数据可视化

      import matplotlib.pyplot as plt
      
      x_mat, y_mat = load_data(stu_score)  # header
      fig = plt.figure()
      ax = fig.add_subplot(111)
      ax.scatter(x_mat[:,1].flatten().A[0], y_mat[:,0].flatten().A[0])  # plot scatter of original data
      
      regress_coef = stand_regres(x_mat, y_mat)
      x_copy = x_mat.copy()
      y_hat = x_copy * regress_coef
      ax.plot(x_copy[:,1], y_hat)  # plot regression line
      plt.show()
      

      在这里插入图片描述

    • 四、拟合直线的相关系数

      corrcoef(y_hat.T, y_mat.T)
      

      在这里插入图片描述
      附:相关系数计算公式:
      C o r r ( X , Y ) = C o v ( X , Y ) V a r ( X ) V a r ( Y ) , Corr(X,Y) = \frac{Cov(X,Y)}{\sqrt{Var(X)}\sqrt{Var(Y)}}, Corr(X,Y)=Var(X) Var(Y) Cov(X,Y),
      其中,

      • 协方差 C o v ( X , Y ) = E ( X Y ) − E ( X ) E ( Y ) Cov(X,Y)=E(XY) - E(X)E(Y) Cov(X,Y)=E(XY)E(X)E(Y)
      • V a r ( X ) , V a r ( Y ) Var(X), Var(Y) Var(X),Var(Y)分别为 X , Y X,Y X,Y的方差
      • E ( X ) , E ( Y ) , E ( X Y ) E(X), E(Y), E(XY) E(X),E(Y),E(XY)分别为对用期望
      • 协方差>0,则X与Y正相关;协方差<0,则负相关;协方差=0,则独立/不相关;同样相关系数与协方差同符号(同正负零),相关系数反应 X , Y X,Y X,Y的相关程度,其取值范围是 − 1 &lt; C o r r ( X , Y ) &lt; 1 -1&lt;Corr(X, Y) &lt; 1 1<Corr(X,Y)<1, 即0<|Corr(X, Y)|<1,|Corr(X, Y)|的值越接近1,相关程度越高,反之,相关程度越低。
    更多相关内容
  • 多元线性回归系数求解

    万次阅读 2009-09-13 09:46:00
    做地图自动标注,想调用Matlab的多元线性拟合函数Regress,用Matlab Builder For Java转成Java类,因为是Flex编写的程序,无法直接使用Java需要部署到Web,问题来了,本地可以运行,但是写成RemotingObject或者...

     

    做地图自动标注,想调用Matlab的多元线性拟合函数Regress,用Matlab Builder For Java转成Java类,因为是Flex编写的程序,无法直接使用Java需要部署到Web,问题来了,本地可以运行,但是写成RemotingObject或者WebService都会出现问题,要么是无法初始化工厂类,要么是Invoke错误,郁闷了!网上查了下好像大家都遇到这种错误,而且没什么解决方案。

     

    搞了2天搞不好,想想,也没有速度要求,干脆自己写一个算了,也不怎么复杂!

    原理如下:

     

     

    建立多元线性回归方程,实际上是对多元线性模型(2-2-4)进行估计,寻求估计式(2-2-3)的过程。与一元线性回归分析相同,其基本思想是根据最小二乘原理,求解 使全部观测值 与回归值 的残差平方和达到最小值。由于残差平方和

              2-2-5

        是 的非负二次式,所以它的最小值一定存在。

        根据极值原理,当Q取得极值时, 应满足

        由(2-2-5)式,即满足

                        2-2-6

        (2-2-6)式称为正规方程组。它可以化为以下形式

         2-2-7

        如果用A表示上述方程组的系数矩阵可以看出A是对称矩阵。则有

                       2-2-8

     

     式中X是多元线性回归模型中数据的结构矩阵, 是结构矩阵X的转置矩阵。

     (2-2-7)式右端常数项也可用矩阵D来表示

        即

               

        因此(2-2-7)式可写成

    Ab=D           2-2-10

        或

                2-2-11

    如果A满秩(即A的行列式  )那么A的逆矩阵A-1存在,则由(2-10)式和(2-11)式得 的最小二乘估计为

                2-2-12

      也就是多元线性回归方程的回归系数。

      为了计算方便往往并不先求  ,再求b,而是通过解线性方程组(2-2-7)来求b(2-2-7)是一个有p+1个未知量的线性方程组,它的第一个方程可化为

                2-2-13

        式中

                2-2-14

        将(2-2-13)式代入(2-2-7)式中的其余各方程,得

                2-2-15

        其中

                2-2-16

        将方程组(2-2-15)式用矩阵表示,则有

    Lb=F           2-2-17

        其中

      

        于是

    b=L-1F           2-2-18

      因此求解多元线性回归方程的系数可由(2-2-16)式先求出L,然后将其代回(2-2-17)式中求解。求b时,可用克莱姆法则求解,也可通过高斯变换求解。如果把b直接代入(2-2-18)式,由于要先求出L的逆矩阵,因而相对复杂一些。

      例2-2-1 2-2-1为某地区土壤内含植物可给态磷(y)与土壤内所含无机磷浓度(x1)、土壤内溶于K2CO3溶液并受溴化物水解的有机磷浓度(x2)以及土壤内溶于K2CO3溶液但不溶于溴化物的有机磷(x3)的观察数据。求yx1, x2, x3的线性回归方程  。

    2-2-1 土壤含磷情况观察数据

    第10行第一个应该是12.6

        计算如下:

        由(2-2-16)

      

      

     代入(2-2-15)式得

             2-2-19

        若用克莱姆法则解上述方程组,则其解为

                    2-2-20

        其中

        计算得

    b1=1.7848b2=-0.0834b3=0.1611

         回归方程为

      应用克莱姆法则求解线性方程组计算量偏大,下面介绍更实用的方法——高斯消去法和消去变换

     

    展开全文
  • 机器学习 回归篇(1)——多元线性回归摘要线性回归简介python实现运行结果及可视化 摘要 本文介绍了最基础的回归问题——多元线性回归,并通过python进行实现及可视化展示运行结果。 线性回归简介 线性回归问题的...
  • 多元线性回归求解过程 解析解求解

    万次阅读 多人点赞 2018-10-30 17:21:00
    常用算法一 多元线性回归详解2(解析解求解多元线性回归)  上一篇讲到什么是多元线性回归以及多元线性回归的推导过程详解,本章我们一起来看如何求得最优解,就是我们得到了多元线性回归到损失函数就是最小二乘公式...

    常用算法一 多元线性回归详解2(解析解求解多元线性回归)

            上一篇讲到什么是多元线性回归以及多元线性回归的推导过程详解,本章我们一起来看如何求得最优解,就是我们得到了多元线性回归到损失函数就是最小二乘公式,那么如何利用最小二乘公式求得最优解。对多元线性回归到推导过程没有概念的同学欢迎查看上一篇文章::常用算法一 多元线性回归详解1(推导过程)

     

    求解多元线性回归        

            多元线性回归常用的求解方法有两种:

                      1-解析解求解法

                      2-梯度下降法求解

             本章我们来看多元线性回归的解析解求解法。

    解析解求解法

             说到解析解求解,很多同学都已经忘记了什么事解析解。解析解就是指通过公式就可以求得到方程的解。我们只需要方程的参数带入到公式中,计算公式结果就可以得到方程的解,而不用一步一步化简求解。比如我们初中学的一元二次方程的解细节是。是不是豁然开朗,原来就是你小子。

             想要用解析解来求解最小二乘函数,那我们首先得知道他的解析解是啥。

    a.求得最小二乘公式的解析解。

             这里要用到上一章讲到的知识点,求一个函数在某一点上的导数,就是求在这个函数的图像上,过这一点所做切线的斜率。这一点的导函数就是切线的函数。一个二次函数的图像是一个抛物线,那想想一下,通过图像的顶点所做的切线是一条怎样的直线。应该是一条与x轴平行的直线,此时这条直线的斜率为0.函数图像的顶点就是函数的解,也就是说,我们通过函数的解这一点来做切线,切线的斜率就是0.

             那我们反过来利用一下刚刚总结出的结论。如果我找到了函数图像上切线为0的点,是不是找到了函数的解?切线是什么?对函数上某一点求导就等于通过这一点在函数图像上做切线,作出的切线就是求导得到的导函数的图像,切线的函数就是对函数求导所得到的导函数,那我们只要找到导函数为0对点,是不是就得到了图像的解?(这一段一定要理解。多读几遍)

             所以,我们可以通过对最小二乘函数求导,让导函数为0时的结果,就是最小二乘的解。求导过程如下:

            首先对最小二乘进行变形,变为矩阵表达形式:

            

           展开矩阵函数:

                  

        展开之后我们对J(θ)求导并令导数等于0:

                           

       最终求的解析解为:θ=(X^{T}X)^{-1}X^{T}Y

    2-解析解的代码实现

      手动实现: 

    
    import numpy as np
    import matplotlib.pyplot as plt
    from bz2 import __author__
    
    #设置随机种子
    seed = np.random.seed(100)
    
    #构造一个100行1列到矩阵。矩阵数值生成用rand,得到到数字是0-1到均匀分布到小数。
    X = 2 * np.random.rand(100,1)   #最终得到到是0-2均匀分布到小数组成到100行1列到矩阵。这一步构建列X1(训练集数据)
    #构建y和x的关系。 np.random.randn(100,1)是构建的符合高斯分布(正态分布)的100行一列的随机数。相当于给每个y增加列一个波动值。
    y= 4 + 3 * X + np.random.randn(100,1)
    
    #将两个矩阵组合成一个矩阵。得到的X_b是100行2列的矩阵。其中第一列全都是1.
    X_b = np.c_[np.ones((100,1)),X]
    
    #解析解求theta到最优解
    theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
    # print(theta_best)
    # 生成两个新的数据点,得到的是两个x1的值
    X_new = np.array([[0],[2]])
    
    # 填充x0的值,两个1
    X_new_b = np.c_[(np.ones((2,1))),X_new]
    
    print (X_new_b)
    
    # 用求得的theata和构建的预测点X_new_b相乘,得到yhat
    y_predice = X_new_b.dot(theta_best)
    print(y_predice)
    # 画出预测函数的图像,r-表示为用红色的线
    plt.plot(X_new,y_predice,'r-')
    # 画出已知数据X和掺杂了误差的y,用蓝色的点表示
    plt.plot(X,y,'b.')
    # 建立坐标轴
    plt.axis([0,2,0,15,])
    
    plt.show()
    

      利用sklearn包实现

    from sklearn.linear_model import  LinearRegression
    import numpy as np
    import matplotlib.pyplot as plt
    # 解析解求线性回归
    
    
    # 手动构建数据集和y与x的对应关系
    x = 2 * np.random.rand(100,1)
    y= 4 + 3*x + np.random.randn(100,1)
    
    line_reg = LinearRegression()
    # 训练数据集,训练完成后,参数会保存在对象line_reg中。
    line_reg.fit(x,y)
    
    # line_reg.intercept为截距,就是w0,line_reg.coef_为其他参数,coef的全拼为coefficient
    print(line_reg.intercept_,line_reg.coef_)
    
    x_new = np.array([[0],[2]])
    # line_reg.predict(x_new) 为预测结果
    print(line_reg.predict(x_new))
    
    plt.plot(x_new,line_reg.predict(x_new),'r-')
    # 画出已知数据X和掺杂了误差的y,用蓝色的点表示
    plt.plot(x,y,'b.')
    # 建立坐标轴
    plt.axis([0,2,0,15,])
    
    plt.show()

      运行结果如下:

      

      如果有的同学想要运行代码,需要安装pycharm和anaconda,将python的interrupt设置为anaconda的bin目录下的python就可以了。网上有很多教程,请原谅这里不再赘述了。

     此处需要说明,因为在使用解析解求解最小二乘的过程中,出现了矩阵求逆的步骤。因为有些矩阵没有逆矩阵,只能使用近似矩阵来代替,所以结果的精度会降低。二则矩阵求逆随着维度的增加,计算量也大大增加,求解速度变慢。所以一般情况下我们都会使用第二种求解办法:梯度下降。

    文章链接:梯度下降和随机梯度下降

          

    展开全文
  • 三、用矩阵求解多元线性回归

    千次阅读 2021-09-15 21:21:03
    一、多元线性回归函数;二、使用梯度下降法处理多元线性回归函数;三、特征缩放;四、学习率α;五、特征和多项式回归;六、正规方程

     一、多元线性回归函数

    上面解决了只有单一变量(面积)的房子价格预测问题,但是如果存在多个特征如:面积、卧室数量、楼层、修建年限等多个特征,如下:

    我们用m表示样本数量,n表示特征数量,x^{(i)}表示输入的第i个样本,x^{(i)}_{j}表示输入的第i个样本的第j个特征。

    只有一个变量时假设函数是:h_{\theta }(x)=\theta _0+\theta_1x,现在我们有4个特征,所以假设函数变为:h_{\theta }(x)=\theta _0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4,我们引入x_0=1,则方程可以变为:h_{\theta }(x)=x_0\theta _0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4,写成矩阵形式为:

    x=\begin{bmatrix} x_0\\ x_1\\ x_2\\ x_3\\ x_4\end{bmatrix} \theta=\begin{bmatrix} \theta_0\\ \theta_1\\ \theta_2\\ \theta_3\\ \theta_4\end{bmatrix} 则h_{\theta }(x)=x_0\theta _0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4=\theta^Tx

    这就是多特征的线性回归函数,我们称为多元线性回归函数。

    二、使用梯度下降法处理多元线性回归函数

    我们可以使用梯度下降处理一元线性回归函数的方法处理多元线性回归函数,如下图,左边是一元,右边是多元,注意其中的x_0=1

    三、特征缩放

    在进行梯度下降算法时,如果存在多个特征差距很大,比如房屋的卧室数量范围是1-5,面积值范围是500-2000,那么在进行梯度下降时,由于同样的步长,面积产生的数值更大,对结果的影响更大会导致函数的下降过程来回摇摆,收敛速度变慢。我们采用缩放的方法,将卧室数量/5,面积/2000,得到一个0和1之间的数值,那么下降过程就会顺滑很多,也会更快。如下:

    但是,要注意,如果特征值的范围过小时也要适当放大。特征值不用都在同一区间,但彼此之间的差距不要太大。

    均值归一化:(实际值-平均值)/最大值。经过均值归一化处理的数据能保证平均数为0的均匀分布。

    四、学习率α

    我们可以把梯度下降法的迭代次数作为横坐标,J(\theta)作为纵坐标,观察梯度下降算法是否收敛。

    在迭代一定的次数之后,函数下降的幅度很小,几乎为一条直线。此时就可以看做函数已经收敛。

    另外,也可以进行一种收敛的测试,设定一个阈值\varepsilon=10^{-3},如果代价函数J(\theta)一步迭代后的下降小于这个阈值,那么就可以认为函数收敛了。但是通常一个合适的阈值是难以确定的。曲线图会比较直观。 

    学习率α过大,会出现下面这样的迭代次数-代价函数图

    总结:学习率α过小,会出现收敛速度慢的问题;过大,会出现代价函数不会每次迭代都下降甚至不收敛

    五、特征和多项式回归

    (一)如何选取特征

    假设我们想卖出的房子的图片长度为20米,宽度为10米。我们就有两个特征长和宽,但是我们使用线性回归算法的时候并不一定要直接使用这两个特征,我们可以自己创造新的特征,我们实际观察到房子的价格其实与房子的面积关系最大,我们可以使area=长度*宽度,这就是房子的面积,两个特征变成了一个新特征。

    (二)选取不同的函数作为代价函数

    比如有下面这样一个模型,直线不能很好的拟合。我们可以用二次模型去拟合,但是二次函数会降下来,不合理。我们不觉得随着土地面积的增加,房子价格会降下来。我们使用一个三次函数去预测,如图中绿色曲线。

    那么假设函数就如下所示:

    六、正规方程

    (一)正规方程求解线性回归函数

    设有一个数据集如下所示,x1,x2,x3是特征,y为标签:

    x1x2x3y
    x11x12x13y1
    x21x22x23y2

    设假设函数为h_{\theta }(x)=\theta _0x_0+\theta_1x_1+\theta_2x_2+\theta_3x_3,其中x_0=1,即在数据集上加上一列全为1的x1,如下:

    则用矩阵的方式表示可得:h_{\theta }(x)=\theta _0x_0+\theta_1x_1+\theta_2x_2+\theta_3x_3等价于y=x\theta,其中:

    y=\begin{bmatrix} y_1\\ y_2\end{bmatrix}x=\begin{bmatrix} x_0 &x_{11} &x_{12} &x_{13} \\ x_{0} &x_{21} &x_{22} &x_{23} \end{bmatrix}\theta=\begin{bmatrix} \theta_0\\ \theta_1\\ \theta_2\\ \theta_3 \end{bmatrix},等价于\begin{bmatrix} y_1\\ y_2\end{bmatrix}=\begin{bmatrix} x_0 &x_{11} &x_{12} &x_{13} \\ x_{0} &x_{21} &x_{22} &x_{23} \end{bmatrix}\begin{bmatrix} \theta_0\\ \theta_1\\ \theta_2\\ \theta_3 \end{bmatrix},现在我们要求解\theta向量。因为x矩阵不是方阵,只有方阵才能求逆矩阵,所以我们需要把x转换为方阵,两边同时左乘x矩阵的转置,得:x^Ty=(x^Tx)\theta,其中(x^Tx)肯定是一个方阵,把它看做一个整体,两边同时右乘它的逆矩阵得:(x^Tx)^{-1}x^Ty=\theta,此时就求出了\theta向量。

    使用特征方程的话就不需要特征缩放了

    (二)特征方程的优缺点

    假设有m个样本,n个特征。

    梯度下降优点不需要多次迭代
    不需要选择学习速率α
    缺点

    当n特别大时需要计算(x^Tx)^{-1},这是一个n*n的矩阵,运算速度慢,时间复杂度大约是O(n^3)

    特征方程优点当n特别大时能很好的运行
    其中n的大小很难给出准确数字,但现在计算机的速度n在万级以下没有问题
    缺点需要选择学习速率α
    需要多次迭代

    对于一些复杂的方法,如一些分类算法,是无法使用特征方程求解的,我们只能使用梯度下降法。

    (三)正规方程以及不可逆性

    对于\theta=(x^Tx)^{-1}x^Ty,如果x^Tx不可逆,如何求解?我们把不可逆的矩阵称为退化矩阵或奇异矩阵,在实际情况中x^Tx不可逆的情况很少见。矩阵求逆有两种,分别为:伪逆(pseudo-inverse)和逆(inverse),数学上证明,即使矩阵是不可逆的,利用伪逆也可以求出结果。

    (1)一般出现x^Tx不可逆的情况

    ①冗余的特征

    如 x1=平方英尺,x2=平方米,那么两个特征之间有换算关系即 x1=3.28.3.28*x2,两列成倍数则矩阵不可逆

    ②特征数n大于样本数m

    删除一些特征或使用正则化方法可以解决这个问题

    展开全文
  • 梯度下降法 梯度下降法的基本思想可以类比为一个下山的过程。 假设这样一个场景:一个人被困在山上,需要从山上下来(找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低;因此,下山的路径就无法...
  • 利用MATLAB进行多元线性回归

    千次阅读 2021-04-21 02:46:03
    利用MATLAB进行多元线性回归 2.线性回归 b=regress(y,X) [b,bint,r,rint,s]=regress(y,X,alpha) 输入: y~因变量(列向量), X~1与自变量组成的矩阵, Alpha~显著性水平(缺省时设定为0.05) s: 3个统计统计 量:决定...
  • 用于多变量线性回归的梯度下降算法的 MATLAB 实现。此代码示例包括, 特征缩放选项 基于梯度范数容差或固定迭代次数的算法终止选择 具有随机指数的随机特征向量(确切的函数...并列实际函数系数和线性回归系数的最终表
  • 多元线性回归中有多种特征,每一种特征都与 y 呈线性关系,只是线性关系的系数不同;多元线性回归的模型可以解决一元线性回归问题;多元线性回归模型中,每一种特征都与值(也就是 y)呈线性关系,从θ1 到θn ,以此...
  • 基于jupyter notebook的python编程—–利用梯度下降算法求解多元线性回归方程,并与最小二乘法求解进行精度对比目录一、梯度下降算法的基本原理1、梯度下降算法的基本原理二、题目、表格数据、以及python环境搭建1、...
  • Python----多元线性回归

    千次阅读 2020-12-20 14:30:44
    多元线性回归1、多元线性回归方程和简单线性回归方程类似,不同的是由于因变量个数的增加,求取参数的个数也相应增加,推导和求取过程也不一样。、y=β0+β1x1+β2x2+ ... +βpxp+ε对于b0、b1、…、bn的推导和求...
  • 多元线性回归参数求解是一个矩阵求导的过程,所以需要知道一些矩阵运算、求导运算的公式: 然后对多元线性回归的损失函数进行求导,公式如下:(其中w、y、X都是矩阵) 令其为0: 其中倒数最后一步...
  • 梯度下降法求解多元线性回归模型

    千次阅读 2021-02-10 18:41:34
    机器学习多元线性回归模型 如果有两个或两个以上的自变量,这样的线性回归分析就称为多元线性回归 实际问题中,一个现象往往是受多个因素影响的,所以多元线性回归比一元线性回归的实际应用更广 梯度下降法求解...
  • 多元病态线性回归.zip

    2021-02-04 22:46:03
    多元病态线性回归问题的详细求解过程(MATLAB),附带相关数据与测试结果。 能解决病态线性回归问题、普通线性回归问题。相关解析https://blog.csdn.net/qq_38832757/article/details/113666103
  • 多元线性回归分析
  • 多元线性回归及显著性检验Matlab程序完美版 一说明 1本程序是硕士教材数理统计杨虎刘琼钟波 编著 例4.4.1P133Matlab编程解答程序教材上例题只做了回归方程显著性分析和一次回归系数显著性分析剔除x1后没有再检验x2和...
  • 来源于机器学习实战中p138,求解线性回归回归系数w的最优解,涉及到矩阵求导等知识,推导过程中还对矩阵求导的分子、分母布局进行说明,部分参考链接如下: 1....
  • 多元线性回归模型

    2022-06-27 09:52:23
    目录:一、引言 二、理想场景的预设 三、多元线性回归模型 四、鸢尾花数据集
  • 多元线性回归推导过程

    万次阅读 多人点赞 2018-08-06 20:26:23
    常用算法一 多元线性回归详解1 此次我们来学习人工智能的第一个算法:多元线性回归.文章会包含必要的数学知识回顾,大部分比较简单,数学功底好的朋友只需要浏览标题,简单了解需要哪些数学知识即可. 本章主要包括...
  • 【多元统计分析】10.多元线性回归

    千次阅读 2020-11-03 21:29:09
    多元线性回归是回归分析的基础。
  • 自用matlab多元线性回归方程代码
  • 最后整合为系数矩阵W,求解后分别对应截距b、a1、和a2。可见计算一个矩阵的逆是相当耗费时间且复杂的,而且求逆也会存在数值不稳定的情况。 梯度下降法迭代的次数可能会比较多,但是相对来说计算量并不是很大。且其有...
  • C#多元线性回归算法

    热门讨论 2013-04-10 19:09:51
    一个确实可行的C#解决多元回归问题的算法,代码写得比较明朗,需要的同学可以参考一下,有问题欢迎批评指正~
  • 多元线性回归matlab实现
  • 多元线性回归

    2019-08-05 17:25:06
    文章目录多元线性回归一、多元线性回归的数学推导二、多元线性回归的编程实现三、scikit-learn中的线性回归四、使用KNN进行多元回归五、线性回归算法的可解释性 ​ 其实就是把简单线性回归进行多元的推广。其中的...
  • 《MATLAB中多元线性回归的例子课件》由会员分享,可在线阅读,更多相关《MATLAB中多元线性回归的例子课件(12页珍藏版)》请在人人文库网上搜索。1、MATLAB中多元线性回归的例子,2.线性回归,b=regress(y,X) b,bint,r,...
  • 实现多元线性回归方程自变量的选择及系数求解,获得显著性拟合方程

空空如也

空空如也

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

多元线性回归系数求解

友情链接: pthreadPool.rar