日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

机器学习——线性回归数学推导

發布時間:2025/4/5 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习——线性回归数学推导 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 線性回歸數學推導
    • 基礎知識
    • 線性回歸的計算
      • 利用矩陣知識對線性公式進行整合
      • 誤差項的分析
      • 似然函數的理解
      • 矩陣求偏導
      • 線性回歸的最終求解
    • 實驗
      • 1 二維直線實驗
      • 2 三維平面實驗
      • 3 利用最小二乘法求解
    • 總結

線性回歸數學推導

基礎知識

線性回歸的公式:

可以借助下面的表格來理解:


對應于線性回歸方程,工資和房屋面積是線性回歸模型中的x,可貸款金額是y。對于不同的工資和房屋面積對可貸款金額的影響程度是不一樣的,每一個特征的參數就是上述模型中的a值。b是一個誤差項,例如有兩個人工資和房屋面積是一樣的,但是最終的可貸款金額并不一定相同,這是因為在計算中存在一定的誤差,受影響與一些微小的特征,這里就將對結果影響微小的誤差統一歸一為一個誤差值。而線性回歸最終要做的就是根據不同的影響求出最終的計算結果,而其中最重要的就是區求a值。

這就涉及到有監督的算法使用。有監督就是先給定一批x、y數據,推導出一個比較合適的a,這樣再給出一個x值就可以根據這個a值求出最終的y,其中包含了訓練和測試兩部分。

線性回歸的計算

利用矩陣知識對線性公式進行整合

那么該如何求解a呢?

在上述模型中,有工資和房屋面積兩個特征,可貸款金額為目標函數值。根據線性函數可以得到以下公式:

若假設有n個特征,就將上式通用化為:

在機器學習中,需要將這個數學公式轉換為矩陣的形式。由矩陣的乘法可以得到:

將權重參數和特征參數,都看成是1行n列的矩陣,就可以把多項式求和的式子轉換成矩陣的乘法表達式,就可以將多項式求和化簡為:

這就是機器學習所認可的一個矩陣的公式。

這個就是第一步,利用矩陣知識對線性公式進行整合。

誤差項的分析

在上述的線性回歸函數中,還需要求解b。也就是通常所說的偏移量或誤差項。


在這個圖中,橫坐標x1,x2分別代表著兩個特征(工資、房屋面積),縱坐標y代表目標(可貸款的額度),平面是線性回歸公式推導出來的目標平面,其中紅點表示實際的目標值(每個人可貸款的額度)。紅點和平面之間的誤差就是所要求的的誤差項。由此,之前所述的求解公式就轉變為:


這樣就得到了一個機器學習所認可的完整的線性回歸公式。

根據實際情況,我們假設認為這個誤差項是滿足以下幾個條件的:誤差ε是獨立并且具有相同的分布,并且服從均值為0方差為θ^2的高斯分布。

  • 獨立:張三和李四一起使用這款產品,可貸款額度互不影響;
  • 同分布:張三和李四使用的是同一款貸款產品;
  • 高斯分布:絕大多數情況下,在一個空間內浮動不大。

注:為什么一定是高斯分布呢?因為想要使用線性回歸,在預先拿到一系列數據后,判斷這些數據是符合高斯分布的,這也就是先前假設的誤差項滿足的條件之一。

似然函數的理解

在上一步的結論中,已經知道誤差項ε是符合高斯分布的,所以誤差項的概率密度函數就是下面這個式子(均值為0):

再把誤差值代入到這個式子中,就得到:

對于誤差項來說,肯定是越小越好。那么,考慮什么樣的參數和特征的組合可以使誤差項最小,這就需要引入似然函數。似然函數的作用就是要根據樣本來求什么樣的參數和特征的組合能夠使結果最接近真實值,越接近真實值則誤差越小。

似然估計函數為:

求解最大似然估計,利用對數將多個數相乘轉化為多個數相加的形式(因為似然函數是越大越好,似然函數的值和對數似然函數的值是成正比的,對值求對數并不會影響到最后求極限的值,所以可以進行對數處理)。

整理后得到下面這個式子:

將這個式子拆解化簡后,得到的最終表達式形式為:

因為我們要求似然估計的極大值,那么在上述式子中,第一項是一個定值,就只需要求第二項的極小值,即最小二乘法。

矩陣求偏導

現在對上述式子的第二項做一個轉化,將數學公式轉換為矩陣公式:

接下來對這個式子求偏導,然后取駐點,可以得到最小二乘法中的一個最小值:

這里需要用到矩陣求偏導的公式,可以參考這篇文章來學習:機器學習中的線性代數之矩陣求導

所以我們就可以根據這些公式將偏導求出:

線性回歸的最終求解

令上式等于0來求駐點,最后解得的θ的值為:

在這個式子中,x和y都是已知的,那么就得到了一個最終的參數值,即y=ax+b中的a。有了這個值,代入新的x值就可以得到目標y值。

這就是線性回歸的數學推導過程。

實驗

1 二維直線實驗

這個例子是根據房屋面積、房屋價格的歷史數據,建立線性回歸模型。然后根據給出的房屋面積來預測房屋價格。實驗代碼如下:

import pandas as pd from io import StringIO from sklearn import linear_model import matplotlib.pyplot as pltcsv_data = 'square_feet,price\n 150, 6450\n 200, 7450\n 250, 8450\n 300, 9450\n 350, 11450\n 400, 15450\n 600, 18450\n'df = pd.read_csv(StringIO(csv_data)) print(df)regr = linear_model.LinearRegression() regr.fit(df['square_feet'].values.reshape(-1, 1), df['price'])a, b = regr.coef_, regr.intercept_ area = 238.5 print(a * area + b) print(regr.predict([[area]]))plt.scatter(df['square_feet'], df['price'], color = 'blue')plt.plot(df['square_feet'], regr.predict(df['square_feet'].values.reshape(-1, 1)), color = 'red', linewidth = 4)plt.show()

運行該程序,得到的預測房價和線性回歸模型如下圖所示:


上述代碼先導入歷史數據(csv文件),并圍繞數據建立線性回歸模型,擬合后得到直線的斜率和截距。給出待預測面積238.5,求得預測價格8635.027。由上圖可以看出,實際的數據點圍繞回歸直線上下波動。

2 三維平面實驗

在這個實驗中,已知線性方程為z=ax+by+c表示一空間平面,利用一組虛擬數據繪制平面。實驗代碼如下:

import numpy as np from sklearn import linear_model from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as pltxx, yy = np.meshgrid(np.linspace(0, 10, 10), np.linspace(0, 100, 10)) zz = 1.0 * xx + 3.5 * yy + np.random.randint(0, 100, (10, 10))X, Z = np.column_stack((xx.flatten(), yy.flatten())), zz.flatten()regr = linear_model.LinearRegression() regr.fit(X, Z)a, b = regr.coef_, regr.intercept_x = np.array([[5.8, 78.3]])print(np.sum(a * x) + b)print(regr.predict(x))fig = plt.figure()ax = fig.gca(projection = '3d')ax.scatter(xx, yy, zz) ax.plot_wireframe(xx, yy, regr.predict(X).reshape(10, 10)) ax.plot_surface(xx, yy, regr.predict(X).reshape(10, 10), alpha = 0.3)

運行程序,得到輸出值和求得的三維平面如下圖所示:


上述代碼根據構建的特征、值的形式建立線性回歸模型并求得平面的斜率和截距。根據線性方程計算待預測特征x對應的z值為330.13516364。由上圖可見,通過一組虛擬數圍繞擬合的線性回歸平面上下波動。

3 利用最小二乘法求解

import numpy as np import matplotlib.pyplot as pltdef fun2ploy(x, n):lens = len(x)X = np.ones([1, lens])for i in range(1, n):X = np.vstack((X, np.power(x, i)))return Xdef leastseq_byploy(x, y, ploy_dim):plt.scatter(x, y, color = 'r', marker = 'o', s =50)X = fun2ploy(x, ploy_dim)Xt = X.transpose()XXt = X.dot(Xt)XXtInv = np.linalg.inv(XXt)XXtInvX = XXtInv.dot(X)coef = XXtInvX.dot(y.T)y_est = Xt.dot(coef)return y_est, coefdef fit_fun(x):return np.sin(x)if __name__ == '__main__':data_num = 100ploy_dim = 10noise_scale = 0.2x = np.array(np.linspace(-2 * np.pi, 2 * np.pi, data_num))y = fit_fun(x) + noise_scale * np.random.rand(1, data_num)[y_est, coef] = leastseq_byploy(x, y, ploy_dim)org_data = plt.scatter(x, y, color = 'r', marker = 'o', s =50)est_data = plt.plot(x, y_est, color = 'g', linewidth = 3)plt.xlabel("X")plt.ylabel("Y")plt.title("Fit function with leastseq method")plt.legend(["Noise data", "Fit function"])plt.show()

運行程序得到的最小二乘擬合效果如圖所示:


最小二乘法是一種數學優化算法。它通過最小化誤差的平方和尋找數據的最佳函數匹配。利用最小二乘法可以通過樣本求得未知的數據,并使得這些求得的數據與實際數據之間誤差的平方和為最小。由上圖可見,綠色實線即為實際值與擬合函數之間的差距,在算法實現過程中,盡量使它的平方和最小,達到了較好的擬合效果。

總結

回歸是一種監督學習算法,其目標是通過對訓練樣本的學習,得到從樣本特征到樣本目標的映射,并且目標和特征之間存在線性相關關系。

對于線性回歸算法,從訓練數據集中學習到線性回歸方程模型,求出要求誤差值盡可能的小的線性回歸方程。

其算法過程如下:

  • 利用矩陣的知識對線性公式進行整合
  • 誤差項的分析
  • 似然函數的理解
  • 矩陣求偏導
  • 線性回歸的最終求解
  • 總結

    以上是生活随笔為你收集整理的机器学习——线性回归数学推导的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。