线性回归

线性模型既有回归的,也有分类的;线性回归模型有一元线性回归和多元线性回归,还有拓展的广义线性模型。这里仅对基本的回归模型做一总结。

1. 一元线性回归

这是一种最简单的回归形式,也就是只有一个变量,表现在二维平面坐标系中就是一堆离散的点,我们要做的就是找到一条最好的直线对这些点进行拟合(如图所示),这些已知的离散点就是训练数据集。这样,对于一个新来的未知数据,我们只知道它的横坐标,就能根据模型预测出它的纵坐标。

                                    

要找出这条最优的直线,需要一个准则,也就是怎么样才算最优?因为这条直线是对训练数据点的拟合,我们可以使用均方误差作为性能度量,也就是找到那条与训练数据均方误差最小的直线。基于均方误差最小化来进行模型求解的方法称为最小二乘法”

在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。表现在图像上,就是训练样本点与线性回归模型的纵向距离。要确定这条直线y=wx+b,其实就是确定w和b两个参数。给定训练数据集为D=\left \{ (x_1,y_1 ),(x_2,y_2 ),...,(x_N,y_N) \right \},用残差平方和\small L=\sum_{i=1}^{N}\left ( f(x_i)-y_i) \right )^{2}来衡量误差,也就是使误差最小,即

                                      \large (w,b)=arg\min_{w,b}\sum_{i=1}^{N}(f(x_i)-y_i)^{2}                                    (1.1)

\small y_i=wx_i+b代入\small L,即得损失函数为

                                     \large L(w,b)=\sum_{i=1}^{N}(y_i-wx_i-b)^2                                            (1.2)

也就是求使式(1,2)值最小时的w和b. 又L是关于w和b的凸函数,求出导数为0点即可,即

                                              \large \left\{\begin{matrix} \frac{\partial L }{\partial w}=2 \left (w\sum_{i=1}^{N}x_{i}^{2}-\sum_{i=1}^{N}(y_i-b)x_i \right )=0\\ \frac{\partial L }{\partial b}=2\left ( mb-\sum_{i=1}^{N}(y_i-wx_i) \right )=0 \end{matrix}\right.                 (1.3)

解得

                                  \large \left\{\begin{matrix} w=\frac{\sum_{i=1}^{N}y_i(x_i-\bar{x})}{\sum_{i=1}^{N}x_{i}^{2}-\frac{1}{N}(\sum_{i=1}^{N}x_i)^{2}}\\ b=\frac{1}{N}\sum_{i=1}^{N}(y_i-wx_i) \end{matrix}\right.                                                        (1.4)

其中,\small \bar{x}=\frac{1}{N}\sum_{i=1}^{N}x_i为X的均值。

2. 多元线性回归

一元是最简单的情形,更常见的是多元情形,即每条数据有多个属性(特征),描述为:假设X和Y分别为输入和输出变量,并且Y是连续变量,给定训练数据集为\small D=\left \{ (\boldsymbol{x_1},y_1 ),(\boldsymbol{x_2},y_2 ),...,(\boldsymbol{x_N},y_N) \right \}, 其中\small \boldsymbol{x_i}=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})为输入实例(特征向量),n为特征个数,i=1,2,…,N,N为样本容量。也就是在n维空间中找到一个最好的超平面对训练数据进行拟合,一般形式为

                                \large y=w_1 x^{(1)}+w_2 x^{(2)}+...+w_n x^{(n)}+b=\boldsymbol{w^T x}+b       (2.1)

类似的,可利用最小二乘法来对w和b进行估计。为便于讨论,把w和b吸入向量形式(列)\small \hat{\boldsymbol{w}}=(\boldsymbol{w};b),相应的,把数据集D表示为一个\small N\times (n+1)大小的矩阵X,其中每行对应于一个样本示例,前n个元素对应于示例的n个属性值,最后一个元素恒置为1,即

                                       \boldsymbol{X}=\begin{bmatrix} x_{11} &x_{12} &\cdots &x_{1n} &1 \\ x_{21} &x_{22} &\cdots & x_{2n} & 1\\ \vdots & \vdots & \ddots & \vdots &\vdots \\ x_{N1} &x_{N2} &\cdots &x_{Nn} &1 \end{bmatrix}=\begin{bmatrix} \boldsymbol{x_{1}}^{T} &1 \\ \boldsymbol{x_{2}}^{T}& 1\\ \vdots & \vdots \\ \boldsymbol{x_{N}}^{T}& 1 \end{bmatrix}

再把输出也写成向量形式(列)\small \boldsymbol{y}=(y_1;y_2;\cdots ;y_N),则类似于式(1.1),要求的\small \hat{\boldsymbol{w}}

                                      \hat{\boldsymbol{w}}^{*}=arg\min_{\hat{\boldsymbol{w}}}(\boldsymbol{y}-\boldsymbol{X}\hat{\boldsymbol{w}})^{T}(\boldsymbol{y}-\boldsymbol{X}\hat{\boldsymbol{w}})                              (2.2)

损失函数为\small L(\hat{\boldsymbol{w}})=(\boldsymbol{y}-\boldsymbol{X}\hat{\boldsymbol{w}})^{T}(\boldsymbol{y}-\boldsymbol{X}\hat{\boldsymbol{w}}),对\small \hat{\boldsymbol{w}}求导并令其为0,有

                                      \frac{\partial L}{\partial \hat{\boldsymbol{w}}}=2\boldsymbol{X}^{T}(\boldsymbol{X}\hat{\boldsymbol{w}}-\boldsymbol{y})=0                                               (2.3)

上式求解涉及矩阵逆运算,当\boldsymbol{X}^{T}\boldsymbol{X}为满秩矩阵或正定矩阵时可得

                                       \hat{\boldsymbol{w}}^{*}=(\boldsymbol{X}_T\boldsymbol{X})^{-1}\boldsymbol{X}^T\boldsymbol{y}                                                       (2.4)

\small \hat{\boldsymbol{x}}=(\boldsymbol{x};1),则最终学得的多元线性回归模型可表示为

                                     f(\hat{\boldsymbol{x}})=\hat{\boldsymbol{x}}^T(\boldsymbol{X}^T\boldsymbol{X})^{-1}\boldsymbol{X}^T\boldsymbol{y}                                                 (2.5)

然而现实任务中\small \boldsymbol{X}^T\boldsymbol{X}往往不是满秩矩阵,例如在许多任务中我们会遇到大量的变量,其数目甚至超过样例数,导致X的列数多于行数,\small \boldsymbol{X}^T\boldsymbol{X}显然不满秩。对于这种情况我们可以使用梯度下降法进行求解,也就是先给定w和b一个初值,再根据损失函数一步一步进行迭代,对w和b进行优化。

3. 其他情形

3.1 广义线性模型

有时我们可以直观的看出数据点的走向并非是线性的,比如二维空间中一些离散点整体上呈现出指数变化趋势。这种情况下显然再用直线拟合是不合适的,我们可以对得到的回归值加上一个非线性映射,将线性回归模型的预测值与真实标记更贴切的联系起来。

如对于呈指数变化的数据集,可将模型调整为

                                                          y=e^{\boldsymbol{w}^T\boldsymbol{x}+b}                                                   (3.1)

                                                        lny=\boldsymbol{w}^T\boldsymbol{x}+b                                             (3.2)

这就是“对数线性回归”,它实际上是在试图让e^{\boldsymbol{w}^T\boldsymbol{x}+b}逼近y.

更一般地,考虑单调可微函数\small g(\cdot )作为非线性映射,即

                                                       y=g^{-1}(\boldsymbol{w}^T\boldsymbol{x}+b)                                            (3.3)

这样得到的模型称为“广义线性模型”,其中函数\small g(\cdot )称为“联系函数”。显然,对数线性回归是广义线性模型在g(\cdot )=ln(\cdot )时的特例。

3.2 多项式回归

多项式回归原理和线性回归类似,只是用的是高次多项式对数据进行拟合,可以对非线性数据拟合得更灵活,二维平面表现为一条曲线。一元多项式一般形式为

                                                    y=w_1x+w_2x^2+...+w_mx^m+b                    (3.4)

多项式回归从形式上不是线性的,但它可以转化为线性回归方程进行拟合:

(I) 对于一元m次多项式y=w_1x+w_2x^2+...+w_mx^m+b,令x=z_1,x^2=z_2,...,x^m=z_m,则该多项式可转化为m元线性回归方程

                                                   y=w_1 z_1+w_2 z_2+...+w_m z_m+b                     (3.5)

 

(II) 对于二元二次多项式\small \dpi{100} y=w_1 x_1+w_2 x_2+w_3 x_1^2+w_4 x_2^2+w_5 x_1 x_2+b,令\small x_1=z_1,x_2=z_2,x_1^2=z_3,x_2^2=z_4,x_1 x_2=z_5,则该多项式可转化为线性回归方程

                                                  y=w_1 z_1+w_2 z_2+w_3 z_3+w_4 z_4+w_5 z_5+b       (3.6)

3.3 性能评估—\boldsymbol{R^2}

R^2称为决定系数,反映因变量的全部变异能通过回归关系被自变量解释的比例。假设y_i为真实标记值,\bar{y}为真实标记的均值,\hat{y}_{i}=f(x_i)为预测值,令\small SST=\sum_{I=1}^{n}(y_i-\bar{y})^2\small SSR=\sum_{i=1}^{n}(\hat{y}_i-\bar{y})^2\small SSE=\sum_{i=1}^{n}(y_i-\hat{y}_i)^2,易知满足\small SST=SSR+SSE,则\small R^2定义为:

                                                   R^2=\frac{SSR}{SST}=\frac{\sum_{i=1}^{n}(\hat{y}_i-\bar{y})^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2}

                                                         =1-\frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2}                                  (3.7)

R^2可以用来评估预测效果,表示模型对数据的拟合程度。如R平方为0.8,则表示回归关系可以解释因变量80%的变异。换句话说,如果我们能控制自变量不变,则因变量的变异程度会减少80%.

4. python示例

(1) 一元线性回归:披萨价格预测

给定披萨尺寸和价格数据如下,建立线性回归模型并预测直径为12英寸的披萨价格。

尺寸

6

8

10

14

18

价格

7

9

13

17.5

18

由sklearn库实现,代码如下:

#-*-coding:utf-8-*-
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import numpy as np
#定义绘图格式
def runplt():
    plt.figure()
    plt.title('Pizza price predict')
    plt.xlabel('Diameter (inches)')
    plt.ylabel('Price (US$)')
    plt.axis([0, 25, 0, 25])
    plt.grid(True)
    return plt
plt = runplt()

#训练数据
X = [[6], [8], [10], [14], [18]]
Y = [[7], [9], [13], [17.5], [18]]
plt.plot(X, Y, 'r.')

#创建一个线性回归模型
model = LinearRegression()
#将训练数据给模型训练
model.fit(X, Y)

#测试披萨的尺寸大小
test_x = 12
#调用已训练的模型进行预测
pre = model.predict(test_x)
plt.plot(test_x, pre, 'g^')
print('均方差(残差平方和均值): %.2f' % np.mean((model.predict(X) - Y) ** 2))
print("预测12英寸的披萨价格为:",pre[0][0])
#由两点画出回归直线
test = [[0], [25]]
pre = model.predict(test)
plt.plot(test, pre, 'b-')
plt.show()

运行结果:

                              

               

(2) 二元线性回归

假设除了尺寸大小,披萨价格还与辅料种类有关(如下表所示),建立二元线性回归模型,并对(8,2),(9,0),(11,2),(16,2),(12,0)等数据点进行预测。

尺寸

6

8

10

14

18

辅料种类

2

1

0

2

0

价格

7

9

13

17.5

18

由sklearn库实现,代码如下:

from sklearn.linear_model import LinearRegression
X = [[6, 2], [8, 1], [10, 0], [14, 2], [18, 0]]
y = [[7], [9], [13], [17.5], [18]]
model = LinearRegression()
model.fit(X, y)
X_test = [[8, 2], [9, 0], [11, 2], [16, 2], [12, 0]]
y_test = [[11], [8.5], [15], [18], [11]]
predictions = model.predict(X_test)
for i, prediction in enumerate(predictions):
    print('Predicted: %s, Target: %s' % (prediction, y_test[i]))
print('R-squared: %.2f' % model.score(X_test, y_test))

运行结果:

pdf下载

参考

  1. 周志华.《机器学习》.清华大学出版社.
  2. 廖星宇.《深度学习入门之PyTorch》.电子工业出版社.
  3. CSDN. https://blog.csdn.net/guoyunfei20/article/details/78552892
  4. CSDN. https://blog.csdn.net/SA14023053/article/details/51703204
  5. CSDN. https://blog.csdn.net/RicardoSuzaku/article/details/78776296
  6. CSDN. https://blog.csdn.net/loveliuzz/article/details/78043168

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

禺垣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值