线性代数投影法在线性回归中的应用

https://www.toutiao.com/a6687144116989461004/

 

线性回归是一种流行的监督机器学习技术。当关系本身不完善时,需要确定因变量(也称为目标变量)和一个或多个自变量(也称为预测变量)之间的关系。

最小二乘近似方法可用于确定线性回归系数。线性代数用投影很优雅地解决了这个问题。

让我们深入研究线性代数如何解决这个问题

估计的多元线性回归方程可以写成

Y = b0 + b1X1 + b2X2 + ... bnXn

  • Y:响应变量
  • X1:预测变量1
  • X2:预测变量2
  • Xn:预测变量n
  • b0:预测变量1的系数
  • b1:预测变量2的系数
  • bn:预测变量n的系数

矩阵形式

线性代数投影法在线性回归中的应用

 

而需要解决的方程是

线性代数投影法在线性回归中的应用

 

对于特征矩阵来说应该:m> n

方程组将有一个或零个解。只有当向量b位于由A表示的特征矩阵的列空间时,系统才有解。

通常,对于tall matrix,矩阵A的n列将跨越m维空间的一小部分。因此,大多数情况下的RHS将不在特征矩阵A的列空间中,因此没有解

线性代数投影法在线性回归中的应用

 

由上图可知,向量b不属于矩阵A的列张成的列空间[C(A)]

从b到A的列空间的最小距离将是从误差向量e表示的从b到C(A)的垂直向量,因此e将垂直于C(A)

误差向量将表示为

线性代数投影法在线性回归中的应用

 

  • 如果e为零,则是Ax = b的精确解
  • 如果e不是零,大多数情况都是如此,e是最小的,则x_hat是最小二乘解。

所以我们的目标是让e尽可能小。

p是b在A [C(A)]的列空间上的投影。因为p在A的列空间中,它可以用它的基向量表示

线性代数投影法在线性回归中的应用

 

我们正在寻找C(A)中接近b的投影p,使e尽可能小,最近的点是从向量b到A的列空间的垂直向量

线性代数投影法在线性回归中的应用

 

任何x的平方长度

线性代数投影法在线性回归中的应用

 

最小意味着|| Ax - b ||的平方长度 最小化

最小二乘解x_hat使得||Ax - b ||的平方长度尽可能小。

因为误差e垂直于列空间,即A的所有列向量根据正交性,这两个垂直向量的点积是零。

线性代数投影法在线性回归中的应用

 

我们可以得到

线性代数投影法在线性回归中的应用

 

著名的线性方程和最小二乘解是

线性代数投影法在线性回归中的应用

 

示例:

找到最接近点(0,6)(1,0)和(2,0)的线。

解:

没有一条直线能通过这三个点。然而,我们可以近似一条最接近所有点的直线,使从所有三个点到直线的误差平方和最小。

设直线方程为Y = b0 + b1 * X

  • 0 = b0 + b1 * 6
  • 1 = b0 + b1 * 0
  • 2 = b0 + b1 * 0

矩阵形式

线性代数投影法在线性回归中的应用

 

因此,方程组没有解,因为不在A的列空间中

我们来解最小二乘方程

线性代数投影法在线性回归中的应用

 

这些数字是最好的C和D,所以5-3t是3个点的最佳直线

向量b的投影p到A的列空间

线性代数投影法在线性回归中的应用

 

让我们看看python的实现

from sklearn.linear_model import LinearRegression 
import numpy as np
def compute_multiple_regression_coeffs1 (X , Y):
 r,c = X.shape
 K = np.ones (shape = (r,1)) 
 # concatenate feature matrix with intercept
 A = np.concatenate ((K , X), axis = 1) 
 AT_A = (A.transpose()).dot(A) 
 AT_A_INV = np.linalg.inv (AT_A) 
 AT_B = (A.transpose()).dot (Y) 
 coeffs = AT_A_INV.dot (AT_B) 
 intercept , slope = coeffs[0][0] , coeffs[1: , 0:]
 return (slope , intercept)
def compute_multiple_regression_coeffs2 (X , Y):
 r,c = X.shape
 K = np.ones (shape = (r,1)) 
 # concatenate feature matrix with intercept
 A = np.concatenate ((K , X), axis = 1) 
 AT_A = (A.transpose()).dot(A) 
 AT_A_INV = np.linalg.inv (AT_A) 
 AT_B = (A.transpose()).dot (Y) 
 coeffs = np.linalg.solve (AT_A , AT_B)
 intercept , slope = coeffs[0][0] , coeffs[1: , 0:]
 return (slope , intercept)
 
 
X1 = np.array ([89,66,78,111,44,77,80,66,109,76])
X2 = np.array ([4,1,3,6,1,3,3,2,5,3])
X3 = np.array ([3.84,3.19,3.78,3.89,3.57,3.57,3.03,3.51,3.54,3.25])
Y = np.array ([7,5.4,6.6,7.4,4.8,6.4,7,5.6,7.3,6.4])
X1 = X1[:,np.newaxis]
X2 = X2[:,np.newaxis]
X3 = X3[:,np.newaxis]
Y = Y [:,np.newaxis]
print (“computing via method 1 
”)
X123 = np.hstack ([X1 ,X2, X3])
slope,intercept = compute_multiple_regression_coeffs1 (X123 , Y)
print (“Slope : {} “.format(slope))
print (“Intercept : {} 
”.format(intercept))
print (“computing via method 2 
”)
slope,intercept = compute_multiple_regression_coeffs2 (X123 , Y)
print (“Slope : {} “.format(slope))
print (“Intercept : {} 
”.format(intercept))
print (“Computing coeff via sklearn library 
”)
regressor = LinearRegression() 
regressor.fit(X123, Y) 
print(regressor.intercept_) 
print(regressor.coef_)

线性代数投影法在线性回归中的应用

 

输出 :

线性代数投影法在线性回归中的应用

 

结论:

该方法既适用于单线性回归,也适用于多元线性回归。与梯度下降法不同,该方法不需要迭代和微调学习参数。但是当特征数变大时,由于公式中出现的倒数项,计算速度变慢

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值