定义:

线性回归通过一个或者多个自变量与因变量之间进行建模的回归分析。其中可以为一个或多个自变量之间的线性组合(线性回归的一种)

一元线性回归:涉及到的变量只有一个

多元线性回归:涉及到的变量两个或两个以上

通用公式:

其中w,x为矩阵:

线性关系模型

一个通过属性的线性组合来进行预测的函数

损失函数(误差大小)

梯度下降与正规方程比较

最小二乘法之正规方程(不做要求)

官方API链接

API sklearn.linear_model.LinearRegression

参数说明

  • fit_intercept : boolean, optional, default True
    • 是否计算该模型的截距。如果设置为False,计算中将不使用截距(例如,数据预期已经居中)。
  • normalize : boolean, optional, default False
    • 当fit_intercept设置为False时,将忽略该参数。若为真,则回归前对回归量X进行归一化处理,取均值减去后除以l2-范数。如果您希望标准化,请使用sklearn.preprocessing。在使用normalize=False调用估计值的拟合之前调用标准标量。
  • copy_X : boolean, optional, default True
    • 如果为真,则复制X;否则,它可能被覆盖。
  • n_jobs : int or None, optional (default=None)
    • 用于计算的作业数。这只会为n_targets > 1和足够大的问题提供加速。None一个意思是1,除非在joblib。parallel_backend上下文。-1表示使用所有处理器。

属性

  • coef_ : array, shape (n_features, ) or (n_targets, n_features)
    • 线性回归问题的估计系数。如果在fit (y 2D)期间传递多个目标,这是一个二维形状数组(n_targets, n_features),而如果只传递一个目标,这是一个长度为n_features的一维数组。
  • intercept_ : array
    • 线性模型中的独立项。

方法

fit(X, y[, sample_weight])Fit线性模型
get_params([deep])
获取此估计器的参数。
predict(X)
使用线性模型进行预测
score(X, y[, sample_weight])
返回预测的确定系数R^2
set_params(**params)
设置此估计器的参数。

示例

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
>>> # y = 1 * x_0 + 2 * x_1 + 3
>>> y = np.dot(X, np.array([1, 2])) + 3
>>> reg = LinearRegression().fit(X, y)
>>> reg.score(X, y)
1.0
>>> reg.coef_
array([1., 2.])
>>> reg.intercept_ 
3.0000...
>>> reg.predict(np.array([[3, 5]]))
array([16.])

最小二乘法之梯度下降(理解过程)

sklearn.linear_model.SGDRegressor

回归性能评估

API mean_squared_error

过拟合和欠拟合

  • 过拟合:一个假设在训练数据上能够获得比其它假设更好的拟合,但是在训练数据外的数据集上却不能很好的拟合数据,此时认为这个假设出现了过拟合的现象(模型过于复杂)
  • 欠拟合:一个假设在训练数据上不能获得更好的拟合,但是在训练数据外的数据集上也不能很好的拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单)

欠拟合原因及解决办法

  • 原因:学习到的数据的特征过少
  • 解决办法:增加数据的特征数量

过拟合原因及解决办法

  • 原因:原始特征过多,存在一些嘈杂特征,模型过于复杂是因为模型尝试去兼顾各个测试数据点
  • 解决办法:
    • 进行特征选择,消除关联性大的特征
    • 交叉验证(让所有数据都有过训练)
    • 正则化
      • 作用:可以使得W的每个元素都很小,接近于0
      • 优点;越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。

线性回归实例:波士顿房价数据预测

数据集属性

分析流程

  1. 波士顿地区房价数据获取
  2. 波士顿地区房价数据分割
  3. 训练与测试数据标准化处理
  4. 使用最简单的线性回归模型LinearRegression和梯度下降估计SGDRegressor对房价进行预测

岭回归

API

线性回归LinearRegression与Ridge对比

岭回归:回归得到的回归系数更符合实际,更可靠。另外,能让估计参数的波动范围变小,变得更稳定。在存在病态数据偏多的研究中有较大的实用价值。

发表回复