线性回归 linear regression 原理及推导

概述

  • 优点:容易计算,易于理解和实现
  • 缺点:容易欠拟合
  • 适用数据类型:数值型和标称型

口头描述

线性回归试图构造一个线性函数,去拟合尽可能多的样本点。重点是如何确定线性函数的参数,使得该函数尽量穿过样本点,一般使用均方误差最小化来作为参数拟合效果的标准。

算法推导(解方程的方法)

  • 给定训练数据集D={(xi,yi)}i=1mD=\{(x_i,y_i)\}_{i=1}^mD={(xi,yi)}i=1m,样本xix_ixiddd个属性描述,线性模型为:
    fω(x)=ωTx+b  ,  f(x)⋍y f_\omega(x)=\omega^Tx+b \; ,\;f(x) \backsimeq y fω(x)=ωTx+b,f(x)y
  • 使用均方误差衡量f(x)f(x)f(x)yyy之间的差别,我们的目标是使他们的差别最小化。
    Es(square  loss)=∑i=1m(f(xi)−yi)2 E_s(square \; loss)=\sum_{i=1}^{m}(f(x_i)-y_i)^2 Es(squareloss)=i=1m(f(xi)yi)2
  • 使用矩阵进行表达
    • 参数向量矩阵:
      ω^=(ω;b)=[ω1ω2...ωdb] \hat{\omega}=(\omega ;b)= \begin{bmatrix} \omega_1 \\ \omega_2\\ ... \\ \omega_d \\ b \end{bmatrix} ω^=(ω;b)=ω1ω2...ωdb
      注意: ω^\hat{\omega}ω^d+1d+1d+1111列的
    • 数据集矩阵:
      X=[x11x12…x1d1x21x22...x2d1⋮⋮⋱⋮⋮xm1xm2…xmd1]=[x1T1x2T1⋮⋮xmT1] X=\begin{bmatrix} x_{11}&x_{12}&\dots&x_{1d}&1 \\ x_{21}&x_{22}&...&x_{2d}&1 \\ \vdots&\vdots&\ddots& \vdots&\vdots\\ x_{m1}&x_{m2}& \dots&x_{md}&1 \end{bmatrix} =\begin{bmatrix} x_1^T&1 \\ x_2^T&1 \\ \vdots&\vdots \\ x_m^T&1 \end{bmatrix} X=x11x21xm1x12x22xm2...x1dx2dxmd111=x1Tx2TxmT111
      注意:最后一列全是1,前d个元素对应样本的d个属性值
    • 标记矩阵:
      y=[y1y2⋮ym] y=\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{bmatrix} y=y1y2ym
  • 则均方误差为:
    Es=(y−Xω^)T(y−Xω^) E_s=(y-X\hat{\omega})^T(y-X\hat{\omega}) Es=(yXω^)T(yXω^)
  • Eω^=(y−Xω^)T(y−Xω^)E_{\hat{\omega}}= (y-X\hat{\omega})^T(y-X\hat{\omega})Eω^=(yXω^)T(yXω^),对ω^\hat{\omega}ω^求导得:
    ∂Eω^∂ω^=2XT(Xω^−y) \frac{\partial E_{\hat{\omega}}}{\partial \hat{\omega}}=2X^T(X\hat{\omega}-y) ω^Eω^=2XT(Xω^y)
    令上式为零可得ω^\hat{\omega}ω^的最优解的闭式解
    ω^∗=(XTX)−1XTy \hat{\omega}^*=(X^TX)^{-1}X^Ty ω^=(XTX)1XTy
    解出上式,也就得到了模型的公式:
    f(xi^)=xi^T(XTX)−1XTy f(\hat{x_i})=\hat{x_i}^T(X^TX)^{-1}X^Ty f(xi^)=xi^T(XTX)1XTy
    其中,
    xi^=[xi1xi2⋮xid1] \hat{x_i}= \begin{bmatrix} x_{i1}\\ x_{i2}\\ \vdots \\ x_{id} \\ 1 \end{bmatrix} xi^=xi1xi2xid1

算法推导(梯度下降)

目标是使均方误差最小化,即:
min  E(square  loss)=12m∑i=1m(fω^(xi)−yi)2 min \;E(square \; loss)=\frac{1}{2m}\sum_{i=1}^{m}(f_{\hat{\omega}}(x_i)-y_i)^2 minE(squareloss)=2m1i=1m(fω^(xi)yi)2
这里的12m\frac{1}{2m}2m1是为了方便求偏导

对误差函数做偏导,对于每个特征(ωn\omega ^nωn),其梯度(偏导)为:
∂E∂ωn=1m∑i=1m(fω^(xi)−yi)⋅xin \frac{\partial E}{\partial \omega^n}=\frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^n_i ωnE=m1i=1m(fω^(xi)yi)xin
这里是对每一个特征进行了求导,因为
fω^(xi)=ω0xi0+ω1xi1+⋯+ωnxin      (xi:the  ith  data) f_{\hat{\omega}}(x_i)=\omega ^0x^0_i +\omega^1x^1_i+\dots+\omega^nx^n_i\;\;\;(x_i:the \; i^{th} \; data) fω^(xi)=ω0xi0+ω1xi1++ωnxin(xi:theithdata)
则梯度下降的流程就是:

重复此过程直到收敛 {

ω0:=ω0−α1m∑i=1m(fω^(xi)−yi)⋅xi0 \omega^0:=\omega^0-\alpha \frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^0_i ω0:=ω0αm1i=1m(fω^(xi)yi)xi0
ω1:=ω1−α1m∑i=1m(fω^(xi)−yi)⋅xi1 \omega^1:=\omega^1-\alpha \frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^1_i ω1:=ω1αm1i=1m(fω^(xi)yi)xi1
⋮ \vdots
ωn:=ωn−α1m∑i=1m(fω^(xi)−yi)⋅xin \omega^n:=\omega^n-\alpha \frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^n_i ωn:=ωnαm1i=1m(fω^(xi)yi)xin
}

解释一下,∑i=1m(fω^(xi)−yi)\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)i=1m(fω^(xi)yi)的意思是计算每个预测值与实际值的差别的总和。另外,对每个ωi\omega^iωi进行更新都是独立的,应当把所有的ωi\omega^iωi全部计算出来后再对其进行赋值更新。

XTXX^TXXTX的要求

当矩阵XTXX^TXXTX是满秩矩阵的时候,上述最优解成立,但是很多情况下XTXX^TXXTX往往不是满秩矩阵,此时可以解出ω^\hat{\omega}ω^,他们都能使均方误差最小化,选择哪一个作为输出,将由学习算法的归纳偏好决定,常见的做法是引入正则化项。

对数线性回归

我们希望回归模型去逼近ln  yln\;ylny不是yyy时,模型变为
ln  y=ωTx+b ln\; y=\omega^Tx+b lny=ωTx+b
这就是对数线性回归

<think>好的,我现在需要帮助用户了解线性回归的概念、实现方法和应用场景。首先,我应该回顾一下用户提供的引用内容,确保回答准确并正确引用。用户引用了三篇关于线性回归的文章,涵盖了基本概念、实现代码、模型训练、优化方法以及过拟合处理等内容。 首先,我需要明确线性回归的基本定义。根据引用[1]和[3],线性回归是一种用于建立自变量和因变量之间线性关系的模型。它的核心是找到最佳拟合直线,即最小化预测值与真实值之间的误差平方和。这里需要解释清楚线性回归的数学表达式,比如使用$y = \theta_0 + \theta_1x_1 + ... + \theta_nx_n$,并提到误差项$\epsilon$。 接下来是线性回归的实现方法。用户提到了scikit-learn库中的LinearRegression类,如引用[1]中的代码示例。我需要分步骤说明如何使用这个库:导入模块、创建模型对象、拟合数据、进行预测。同时,根据引用[2],还需要介绍两种解法:最小二乘法和梯度下降法。这里可能需要简要解释这两种方法的原理,但不需要深入数学推导,保持简洁。 然后是应用场景。引用[3]指出线性回归应用广泛,适合作为入门算法。我需要列举几个典型领域,比如经济学中的价格预测、金融中的风险评估、市场营销中的销量分析等,并说明其适用条件,如变量间存在线性趋势、数据噪声少的情况。 用户可能还关心过拟合与欠拟合的处理,引用[2]提到了岭回归、Lasso回归和弹性网。这部分可以作为优化方法或扩展内容,但用户的问题主要集中在实现和应用,所以可能放在相关问题里比较合适。 在整理结构时,需要按照概念、实现、应用来组织内容,每个部分使用标题,并确保行内公式使用$...$,独立公式用$$...$$。例如,线性回归模型的数学表达式应单独成段,使用双美元符号包裹。 同时,需要检查LaTeX语法是否正确,比如积分符号的例子是否正确,是否有拼写错误。确保所有的数学表达式都正确无误,比如系数θ的表示是否正确。 最后,生成相关问题时要基于用户提供的引用内容,可能涉及性能分析、优化方法、应用场景扩展等。比如,如何评估线性回归模型?如何处理多重共线性问题?线性回归在时间序列预测中的应用? 在引用部分,需要确认每个引用标识对应正确的内容,例如引用[1]中的代码示例,引用[2]中的过拟合处理方法,引用[3]中的算法应用场景。 现在,我需要确保回答结构清晰,步骤明确,并且自然融入引用标识。例如,在提到使用scikit-learn实现时,末尾添加[^1],在讨论过拟合方法时引用[^2]。</think>### 线性回归 Linear Regression 实现与应用 #### 一、基本概念 线性回归Linear Regression)是一种通过建立自变量(特征)与因变量(目标)之间的线性关系进行预测的监督学习算法[^3]。其数学形式为: $$ y = \theta_0 + \theta_1x_1 + \theta_2x_2 + \dots + \theta_nx_n + \epsilon $$ 其中,$y$为预测值,$\theta_i$为模型系数,$\epsilon$为误差项。核心目标是找到一组系数,使得预测值与实际值的**均方误差(MSE)**最小化。 #### 二、实现方法 1. **Scikit-learn实现** 引用[1]提供了基于Python的代码示例: ```python from sklearn.linear_model import LinearRegression lin_reg = LinearRegression() # 创建模型对象 lin_reg.fit(X_train, y_train) # 拟合训练数据 y_pred = lin_reg.predict(X_test) # 预测新数据 ``` 2. **数学解法** - **最小二乘法**:直接通过矩阵运算求解闭式解 $\theta = (X^TX)^{-1}X^Ty$,适用于特征维度低且可逆的情况。 - **梯度下降法**:通过迭代更新系数 $\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j}J(\theta)$,适合高维数据。 #### 三、应用场景 线性回归广泛应用于以下领域: 1. **经济学**:预测商品价格与供需关系 2. **金融**:分析股票收益率与市场指数 3. **市场营销**:评估广告投入与销售额的关联 4. **工程**:建立物理量之间的近似关系(如温度与材料膨胀) **适用条件**:变量间存在线性趋势、数据噪声较少、特征无多重共线性。 #### 四、优化与扩展 1. **过拟合处理** 引用[2]提到可通过正则化方法改进: - **岭回归(Ridge)**:添加L2正则项,缓解多重共线性 - **Lasso回归**:添加L1正则项,实现特征选择 - **弹性网**:结合L1和L2正则化 2. **模型评估** 常用指标包括$R^2$(拟合优度)、MSE(均方误差),交叉验证方法如K折验证可提升可靠性。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值