精华内容
下载资源
问答
  • 多元线性回归方程原理及其推导

    万次阅读 多人点赞 2018-10-21 14:19:22
    多元线性方程原理及推导 概念 1.在统计学中,线性回归方程是利用最小二乘函数对一个或多个自变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况...

    多元线性方程原理及推导

    概念

    1.在统计学中,线性回归方程是利用最小二乘函数对一个或多个自变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量的情况叫多元回归。
    2.在线性回归中,数据使用线性预测函数来建模,并且未知的函数模型参数也是通过数据来估计。这种模型被叫做线性模型。最常用的线性回归建模是给定的X的条件下y的条件分布的分位数作为X的线性函数表示。像所有形式的回归分析一样,线性回归也是把焦点放在给定X的值的y的条件概率分布,而不是X和y的联合概率分布(多元分析领域)。

    公式

    一元线性回归方程:y=a+bx
    a称为截距
    b为回归直线的斜率
    在这里插入图片描述
    多元线性回归方程:y=b0+b1X1+b2X2+…+bnXn
    b0为常数项
    b1,b2,b3,…bn称为y对应于x1,x2,x3,…xn的偏回归系数

    推导

    在这里插入图片描述
    在这里插入图片描述
    使用极大函数解释最小二乘
    在这里插入图片描述
    似然函数
    在这里插入图片描述
    高斯的对数似然与最小二乘
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    参数的解析式
    在这里插入图片描述

    总结

        自我认为多元线性方程的推导过程还是挺麻烦的,需要多看几遍。学习推导的过程中,我们要认识一些数学符号,一些方法,比如最小二乘,极大似然,梯度等等。
        事实上,一种现象常常是与多个因素相联系的(比如:房子总价与房子面积,房间数,地段这些因素相关),由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。因此多元线性回归比一元线性回归的实用意义更大。
    
    展开全文
  • 多元线性回归原理

    千次阅读 2019-03-27 21:36:17
    例子先行 一元线性:拿房价预测来说,房价就只与一个特征size(feet^2)有关: ... age of home....,为了引入这些特征,有了多元线性回归,x1,x2,x3,x4为特征,y为预测的价格。 符号引入: n:特征的数量 ...

    例子先行

    一元线性:拿房价预测来说,房价就只与一个特征size(feet^2)有关:

    多元线性:

    房子除了面积,还会有其他的特征:number of bedrooms;number of floors; age of home....,为了引入这些特征,有了多元线性回归,x1,x2,x3,x4为特征,y为预测的价格。

    符号引入:

                    n:特征的数量

                    x^{(i)}:第i个训练样例

                    x_j^{(i)}:第i个训练样例的第j个特征

    可以得到模型函数:\small h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n

    我们要假设x0为1,即(\small x_0^{(i)}=1),可以理解为我们增加了一个额外的第零个特征向量,因此我们的特征向量由原来的n个变为了n+1个,所以现在我们X的特征向量为:,n+1维向量,\small \theta=\begin{bmatrix} \theta_0\\ \theta_1\\ \theta_2\\ ...\\ \theta_n \end{bmatrix}的n+1维向量,则向量表示模型函数为:\small h_\theta(x)=\theta^Tx

    \small \theta^T=\begin{bmatrix} \theta_0 &\theta_1 &... &\theta_n \end{bmatrix},   而\small x=\begin{bmatrix} x_0\\ x_1\\ x_2\\ ...\\ x_n \end{bmatrix},所以内积\small \theta^Tx=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n

    定义代价函数:

    如图将模型写成向量形式,\small \theta_0...\theta_n用向量\small \theta代替,代价函数\small J(\theta_{0}...\theta_n)用向量J(\small \theta)代替,梯度下降的代价函数\small J(\theta_{0}...\theta_n)也用向量J(\small \theta)代替

    从0~n不断的update第j个特征的参数,即执行梯度下降的过程。下图是一元和多元的比较,

    具体求导过程和一元的类似,如下是推理证明过程。

    多元线性回归思路

    经过简单的一元线性回归知识,可以了解知道,多元线性回归是将原来一元的x变成了x的向量,由y=b+a*x到了y=a0+a1*X1+a2*X2+...+an*Xn,含有多个特征。

    得到一个直线(实际不是直线,有可能是面或者跟复杂的曲线(面))最大程度的拟合所有的点,

    方程:,x向量(x1~xn)和y都是已知的,只需要求出\Theta即可,所求出来的\Theta也是一个向量,即求得了线性回归的模型。

    先列举几个几个典型的模型:


    ● 最基本的单变量线性回归: 
    形如h(x)=theta0+theta1*x1
    ● 多变量线性回归: 
    形如h(x)=theta0+theta1*x1+theta2*x2+theta3*x3
    ● 多项式回归(Polynomial Regression): 
    形如h(x)=theta0+theta1*x1+theta2*(x2^2)+theta3*(x3^3) 
    或者h(x)=ttheta0+theta1*x1+theta2*sqr(x2) 
    但是可以令x2=x2^2,x3=x3^3,于是又将其转化为了线性回归模型。虽然不能说多项式回归问题属于线性回归问题,但是一般我们就是这么做的。
    ● 所以最终通用表达式就是: 
    这里写图片描述

              引自:https://blog.csdn.net/weixin_40014576/article/details/79918819#comments

    原理思路:

    由最小二乘法,多元线性回归的损失函数:和一元线性回归一样都是求\small \frac{1}{2m}\sum_{i=1}^{m}(y^{(i)}-\hat{y}^{(i)})^2的最小值,让预测结果和真实的结果的差值的平方 尽可能的小。

    \Theta是个向量,x也是个向量,\Theta原来为列向量,让\Theta变为行向量,转置\Theta^{T}

    \hat{y}^{(i)}做一个改变,在\Theta _{0}前面也乘以一个系数X_{0}^{(i)},为了不改变原式子,令X_{0}^{(i)}=1.

    所以X^{(i)}=(X_{0}^{(i)},X_{1}^{(i)},X_{2}^{(i)},....,X_{n}^{(i)}),由此\hat{y}^{(i)}可以变成向量形式:\hat{y}^{(i)}=X^{(i)}\cdot \theta^T

    推广到整个式子为:\hat{y}=X_b\cdot \theta^T,其中X_b\theta^T分别为(m,n+1)的矩阵和(n+1,1)的矩阵,

    所得结果\hat{y}为 所有的预测值组成的向量 。根据矩阵乘法法则,最后得到的是一个(m,1)的矩阵。

    我们的目标就是让代价函数最小:\small \frac{1}{2m}\sum_{i=1}^{m}(y^{(i)}-\hat{y}^{(i)})^2最小,变为向量形式为:\small \frac{1}{2m}\sum_{i=1}^{m}(y-\hat{y})^2,将\hat{y}=X_b\cdot \theta^T带入上式子得:

    \small \frac{1}{2m}(y-X_b\cdot \theta)^{T}(y-X_b\cdot \theta),在目标函数中,对第一个(y -X_{b}*\theta) 进行了转置,这是为了方便使用矩阵的乘法;转置之后,第一个式子为(1,m)的行向量,第二个式子为(m,1)的列向量;所以最终结果为一个值。

    最小二乘法求多元线性回归的参数

    在学习模型的任务中,我们要做到的是让预测值尽量逼近真实值,做到误差最小,而均方误差就是表达这种误差的一种,所以我们要求解多元线性回归模型,就是要求解使均方误差最小化时所对应的参数:(其中W 相当于\small \theta)

                                                                                                式(1)

    其中w*为模型对应的解,即使得均方误差函数最小化时的权重向量。

    那么,我们应该如何求w*呢?在这里,我们可以用最小二乘法对模型的参数进行估计,具体做法是:损失函数对需要求解的参数进行求导(求梯度),并且令其导数为0,求得相应的参数。

    在这里,我们需要让对w求导,在求导之前,我们来看一下两个求导公式:

                                                                                               式(2)

                                                                                               式(3)

     下图为详细的求导过程:

     损失函数对参数进行求导之后,可以求得:

                                                                                               式(4)

    令式(4)为零可得:

                                                                                               式(5)

    以上即为参数w最优解的闭式解,但我们可以发现w*的计算涉及矩阵的求逆,这样的话就有一些限制了,只有在X^T*X为满秩矩阵或者正定矩阵时,才可以使用以上式子计算。但在现实任务中,X^T*X往往不是满秩矩阵,这样的话就会导致有多个解,并且这多个解都能使均方误差最小化,但并不是所有的解都适合于做预测任务,因为某些解可能会产生过拟合的问题。

    缺点:时间复杂度高:O(n^3) (优化O(n^2.4)); 当我们有上百万个样本,或者上百万个特征的时候,运算时间会非常长;但是能直接求得数学解也是很不错的,因为在机器学习算法中,很少有算法可以直接求出数学解。

    优点:不需要对数据做归一化处理;结果是 原始数据运算得到结果,所以不存在量纲的问题;

    参考:https://www.cnblogs.com/pengyingzhi/p/5383801.html

    https://blog.csdn.net/qq_37610062/article/details/82532995

    展开全文
  • 线性回归1.1 基本形式1.2 最小二乘法推导2. Sklearn 实现参考资料 相关文章:机器学习 | 回归评估指标 1. 线性回归 线性回归,又称普通最小二乘法(Ordinary Least Squares, OLS),是回归问题最简单也最经典的...


    相关文章:

    机器学习 | 目录

    机器学习 | 回归评估指标

    监督学习 | 非线性回归 之多项式回归原理及Sklearn实现

    监督学习 | 线性回归 之正则线性模型原理及Sklearn实现

    监督学习 | 线性分类 之Logistic回归原理及Sklearn实现

    1. 线性回归

    线性回归,又称普通最小二乘法(Ordinary Least Squares, OLS),是回归问题最简单也最经典的线性方法。线性回归需按照参数 w 和 b,使得对训练集的预测值与真实的回归目标值 y 之间的均方误差(MSE)最小。

    均方误差(Mean Squared Error)是预测值与真实值之差的平方和除以样本数。

    线性回归没有参数,这是一个优点,但也因此无法控制模型的复杂度。

    1.1 基本形式

    线性回归预测模型:

    (1) f ( x ) = w 1 x 1 + w 2 x 2 + ⋅ ⋅ ⋅ + w n x n + b f(x)=w_1 x_1 + w_2 x_2 + \cdot \cdot \cdot + w_n x_n + b \tag{1} f(x)=w1x1+w2x2++wnxn+b(1)

    • f ( x ) f(x) f(x) 是预测值

    • n n n 是特征的数量

    • x i x_i xi 是第 i i i 个特征值

    • 偏置项 b b b 以及特征权重 w 1 , w 2 , ⋅ ⋅ ⋅ , w n w_1, w_2,\cdot \cdot \cdot ,w_n w1,w2,,wn

    这可以用更为简介的向量化表示。

    线性回归预测模型(向量化):

    (2) f ( x ) = w T ⋅ x + b = θ T ⋅ x \begin{aligned} f(x) &= w^T \cdot x + b \\ &= \theta^T \cdot x \\ \end{aligned}\tag{2} f(x)=wTx+b=θTx(2)

    • w = ( w 1 ; w 2 ; . . . ; w n ) w=(w_1;w_2;...;w_n) w=(w1;w2;...;wn)

    • w w w b b b 学习得到,模型就得以确定

    • θ = ( w ; b ) \theta=(w;b) θ=(w;b)

    1.2 成本函数

    在线性回归中,我们选择 MSE(均方误差)作为其成本函数(Cost Function),其原因在与:首先它是一个凸函数,其次是因为它是可导的,这两个条件决定了可以利用梯度下降法来求得 θ \theta θ 的最小值。

    2. w 的计算方式

    关于 w w w 的计算,有两种方法,一种是利用最小二乘法最小化 MSE 导出 w w w 的计算公式(标准方程);另一种是利用梯度下降法找出 MSE 的最小值。

    首先来看最小利用最小二乘法计算 w w w 的公式。

    利用最小二乘法最小化成本函数 ,可以得出 θ \theta θ 的计算方程(标准方程):[1]

    (3) θ ^ = ( X T ⋅ X ) ( − 1 ) ⋅ X T ⋅ y \hat{\theta} = (X^T \cdot X)^{(-1)} \cdot X^T \cdot y \tag{3} θ^=(XTX)(1)XTy(3)

    • θ ^ \hat{\theta} θ^ 是使成本函数 MSE 最小化的 θ \theta θ

    • y y y 是包含 y ( 1 ) y^{(1)} y(1) y ( m ) y^{(m)} y(m) 的目标值向量

    则最终学得的多元线性回归模型为:

    (4) f ( x ˉ i ) = x ˉ i ⋅ θ T = x ˉ i ⋅ ( X T X ) − 1 X T y \begin{aligned} f(\bar{x}_i) &= \bar{x}_i \cdot \theta^T \\ &= \bar{x}_i\cdot(X^TX)^{-1}X^Ty\\ \end{aligned}\tag{4} f(xˉi)=xˉiθT=xˉi(XTX)1XTy(4)

    其中: x ˉ i = ( x i ; 1 ) \bar{x}_i=(x_i;1) xˉi=(xi;1)

    推导过程如下:

    2.1 标准方程法

    2.1.1 普通形式

    标准方程法,又称标准最小二乘法,即通过最小二乘法求出 w w w b b b 或向量形式下的 θ \theta θ,由最小二乘法导出的 θ \theta θ 计算公式称为标准方程。

    首先来推导普通形式下 w w w b b b 的计算公式。

    线性回归试图学得:

    (5) f ( x i ) = w x i + b , 使 得 f ( x i ) ≃ y i f(x_i)=wx_i+b, 使得 f(x_i)\simeq y_i \tag{5} f(xi)=wxi+b,使f(xi)yi(5)

    如何确定 w w w b b b 呢?关键在于如何衡量 f ( x ) f(x) f(x) y y y 之间的差别。

    回想一下,训练模型就是设置模型参数知道模型最适应训练集的过程。要达到这个目的,我们首先需要知道怎么衡量模型对训练数据的拟合程度是好还是差,在 机器学习 | 回归评估指标 里,我们了解到回归模型最常见的性能指标有均方误差(MSE)。因此以 MSE 为线性回归模型的成本函数,在训练线性回归模型时,我们需要找到最小化 MSE 的 w w w w ∗ w^* w,即:

    (6) ( w ∗ , b ∗ ) = arg ⁡ min ⁡ ( w , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 = arg ⁡ min ⁡ ( w , b ) ∑ i = 1 m ( y i − w x i − b ) 2 \begin{aligned} (w^*,b^*) &= \mathop{\arg\min}\limits_{(w,b)}\sum_{i=1}^m(f(x_i)-y_i)^2 \\ &= \mathop{\arg\min}\limits_{(w,b)}\sum_{i=1}^m(y_i-wx_i-b)^2 \\ \end{aligned} \tag{6} (w,b)=(w,b)argmini=1m(f(xi)yi)2=(w,b)argmini=1m(yiwxib)2(6)

    均方误差有非常好的几何意义,它对应了常用的欧几里得距离(或简称欧氏距离,Euclidean distance),基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(least square method),在线性回归中,最小二乘法就是试图找出一条直线,使得所有样本到线上的欧氏距离之和最小。

    求解 w w w b b b 使得 E ( w , b ) = ∑ i = 1 m ( y i − w x i − b ) 2 E_{(w,b)}=\sum_{i=1}^m(y_i-wx_i-b)^2 E(w,b)=i=1m(yiwxib)2 最小化的过程,称为线性回归模型的最小二乘“参数估计”(parameter estimation),我们可以将 E ( w , b ) E_{(w,b)} E(w,b) 分别对 w w w b b b 求偏导,得到:[2]

    (7) ∂ E ( w , b ) ∂ w = 2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) \frac{\partial E_{(w,b)}}{\partial w} = 2\bigg(w\sum_{i=1}^m x_i^2 - \sum_{i=1}^m(y_i-b)x_i \bigg) \tag{7} wE(w,b)=2(wi=1mxi2i=1m(yib)xi)(7)
    (9) ∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) \frac{\partial E_{(w,b)}}{\partial b} = 2\bigg(mb - \sum_{i=1}^m(y_i-wx_i)\bigg) \tag{9} bE(w,b)=2(mbi=1m(yiwxi))(9)

    然后令公式 (8)、(9) 为零可以得到 w w w b b b 最优解的闭式(closed-form)解:

    (10) w = ∑ i = 1 m y i ( x i − x ˉ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 w = \frac{\sum_{i=1}^my_i(x_i-\bar{x})}{\sum_{i=1}^mx_i^2 - \frac{1}{m}\big(\sum_{i=1}^m x^i\big)^2} \tag{10} w=i=1mxi2m1(i=1mxi)2i=1myi(xixˉ)(10)
    (11) b = 1 m ∑ i = 1 m ( y i − w x i ) b = \frac{1}{m}\sum_{i=1}^m(y_i-wx_i) \tag{11} b=m1i=1m(yiwxi)(11)

    2.1.2 向量形式

    更一般的情形是对如有 n n n 个属性的数据集 D D D ,这时我们试图学得:

    (12) f ( x i ) = w T x i + b , 使 得 f ( x i ) ≃ y i f(x_i)=w^Tx_i+b, 使得 f(x_i)\simeq y_i \tag{12} f(xi)=wTxi+b,使f(xi)yi(12)

    这称为多元线性回归(multivariate linear regression).

    类似的,可利用最小二乘法对 w w w b b b 进行估计。为便于讨论,我们吧 w w w b b b 转换为向量形式 θ = ( w ; b ) \theta = (w;b) θ=(w;b),即:

    (13) f ( x i ) = w T ⋅ x i + b = θ T ⋅ x i \begin{aligned} f(x_i) &= w^T \cdot x_i + b \\ &= \theta^T \cdot x_i \\ \end{aligned}\tag{13} f(xi)=wTxi+b=θTxi(13)

    相应的,把数据集 D D D 表示为一个 m × ( d + 1 ) m \times (d+1) m×(d+1) 大小的矩阵 X X X,其中每行对应与一个示例,该行前 d d d 个元素对应与示例的 d d d 个属性值,最后一个元素恒为 1,即:

    (14) X = ( 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 1 ) = ( x 1 n T 1 x 2 n T 1 ⋮ ⋮ x m T 1 ) X = \left( \begin{array}{cc} x_{11} & x_{12} & \cdots& x_{1n} & 1\\ x_{21} & x_{22} & \cdots\ & x_{2n} & 1\\ \vdots & \vdots & \ddots\ & \vdots & \vdots\\ x_{m1} & x_{m2} & \cdots& x_{mn} & 1\\ \end{array} \right) =\left( \begin{array}{cc} x_{1n}^T & 1\\ x_{2n}^T & 1\\ \vdots & \vdots\\ x_{m}^T & 1\\ \end{array} \right)\tag{14} X=x11x21xm1x12x22xm2  x1nx2nxmn111=x1nTx2nTxmT111(14)

    再把标记也写成向量形式 y = ( y 1 ; y 2 ; ⋯   ; y m ) y=(y_1;y_2;\cdots;y_m) y=(y1;y2;;ym),类似于公式 (7) ,有:

    (15) θ ^ = arg ⁡ min ⁡ θ ( y − X θ ) T ( y − X θ ) \hat{\theta} = \mathop{\arg\min}\limits_{\theta}(y-X\theta)^T(y-X\theta)\tag{15} θ^=θargmin(yXθ)T(yXθ)(15)

    E θ = ( y − X θ ) T ( y − X θ ) E_{\theta}=(y-X\theta)^T(y-X\theta) Eθ=(yXθ)T(yXθ) ,对 θ \theta θ 求导得到:

    (16) d E θ d θ = 2 X T ( X θ − y ) \frac{dE_{\theta}}{d\theta}=2X^T(X\theta-y)\tag{16} dθdEθ=2XT(Xθy)(16)

    令上式为零可得 θ \theta θ 的最优解的闭式接,但由于涉及矩阵逆的计算,比单变量情形要复杂一些,下面我们做一个简单的讨论。

    X T X X^TX XTX 为满秩矩阵(full-rank matrix)或正定矩阵(positive definite matrix)时,令公式 (15) 为零可得标准方程

    (16) θ ^ = ( X T X ) − 1 X T y \hat{\theta}=(X^TX)^{-1}X^Ty \tag{16} θ^=(XTX)1XTy(16)

    其中 ( X T X ) − 1 (X^TX)^{-1} (XTX)1 是矩阵 ( X T X ) (X^TX) (XTX) 的逆矩阵,令 x ˉ i = ( x i , 1 ) \bar{x}_i=(x_i,1) xˉi=(xi,1) ,则最终学得的多元线性回归模型为:

    KaTeX parse error: No such environment: align* at position 9: \begin{̲a̲l̲i̲g̲n̲*̲}̲ f(\bar{x}…

    2.1.3 Python 实现

    我们利用 Python 简单实现一下 θ \theta θ 以及回归方程的计算,首先方程 y = 4 + 3 × x y=4+3\times x y=4+3×x生成 100 个数据点并可视化:

    import numpy as np
    import matplotlib.pyplot as plt
    
    X = 2 * np.random.rand(100, 1)
    y = 4 + 3 * X + np.random.randn(100, 1)
    
    plt.plot(X, y, "b.")
    plt.xlabel("$x_1$", fontsize=18)
    plt.ylabel("$y$", rotation=0, fontsize=18)
    plt.axis([0, 2, 0, 15])
    plt.show()
    
    <Figure size 640x480 with 1 Axes>
    

    接着我们利用公式 (16) 来计算 θ \theta θ

    X_b = np.c_[np.ones((100, 1)), X]  # 向量形式下 x 的输入为 (x, 1)
    theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
    theta
    
    array([[4.10499602],
           [2.78527083]])
    

    我们用区间的首尾两个点(x=0 和 x=2)来画出拟合直线。计算出 θ \theta θ 之后就可以利用公式 (17) 来计算两个点的的预测数据 y_predict :

    X_new = np.array([[0], [2]])
    X_new_b = np.c_[np.ones((2, 1)), X_new]  # add x0 = 1 to each instance
    y_predict = X_new_b.dot(theta)
    y_predict
    
    plt.plot(X_new, y_predict, "r-")
    plt.plot(X, y, "b.")
    plt.axis([0, 2, 0, 15])
    plt.show()
    

    2.1.4 计算复杂度

    标准方程需对矩阵 ( X T X ) (X^TX) (XTX) 求逆,这是一个 n × n n \times n n×n的矩阵( n n n 是特征数量)。对这种矩阵求逆计算复杂度通常为 O ( n 2.4 ) O(n^{2.4}) O(n2.4) O ( n 3 ) O(n^{3}) O(n3) 之间(取决于计算实现)。换句话说,如果将特征数量翻倍,那么计算时间将乘以大约 2 2.4 = 5.3 2^{2.4}=5.3 22.4=5.3 倍到 2 3 = 8 2^{3}=8 23=8 倍之间。[3]

    特征数量较大时(例如 100 000)时,标准方程的计算将极其缓慢

    好的一面是,相对于训练集中的实例数量 O ( m ) O(m) O(m) 来说,方程式线性的,所以能够有效的处理大量的训练集,只要内存足够。

    同样,线性回归模型一经训练(不论是标准方程还是其他算法),预测就非常快速,因为计算复杂度相对于想要预测的实例数量和特征数量来说,都是线性的。换句话说,对两倍的实例(或者是两倍的特征数)进行预测,大概需要两倍的时间。因此,我们来看看其他的优化算法:梯度下降算法。

    2.2 梯度下降法

    2.2.1 梯度下降原理

    关于梯度下降法的推导及 Python 实现,请参考我的另一片文章:机器学习 | 梯度下降原理及Python实现

    2.2.2 Python 实现

    机器学习 | 梯度下降原理及Python实现

    3. Sklearn 实现

    我们将使用线性回归根据体质指数 (BMI) 预测预期寿命。

    对于线性模型,我们将使用 sklearn.linear_model.LinearRegression 类(Sklearn 官方文档)。

    我们将使用线性回归模型对数据进行拟合并画出拟合直线。

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression
    
    bmi_life_data = pd.read_csv("data/bmi_and_life_expectancy.csv")
    
    bmi_life_model = LinearRegression()
    bmi_life_model.fit(bmi_life_data[['BMI']], bmi_life_data[['BMI']])
    
    y_1 = bmi_life_model.predict(np.array(min(bmi_life_data['BMI'])).reshape(-1,1))
    y_2 = bmi_life_model.predict(np.array(max(bmi_life_data['BMI'])).reshape(-1,1))
    
    y_1 = y_1.tolist()
    y_1 = [y for x in y_1 for y in x]
    
    y_2 = y_2.tolist()
    y_2 = [y for x in y_2 for y in x]
    
    plt.plot(bmi_life_data['BMI'], bmi_life_data['BMI'], 'b.')
    plt.plot([min(bmi_life_data['BMI']), max(bmi_life_data['BMI'])], [y_1, y_2], "r-")
    plt.xlabel("BMI")
    plt.ylabel('life_expectancy')
    plt.show()
    

    参考资料

    [1] 周志华. 机器学习[M]. 北京: 清华大学出版社, 2016: 53-56

    [2] Aurelien Geron, 王静源, 贾玮, 边蕤, 邱俊涛. 机器学习实战:基于 Scikit-Learn 和 TensorFlow[M]. 北京: 机械工业出版社, 2018: 103-106.

    [3] Aurelien Geron, 王静源, 贾玮, 边蕤, 邱俊涛. 机器学习实战:基于 Scikit-Learn 和 TensorFlow[M]. 北京: 机械工业出版社, 2018: 106-107.

    展开全文
  • 多元线性回归分析

    2016-09-13 22:05:07
    多元线性回归,对于学习数据分析很有帮助
  • 多元线性回归原理代码实现 原理 多元线性回归是一元线性回归的升级版吧,都是线性模型。 线性回归就是试图学到一个线性模型,尽可能的准确的预测出真实值。就是给机器数据集,其中包括x特征值和对应的y值,通过训练...

    多元线性回归

    原理

    多元线性回归是一元线性回归的升级版吧,都是线性模型
    线性回归就是试图学到一个线性模型,尽可能的准确的预测出真实值。就是给机器数据集,其中包括x特征值和对应的y值,通过训练得出一个模型,再只拿一些x特征值给它,这个模型给你预测出较为精准的y值。
    线性回归试图学到的模型是: f ( x ) = ω x i + b f(x)=\omega x_{i}+b f(x)=ωxi+b,使得预测值f(x)跟真实值y结果相似。看着眼熟不?其实本质就有点像我们的 f ( x ) = k x + b f(x)=kx+b f(x)=kx+b这条直线。上面的 ω \omega ω是权重,b是偏置。
    特征值单一的时候用一元线性回归,如果是多个特征决定一个y值,有多个权重,此时用多元线性回归,多元线性回归试图学得模型为: f ( x ) = ω T x i + b f(x)=\omega^{T} x_{i}+b f(x)=ωTxi+b

    在多元线性回归中,使用最小二乘法对参数 ω \omega ω和b进行参数估计,求解 ω \omega ω和b。在此为方便计算,把这两个参数吸收为向量形式进行处理,用 ω ^ \hat{\omega} ω^来表示: ω ^ = ( ω ; b ) \hat{\omega}=(\omega;b) ω^=ω;b,相应的把数据集表示为一个 m ∗ ( d + 1 ) m*(d+1) m(d+1)大小矩阵的X,其中每一行都应一个示例,该行前d个元素对应于示例的d个属性值,把最后一个元素恒置为1便于计算(m个数据,d+1个特征)
    再把y也写为向量形式:y=(y1;y2;y3;…ym)

    由上通过推导公式可得 ω ^ \hat{\omega} ω^的解
    最终学的多元线性回归模型是 f ( x ^ i ) = x ^ i ( X T X ) − 1 X T y f(\hat{x}_{i})=\hat{x}_{i}(X^{T}X)^{-1}X^{T}y f(x^i)=x^i(XTX)1XTy

    具体公式推导有些繁琐,想看看的可私我发手写推导。

    代码实现

    有两种方法进行实现:
    第一种,解析解形式,通过公式代码进行模型训练。
    第二种用sklearn库,简单粗暴的解决,它提供模型的训练函数,不用敲上面推导出来的公式代码了。

    这里使用混凝土抗压强度数据集进行测试,预测值y为混凝土抗压强度定量MPa

    第一种解析解形式:

    import numpy as np
    from sklearn.model_selection import train_test_split
    #混凝土抗压强度数据测试,预测值为混凝土抗压强度定量MPa
    import matplotlib.pyplot as plt
    
    data=np.loadtxt("F:/comdata/Concrete_Data.csv",delimiter=",",skiprows=1,dtype=np.float32);
    #print(data)
    #print(data.shape[0]) 1030行数据
    data1=np.ones((data.shape[0],1)) #全1矩阵,m=1030行n=1列
    #print(data1)
    data=np.hstack((data,data1))
    #print(data)
    y=data[:,0]
    X=data[:,1:]
    #print(y)
    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.8,random_state=42)
    w_hat=np.dot(np.dot(np.linalg.inv(np.dot(X_train.T,X_train)),X_train.T),y_train)
    y_predict=np.dot(X_test,w_hat)
    print(y_predict) #预测的mpa抗压强度值
    
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.title("解析解求解多元线性回归模型得到预测值与真实值对比图")
    plt.xlabel("样本ID")
    plt.ylabel("混凝土抗压强度MPa")
    plt.plot(range(len(X_test)),y_test,alpha=0.4,c="red") #s=2,c="red",
    plt.plot(range(len(X_test)),y_predict,ls="-",alpha=0.5,c="green")
    plt.show()
    
    

    结果:
    在这里插入图片描述

    第二种sklearn实现

    import numpy as np
    from sklearn import linear_model
    from sklearn.model_selection import train_test_split
    import matplotlib.pyplot as plt
    #混凝土抗压强度数据测试,预测值为混凝土抗压强度定量MPa
    #读入数据
    data=np.loadtxt("F:/comdata/Concrete_Data.csv",delimiter=",",skiprows=1,dtype=np.float32)
    #切片,分离数据,X,Y
    X=data[:,1:]
    y=data[:,0]
    #分割数据,分为训练集和测试集
    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.8)
    
    model=linear_model.LinearRegression();#获得线性模型
    #训练模型,用sklearn库里面的
    model.fit(X_train,y_train)
    #查看训练好的参数,就是w
    #print(model.coef_)
    
    #预测模型
    y_predict=model.predict(X_test)
    print(y_predict)
    
    #可视化展示
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.title("sklearn线性回归模型预测值与真实值对比图")
    plt.xlabel("样本ID")
    plt.ylabel("混凝土抗压强度MPa")
    plt.scatter(np.arange(300),y_test[:300],c="red")
    plt.scatter(np.arange(300),y_predict[:300],c="black")
    plt.show()
    

    结果:
    在这里插入图片描述

    数据集若需要可私我取。

    展开全文
  • 原标题:Python 实战多元线性回归模型,附带原理+代码 作者 | 萝卜来源 | 早起Python( ID:zaoqi-python )「多元线性回归模型」非常常见,是大多数人入门机器学习的第一个案例,尽管如此,里面还是有许多值得学习和...
  • 并与最小二乘法求解进行精度对比目录一、梯度下降算法的基本原理1、梯度下降算法的基本原理二、题目、表格数据、以及python环境搭建1、多元线性回归分析求解题目2、准备的多元线性回归方程的变量的表格数据3、搭建...
  • 多元线性回归多元线性回归模型实际中有很多问题是一个因变量与多个自变量成线性相关,我们可以用一个多元线性回归方程来表示。为了方便计算,我们将上式写成矩阵形式:Y = XW假设自变量维度为NW为自变量的系数,下标0...
  • Matlab_多元线性回归

    2015-01-15 14:51:11
    多元线性回归基本原理及其matlab实现
  • 主要介绍了基于PHP实现的多元线性回归模拟曲线算法,结合具体实例形式分析了多元线性回归模拟曲线算法的原理与相关php实现技巧,需要的朋友可以参考下
  • 多元线性回归的基础理解

    万次阅读 多人点赞 2018-11-19 01:09:28
    多元线性回归  Multivarate Linear Regression Multiple Feature 前面我们学习了一元线性回归,也动手亲自从底层编写了梯度下降算法来实现一元线性回归。相信大家已经对梯度下降和线性回归有了很清晰的理解了。 ...
  • 点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤寥落古行宫,宫花寂寞红。前言「多元线性回归模型」非常常见,是大多数人入...
  • 多元线性回归之预测房价一、多元线性回归二、使用EXCEL三、Python中使用Sklearn分析四、总结参考 一、多元线性回归 在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个...
  • 一元线性回归:梯度下降法 一元线性回归线性回归的最简单的一种,即只有一个特征变量。首先是梯度下降法,这是比较经典的求法。一元线性回归通俗易懂地说,就是一元一次方程。只不过这里的斜率和截距要通过最小...
  • 多元回归,参数较多,如何推导? 2:梯度下降法: 梯度下降算法是一种通过不断迭代的方式求取代价函数最小/最大值的经典算法。其基本思想类似于爬山人快速下山的过程:以爬山人当前所处位置为基准寻找下山最...
  • 线性回归算法原理

    千次阅读 多人点赞 2021-03-14 15:54:35
    线性回归算法原理预测函数从一元到多元标量、向量、矩阵符号的定义标量展开式标量求和式向量内积式矩阵乘法式损失函数0-1损失绝对损失平方损失经验风险基本公式线性回归的经验风险梯度下降偏导数与梯度梯度下降的...
  • 其中多元共线性这个问题将贯穿所有的机器学习模型,所以本文会将原理知识穿插于代码段中,争取以不一样的视角来叙述和讲解如何更好的构建和优化多元线性回归模型。主要将分为两个部分: 详细原理 Python 实战 ...
  • 1. 与简单线性回归区别(simple linear regression)多个自变量(x)2. 多元回归模型y=β0+β1x1+β2x2+ … +βpxp+ε其中:β0,β1,β2… βp是参数ε是误差值3. 多元回归方程E(y)=β0+β1x1+β2x2+ … +βpxp4....
  • 【算法1】多元线性回归

    千次阅读 2019-09-30 10:15:03
    多元线性回归模型的可解释性强,模型泛化能力比较好。使得它在实际商业环境中使用广泛。这里推出多元回归模型的个人见解,其中若有纰漏之处,恳请各位看官“怒怼”,小落必然“痛改前非,再接再厉”。大家一起学习,...
  • 线性方程为例,设有线性方程: ytrue=θ0+θ1x1+θ2x2…+θnxny_{true} = \theta_0 + \theta_1x_1 + \theta_2x_2…+ \theta_nx_nytrue​=θ0​+θ1​x1​+θ2​x2​…+θn​xn​ 如果现在我们手头上已经有了N组...
  • 1.多元线性回归SPSS分析 四步搞定SPSS多元线性回归视频教程(含详细操作及结果解读)_哔哩哔哩_bilibili订阅陈老师B站送福利!订阅后加陈老师QQ1622275006送数据分析教程及软件福利哟~关注微信公众号:杏花开医学...
  • 机器学习算法(8)之多元线性回归分析理论详解

    万次阅读 多人点赞 2018-08-29 16:28:27
    前言:当影响因变量的因素是多个时候,这种一个变量同时与多个变量的回归问题就是多元回归,分为:多元线性回归和多元非线性回归。线性回归(Linear regressions)和逻辑回归(Logistic regressions)是人们学习算法的第...
  • 多元线性回归

    千次阅读 2017-03-04 14:34:14
    多元线性回归基本原理基本计算过程与一元线性回归相同,但由于自变量个数多,计算相当麻烦,一般在实际中应用时都要借助统计软件。介绍多元线性回归的一些基本问题。但由于各个自变量的单位可能不一样,比如说一...
  • 多元线性回归分析 通过研究自变量 XXX 和因变量 YYY 的相关关系,尝试去解释 YYY 的形成机制,进而达到通过 XXX 去预测 YYY 的目的 。 文章目录(1) 回归分析的简介1. 相关性2. 因变量 YYY 3. 自变量 XXX 4. 回归...
  • 社会经济现象的变化往往受到多个因素的影响,因此,一般要进行多元回归分析,我们把包括两个或两个以上自变量的回归称为多元线性回归,元线性回归的基本原理基本计算过程与一元线性回归相同,但由于自变量个数多,...
  • 当影响因变量的因素是多个时候,这种一个变量同时与多个变量的回归问题就是多元回归,分为:多元线性回归和多元非线性回归。这里直说多元线性回归。对比一元线性回归:1.1多元回归模型:1.2多元回归方程1.3估计的...
  • 相关系数公式 y=βx ,β为相关系数的标准化后取值 线性回归分析 小数据 import statsmodels.formula.api as smf result=smf.ols('体重~饮食+性别+亲缘+运动时间+骑行时间',data=data1).fit() result.summary()#汇总...
  • 四、一元线性回归 1. 预测函数 输入 输出 0 1 1 3 2 5 3 7 4 9 … … 预测函数为:y=1+2xy=1+2xy=1+2x 预测:输入10;输出21 y=w0+w1xy=w_0+w_1xy=w0​+w1​x,任务就是寻找预测函数中的...
  • 多元线性回归,主要是研究一个因变量与多个自变量之间的相关关系,跟一元回归原理差不多,区别在于影响因素(自变量)更多些而已,例如:一元线性回归方程 为:毫无疑问,多元线性回归方程应该为:上图中的 x1, x2, xp...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,684
精华内容 3,073
关键字:

多元线性回归的基本原理