AI(006) - 笔记 - 回顾线性回归(Linear Regression)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/darkrabbit/article/details/80544777

线性回归(Linear Regression)

之前并未做过笔记,所以这篇文章是对线性模型的回顾,对应:

  • 第一周:(06)1.6 线性回归模型
  • 第一周:(07)1.6 线性回归模型-优化算法
  • 第一周:(08)1.6 线性回归模型-模型选择
  • 《机器学习》(西瓜书):第3章 线性模型 - 3.1 基本形式
  • 《机器学习》(西瓜书):第3章 线性模型 - 3.2 线性回归
  • sklearn官方文档


1 线性模型(Linear Models)

给定由d个属性描述的示例 x = ( x 1 , x 2 , , x d ) ,其中 x i x 在第i个属性上的取值,线性模型试图学得一个通过属性的线性组合来进行预测的函数,即:

y ^ ( ω , x ) = f ( x ) = ω 0 + ω 1 x 1 + ω 2 x 2 + + ω d x d

其中, ω = ( ω 0 , ω 1 , ω 2 , , ω d )

注意,在sklearn中, ω = ( ω 1 , ω 2 , , ω d ) coef_表示,而 ω 0 intercept_表示。

sklearn官方文档原文

y ^ ( ω , x ) = ω 0 + ω 1 x 1 + ω 2 x 2 + + ω p x p

Across the module, we designate the vector ω = ( ω 1 , ω 2 , , ω p ) as coef_ and ω 0 as intercept_.

sklearn中,线性模型来自同一个模块,且使用方法一样,伪代码:

# 导入模块
from sklearn import linear_model

# 使用流程

## 1 新建模型
model = linear_model.线性模型(线性模型参数)

## 2 训练模型
model.fit(X_train)

## 3 预测结果
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)

2 线性回归(Linear Regression)与最小二乘法(Ordinary Least Squares)

给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , , ( x m , y m ) } ,其中 x i = ( x i 1 , x i 2 , , x i d ) T , y i R

“线性回归”(linear regression)试图学得一个线性模型以尽可能准确地预测输出标记:

f ( x i ) = ω T x i + b 使得 f ( x i ) y i

为了确定其中的 ω b ,我们将使用回归任务最常用的性能度量方法“均方误差”来衡量 f ( x ) y 之间的差别,我们试图让它最小。

而均方误差的几何意义对应了“欧氏距离”(Euclidean distance)。

2.1 最小二乘法(Ordinary Least Squares)

基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(Ordinary Least Squares)。

假设 d = 1 ,即 x = { x i } ,则线性回归的试图学得:

f ( x i ) = ω x i + b

均方误差最小化:

min E ( ω , b ) = arg min ω i = 1 m ( f ( x i ) y i ) 2 = arg min ω i = 1 m ( y i ω x i b ) 2

最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。所以,为了使上式最小,分别对 ω , b 求导:

  • ω 求导详细过程:

    E ( ω , b ) ω = ( i = 1 m ( y i ω x i b ) 2 ) ω = 2 ( i = 1 m ( y i ω x i b ) ( y i ω x i b ) ) = 2 ( i = 1 m ( y i ω x i b ) ( x i ) ) = 2 ( i = 1 m ( ω x i 2 y i x i + b x i ) ) = 2 ( i = 1 m ( ω x i 2 ) i = 1 m ( y i x i b x i ) ) = 2 ( ω i = 1 m x 2 i = 1 m ( y i b ) x i )

  • b 求导详细过程:

    E ( ω , b ) b = ( i = 1 m ( y i ω x i b ) 2 ) b = 2 ( i = 1 m ( y i ω x i b ) ( y i ω x i b ) ) = 2 ( i = 1 m ( y i ω x i b ) ( 1 ) ) = 2 ( i = 1 m ( ω x i y i + b ) ) = 2 ( i = 1 m b + i = 1 m ( ω x i y i ) ) = 2 ( m b i = 1 m ( y i ω x i ) )

然后再令他们等于零,这样可以解得最优解的闭式(closed-form):

{ 2 ( ω i = 1 m x 2 i = 1 m ( y i b ) x i ) = 0 2 ( m b i = 1 m ( y i ω x i ) ) = 0 { ω = i = 1 m y i ( x i 1 m i = 1 m x i ) i = 1 m x i 2 1 m ( i = 1 m x i ) 2 b = 1 m i = 1 m ( y i ω x i )

  • 直接求解 ω (不使用克莱默法则)详细过程:

    那么将b带入到第一个式子得:

    2 ( ω i = 1 m x 2 i = 1 m ( y i b ) x i ) = 0 ω i = 1 m x 2 = i = 1 m ( y i b ) x i ω i = 1 m x 2 = i = 1 m ( y i 1 m i = 1 m ( y i ω x i ) ) x i ω i = 1 m x 2 = i = 1 m ( y i x i x i m i = 1 m y i + ω x i m i = 1 m x i ) ω i = 1 m x 2 = i = 1 m y i x i i = 1 m ( x i m i = 1 m y i ) + i = 1 m ( ω x i 1 m i = 1 m x i ) , ( 1 m i = i m x i = x ¯ , 均值是常数 ) ω i = 1 m x 2 = i = 1 m y i x i i = 1 m ( y i 1 m i = 1 m x i ) + ω m ( i = 1 m x i ) 2 , ( ( a b ) = ( a b ) ) ω i = 1 m x 2 ω m ( i = 1 m x i ) 2 = i = 1 m y i ( x i 1 m i = 1 m x i ) ω = i = 1 m y i ( x i 1 m i = 1 m x i ) i = 1 m x i 2 1 m ( i = 1 m x i ) 2

2.2 线性回归(Linear Regression)

放到一般情况,即 x = ( x 1 , x 2 , , x d ) ,试图学得:

f ( x i ) = ω T x i + b 使得 f ( x i ) y i

这称为“多元线性回归”(multivariate linear regression)。

我们将它适用于所有样本:

y = X ω ^

其中:

  • y = ( y 1 , y 2 , , y m ) T
  • X = [ 1 x 11 x 12 x 1 d 1 x 21 x 22 x 2 d 1 x m 1 x m 2 x m d ] = [ 1 x 1 T 1 x 2 T 1 x m T ]
  • ω ^ = ( ω ; b )

和之前类似的,我们得到均方误差最小化:

min E ( ω , b ) = arg min ω ( y X ω ^ ) T ( y X ω ^ )

  • ω ^ 求导得:

    E ω ^ ω ^ = ( ( y X ω ^ ) T ( y X ω ^ ) ) ω ^ = 2 X T ( X ω ^ y )

同样的令它等于零,这样可以解得最优解的闭式(closed-form):

2 X T ( X ω ^ y ) = 0 X T X ω ^ = X T y ( X T X ) 1 X T X ω ^ = ( X T X ) 1 X T y , i f X T X = | 满秩矩阵(full-rank matrix) o r 正定矩阵(positive definite matrix) ω ^ = ( X T X ) 1 X T y

则可得出多元最终模型:

f ( X i ) = X i ( X T X ) 1 X T y

几乎所有的任务中, X T X 都不是满秩矩阵。此时可解出多个 X i ,选择哪一个作为输出,将由学习算法决定,常见的是引入正则项(regularization)

正则项为空时,也可以称为最小二乘回归。

2.3 sklearn中的线性回归模型

sklearn中,导入线性回归:

# 线性回归
from sklearn.linear_model import LinearRegression

# 带交叉验证的线性回归
from sklearn.linear_model import LinearRegressionCV

# 使用和之前介绍的一样,以LinearRegression为例
LR = LinearRegression()
LR.fit(X_train)
y_test_pred = LR.predict(X_test)

3 带正则的线性回归(Linear Regression With Regularizer)

3.1 Lasso(L1正则)

它的目标函数为:

1 2 × N s a m p l e s × | | y X ω | | 2 2 + λ | | ω | | 1

由于 λ | | ω | | 1 ω j = 0 时,不可w微,所以在梯度下降法进行优化求解时,需要使用次梯度。

sklearn中,导入Lasso:

# Lasso
from sklearn.linear_model import Lasso

# 带交叉验证的Lasso
from sklearn.linear_model import LassoCV

# 使用Lars算法的 Lasso 
from sklearn.linear_model import LassoLars

# 使用Lars算法训练,带交叉验证的 Lasso
from sklearn.linear_model import LassoLarsCV

# 使用赤池或贝叶斯进行模型选择,使用Lars算法训练的 Lasso
from sklearn.linear_model import LassoLarsIC

# 使用方法同LinearRegression
# 其中 alpha 对应 公式中的 lambda

3.2 Ridge(岭回归)(L2正则)

又称为吉洪诺夫正则化方法(Tikhonov regularization),它的目标函数为:

1 2 × N s a m p l e s × | | y X ω | | 2 2 + λ | | ω | | 2 2

sklearn中,导入Ridge:

# 岭回归
from sklearn.linear_model import Ridge

# 带交叉验证的岭回归
from sklearn.linear_model import RidgeCV

# 使用方法同LinearRegression
# 其中 alpha 对应 公式中的 lambda

猜你喜欢

转载自blog.csdn.net/darkrabbit/article/details/80544777