机器学习回归分析-线性回归(Linear Regression)

Contents

一、背景

回归分析(Regression Analysis)——建立因变数 与自变数 之间关系的模型

  • 线性回归(Linear Regression)
  • 多项式回归(Polynomial Regression)
  • 岭回归(Ridge Regression)
  • 套索回归(Lasso Regression)
  • 逻辑回归(Logistic Regression)

二、线性回归

2.1. 定义

假设输入的 是线性关系,预测的 通过线性方程建立机器学习模型。

  • 样本特征只有一个的线性回归问题,为一元线性回归。
  • 样本特征有多个的线性回归问题,为多元线性回归。

2.2 示例

如图,对于一元线性回归,根据自变量 和因变量 ,拟合出一条直线
image2
image2
对于多元线性回归,我们以二元为例,绘图如下(图片来源于线性回归百科image3

三 线性回归目标函数及求解

3.1 目标函数

  • 假定目标函数 是关于属性描述 的线性函数(学习参数 )


  • 目标函数:学习最优的
  • 方法:最小二乘法
    线性模型用一个直线(平面)拟合数据点,找出一个最好的直线(平面)即要求每个真实点距离平面的距离最近。
    即使得残差平方和(Residual Sum of Squares, RSS)最小:

    为消除样本量的差异,也会用最小化均方误差(MSE)拟合:

3.2 梯度下降(Gradient Descent)(BGD,SGD,MBGD)

  • 批量梯度下降(Batch Gradient Descent)
    批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新。    
    由于我们有 个样本,这里求梯度的时候就用了所有m个样本的梯度数据。
    优点:得到全局最优解;易于并行实现
    缺点:当样本数目很多时,训练过程会很慢

  • 随机梯度下降(Stochastic Gradient Descent)
    随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。对应的更新公式是:

    随机梯度下降法,和批量梯度下降法是两个极端,一个采用所有数据来梯度下降,一个用一个样本来梯度下降。
    对于训练速度来说,随机梯度下降法由于每次仅仅采用一个样本来迭代,训练速度很快,而批量梯度下降法在样本量很大的时候,训练速度不能让人满意。
    对于准确度来说,随机梯度下降法用于仅仅用一个样本决定梯度方向,导致解很有可能不是最优。对于收敛速度来说,由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。
    优点:训练速度快
    缺点:准确度下降,可能跳出最优解,不是全局最优

  • 小批量梯度下降法(Mini-batch Gradient Descent)
    小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于个样本,我们采用x个样子来迭代,
    一般可以取 ,当然根据样本的数据,可以调整这个 的值。对应的更新公式是:

3.3 正规方程组(The Normal Equation)

正规方程则是通过数学方法一次性求得最优解。 image4
代码实现可参考 机器学习(2)之正规方程组

注意:

  • 矩阵()不可逆
    • 原因1:所求参数大于样本数。
      措施 :增加样本数。
    • 原因2:特征值太多。
      措施 :删除一些冗余的特征值。
  • 样本量n太大
    矩阵求逆的计算复杂度为 O(n3),当样本量太大时,计算量过大,此时,不建议采用。
  • 函数太复杂 此时无法使用正规方程法。

3.4 概率解释:最大似然估计

误差: 真实值与预测值存在的差异(用 表示误差)

且误差 独立并且同分布的, 并且服从均值为 0 方差 高斯分布

最大似然估计(maximum likelihood estimation, MLE)
(种重要而普遍的求估计量的方法。通过调整估计参数,使得已经实现的样本发生概率最大。)

误差服从高斯分布,先不考虑方差,则出现误差 的概率为:

将误差代入以上公式,得:

对已发生的样本,出现的概率为:

取对数:

使出现概率最大,即使上面方程达到最大,
通过简单变换转换成求最小值问题,得使以下方程最小:


以上方程与最小二乘法相似,以下均以此函数作为损失函数。

3.5 优化算法比较:

梯度下降法和正规方程法的优缺点比较:
假设有m个样本和n个特征变量

参数 梯度下降法 正规方程法
学习率 需要选择学习速率α,尝试多个找到最优 不需要
迭代 需要多次迭代 不需要
计算速度 在很多特征变量的情况下也能运行得很好 n 很大的时候计算会很慢,n不大时效果更好
  • 梯度下降
    优点: 收敛快,易于实现
    缺点: 批量更新,可伸缩性问题
  • 正规方程组
    优点: single-shot 算法,易于实现
    缺点: 伪逆计算量大,可能导致数值不稳定(如矩阵是奇异的)

3.6 评估方法

模型建立后,一般使用 评估拟合程度。

四、 sklearn 实现

sklearn 实现用法示例

from sklearn.linear_model import LinearRegression
model = LinearRegression() # 建立模型
model.fit(train_x, train_y) # 训练模型
model.coef_, model.intercept_ # 输出训练后的模型参数和截距项
# 线性回归误差计算
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score#R square

# results 模型预测后的结果,即 model.fit(train_x, train_y)
print("线性回归平均绝对误差: ", mean_absolute_error(test_y, results.flatten())) 
print("线性回归均方误差: ", mean_squared_error(test_y, results.flatten()))
print("线性回归 R square: ", r2_score(test_y, results.flatten()))

五、小结

对于线性回归,结果易于理解,建模速度快,不需要很复杂的计算;但本身对于非线性的数据拟合不好,对异常值很敏感。可以通过正则化避免过拟合。

References

[1] 机器学习算法1_线性回归
[2] 正规方程
[3] 机器学习之正规方程法
[4] 机器学习(三)——正规方程法
[5] 深度解读最流行的优化算法:梯度下降
[6] 机器学习算法 - 线性回归——爖
[7] 梯度下降(Gradient Descent)小结

Further Reading

[1] 1.1. Generalized Linear Models


转载请注明:yezuolin的博客 » 点击阅读原文