tft每日頭條

 > 科技

 > 線性代數的核心分析

線性代數的核心分析

科技 更新时间:2025-02-01 07:27:08

線性回歸是一種流行的監督機器學習技術。當關系本身不完善時,需要确定因變量(也稱為目标變量)和一個或多個自變量(也稱為預測變量)之間的關系。

最小二乘近似方法可用于确定線性回歸系數。線性代數用投影很優雅地解決了這個問題。

讓我們深入研究線性代數如何解決這個問題

估計的多元線性回歸方程可以寫成

Y = b0 b1X1 b2X2 ... bnXn

  • Y:響應變量
  • X1:預測變量1
  • X2:預測變量2
  • Xn:預測變量n
  • b0:預測變量1的系數
  • b1:預測變量2的系數
  • bn:預測變量n的系數

矩陣形式

線性代數的核心分析(線性代數投影法在線性回歸中的應用)1

而需要解決的方程是

線性代數的核心分析(線性代數投影法在線性回歸中的應用)2

對于特征矩陣來說應該:m> n

方程組将有一個或零個解。隻有當向量b位于由A表示的特征矩陣的列空間時,系統才有解。

通常,對于tall matrix,矩陣A的n列将跨越m維空間的一小部分。因此,大多數情況下的RHS将不在特征矩陣A的列空間中,因此沒有解

線性代數的核心分析(線性代數投影法在線性回歸中的應用)3

由上圖可知,向量b不屬于矩陣A的列張成的列空間[C(A)]

從b到A的列空間的最小距離将是從誤差向量e表示的從b到C(A)的垂直向量,因此e将垂直于C(A)

誤差向量将表示為

線性代數的核心分析(線性代數投影法在線性回歸中的應用)4

  • 如果e為零,則是Ax = b的精确解
  • 如果e不是零,大多數情況都是如此,e是最小的,則x_hat是最小二乘解。

所以我們的目标是讓e盡可能小。

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

線性代數的核心分析(線性代數投影法在線性回歸中的應用)5

我們正在尋找C(A)中接近b的投影p,使e盡可能小,最近的點是從向量b到A的列空間的垂直向量

線性代數的核心分析(線性代數投影法在線性回歸中的應用)6

任何x的平方長度

線性代數的核心分析(線性代數投影法在線性回歸中的應用)7

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

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

因為誤差e垂直于列空間,即A的所有列向量根據正交性,這兩個垂直向量的點積是零。

線性代數的核心分析(線性代數投影法在線性回歸中的應用)8

我們可以得到

線性代數的核心分析(線性代數投影法在線性回歸中的應用)9

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

線性代數的核心分析(線性代數投影法在線性回歸中的應用)10

示例:

找到最接近點(0,6)(1,0)和(2,0)的線。

解:

沒有一條直線能通過這三個點。然而,我們可以近似一條最接近所有點的直線,使從所有三個點到直線的誤差平方和最小。

設直線方程為Y = b0 b1 * X

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

矩陣形式

線性代數的核心分析(線性代數投影法在線性回歸中的應用)11

因此,方程組沒有解,因為不在A的列空間中

我們來解最小二乘方程

線性代數的核心分析(線性代數投影法在線性回歸中的應用)12

這些數字是最好的C和D,所以5-3t是3個點的最佳直線

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

線性代數的核心分析(線性代數投影法在線性回歸中的應用)13

讓我們看看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 \n”) X123 = np.hstack ([X1 ,X2, X3]) slope,intercept = compute_multiple_regression_coeffs1 (X123 , Y) print (“Slope : {} “.format(slope)) print (“Intercept : {} \n”.format(intercept)) print (“computing via method 2 \n”) slope,intercept = compute_multiple_regression_coeffs2 (X123 , Y) print (“Slope : {} “.format(slope)) print (“Intercept : {} \n”.format(intercept)) print (“Computing coeff via sklearn library \n”) regressor = LinearRegression() regressor.fit(X123, Y) print(regressor.intercept_) print(regressor.coef_)

線性代數的核心分析(線性代數投影法在線性回歸中的應用)14

輸出 :

線性代數的核心分析(線性代數投影法在線性回歸中的應用)15

結論:

該方法既适用于單線性回歸,也适用于多元線性回歸。與梯度下降法不同,該方法不需要叠代和微調學習參數。但是當特征數變大時,由于公式中出現的倒數項,計算速度變慢

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved