跳转至

线性回归原理

学习目标

  1. 掌握线性回归模型公式含义
  2. 掌握 LinearRegression API 的使用

1 线性回归应用场景

  • 房价预测

  • 销售额预测

  • 贷款额度预测

线性关系举例:

image-20190220211910033

2 什么是线性回归

2.1 定义与公式

线性回归(Linear regression)是利用 回归方程(函数)一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。

特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归。

通用公式 \(h(w)=w{_1}x{_1}+w{_2}x{_2}+w{_3}x{_3}+...+b=w^Tx+b\),

其中\(w\), \(x\)可以理解为矩阵:\(w= \begin{pmatrix} b \\ w{_1} \\ w{_2} \\ \vdots \end{pmatrix}\), \(x= \begin{pmatrix} 1 \\ x{_1} \\ x{_2}\\\vdots \end{pmatrix}\)

线性回归用矩阵表示举例:

\(\begin{cases}1 \times x{_1} + x{_2} = 2 \\ 0 \times x{_1} + x{_2} = 2 \\ 2 \times x{_1} + x{_2} = 3 \end{cases}\)

写成矩阵形式:

\(\begin{split} &\begin{bmatrix} 1 \quad 1 \\ 0 \quad 1 \\ 2 \quad 1 \end{bmatrix} &\begin{bmatrix} x{_1} \\ x{_2} \end{bmatrix} &=&\begin{bmatrix} 2 \\ 2 \\ 3 \end{bmatrix} \\ &\quad\:\: \uparrow &\:\:\:\uparrow &&\:\:\: \uparrow \\ &\quad\:\: A\;\times\;&\:\:\:\: x&=&\:\:\:\: b \end{split}\)

从列的角度看:

\(\begin{split} &\begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix} &\times& x{_1} &+& &\begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} &\times& x{_2} & = &\begin{bmatrix} 2 \\ 2 \\ 3 \end{bmatrix} \\ &\:\:\:\uparrow&&&&&\:\:\:\uparrow&&&&\:\:\:\uparrow \\ &\:\:\:\:a{_1} &\times& x{_1} &+& &\:\:\:a{_2} &\times& x{_2} &=&\:\:\:\:b \end{split}\)

那么怎么理解呢?我们来看几个例子

  • 期末成绩:0.7×考试成绩+0.3×平时成绩
  • 房子价格 = 0.02×中心区域的距离 + 0.04×城市一氧化氮浓度 + (-0.12×自住房平均房价) + 0.254×城镇犯罪率

上面两个例子, 我们看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型

2.2 线性回归的特征与目标的关系分析

线性回归当中主要有两种模型, 一种是线性关系,另一种是非线性关系。 在这里我们只能画一个平面更好去理解,所以都用单个特征或两个特征举例子。

线性关系 :

  • 单变量线性关系:

线性关ç³"图

  • 多变量线性关系

多变量线性关ç³"

注释:单特征与目标值的关系呈直线关系,或者两个特征与目标值呈现平面的关系

更高维度的我们不用自己去想,记住这种关系即可

  • 非线性关系

非线性关ç³"

注释:为什么会这样的关系呢?原因是什么?

如果是非线性关系,那么回归方程可以理解为:

\(w_1x_1+w_2x_2^2+w_3x_3^2\)

3. 线性回归API初步使用

3.1 线性回归API

sklearn中, 线性回归的API在linear_model模块中

sklearn.linear_model.LinearRegression()

  • LinearRegression.coef_:回归系数

3.2 举例

代码实现:

from sklearn.linear_model import LinearRegression
# 加载数据
x = [[80, 86],
     [82, 80],
     [85, 78],
     [90, 90],
     [86, 82],
     [82, 90],
     [78, 80],
     [92, 94]]

y = [84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]

# 实例化API
estimator = LinearRegression()
# 使用fit方法进行训练
estimator.fit(x,y)
print(estimator.coef_)
# 对未知样本预测
estimator.predict([[100, 80]])

4. 小结

  1. 线性回归公式 \(h(w)=w{_1}x{_1}+w{_2}x{_2}+w{_3}x{_3}+...+b=w^Tx+b\),h(w) 为目标值
  2. 线性回归公式中,w、b 代表模型参数
  3. LinearRegression.fit 表示模型训练函数
  4. LinearRegression.predict 表示模型预测函数
  5. 线性回归模型的目标:通过学习得到线性方程的这两个权值,如在y=kx+b中,得到k和b两个权值,并用这个方程解释变量和目标变量之间的关系。

image-20220118145617632