課時4 多元線性回歸及正規方程 docx

2022-10-09 19:27:09 字數 2789 閱讀 8649

當我們在**某乙個數值比如房價時,影響房價**結果的往往不止房屋面積一項,而我們之前做的工作都是只有乙個變數影響結果,現在擴充套件至多個變數

當變數擴充套件至n個時,假設函式中也多了與之對應的引數θ。此時我們再構造向量乘法時,發現有n個變數x,而卻有n+1個引數θ。所以我們在構造x向量時,在第一行加乙個x0項,令其永遠=1。這樣在做向量乘法時,即可保證第乙個θ0的乙個常數字置,也使後面的x與自己的θ一一對應。

比如兩個特徵,乙個是房屋面積,乙個是臥室數量。顯然房屋面積要比臥室數量在數值上大的多,這就使得你的代價函式的影象變的細長,這會造成梯度下降演算法執行過程非常緩慢,甚至其路徑有可能來回**。此時如果我們將兩個特徵向量各除以乙個值,使其都在0-1範圍內,那麼代價函式影象就會變的更圓,以便梯度下降演算法最快的找到路徑達到最小值。

當你盡量將特徵的值放進-1到1時,其實也不用非常的接近,吳恩達認為右邊的這個範圍是可以接受的

均值歸一化

某乙個特徵,比如x1,它在訓練集中有很多值,先算乙個平均值μ1,再用每乙個x1-μ1,再除以x1的範圍,比如房屋**的範圍就是2000。用這個公式去處理每乙個特徵,這就使得每乙個特徵都能落在差不多的乙個範圍裡,這個過程叫均值歸一化。

通常,我們可以通過這樣的代價函式j的影象來判斷其是否已經收斂,很明顯圖中的j已經收斂至最小值(注意是最小值不一定是0)。同時,我們也可以讓程式自動判斷是否已經收斂,但這樣的判斷往往很難選擇乙個合適的引數,所以吳恩達更喜歡用觀察影象的方法。

上圖中,代價函式j的影象反而越來越大和振盪兩種情況說明學習率α選的有點大(首先保證演算法沒有出錯),需要減小α的值。同時,你也不願意把α選的過小,因為那會讓演算法收斂的非常非常慢。

通常可以從乙個較小值開始,不斷的擴大三倍來嘗試取α,以找到乙個合適的學習率

當我們**房價時,假設擁有兩個特徵變數,乙個是房子臨街一側的寬度,乙個縱深方向的寬度。我們發現這兩個特徵不一定要作為兩個獨立的變數出現,此時我們可以定義乙個新的特徵變數——面積,以此來簡化模型

與選擇特徵的想法密切相關的乙個概念被稱為多項式回歸。

如圖有乙個房價的資料集,可能會有多個不同的模型用於擬合。很明顯直線不能很好的擬合這組資料,可能會想到用二次模型,但二次模型在到達峰值後會減小,我們不認為隨著面積增大房價也會減小,所以可能會用三次模型。那麼我們如何將資料和模型進行擬合?

多項式回歸即包含兩個以上變數的非線性回歸模型,通常轉化為線性回歸。即將上圖中的面積的平方和面積的立方設為不同的變數x2,x3,此時非線性的問題就轉化為線性問題。這種情況下的特徵值縮放就顯得更加重要,因為三個變數的取值範圍差異非常大。

上述資料還可以選擇平方根模型,似乎能夠更好的擬合,在選擇模型時其實是非常靈活的。

之前我們使用梯度下降演算法,通過一步步迭代求出最佳的θ。正規方程是使用解析的方法,一步求出最佳θ。

求最佳θ的過程詳細來講,其實是求θ的函式j,即代價函式取得最小值時的θ值。那麼根據微積分的知識,當θ為乙個實數時,我們可以通過求導,並使j的導數為0來得到θ。但通常情況下,我們的θ不是乙個實數,而是一組數,或者說是乙個n+1(前面有介紹過為什麼引數比變數x多乙個)維的引數向量,而代價函式j則是這個向量的函式。根據微積分,我們應當對每個θ求偏導,並全部將其偏導數置零求得最佳值,但這樣做非常麻煩,以下提供乙個等價公式。

首先需要構造乙個設計矩陣x,它包含了資料集中的所有特徵變數,並將**值y構建乙個向量y。然後根據紅框內的公式,即可直接求得引數向量θ。

另外,使用這個公式求θ時,不需要特徵縮放。

優劣對比:梯度下降演算法需要嘗試幾次選擇乙個合適的學習率α,並且需要迭代然後確保其收斂,步驟較為複雜,而正規方程可通過計算一步得到結果,在特徵變數較少時可以選擇使用正規方程。但當特徵變數非常多,通常大於甚至遠大於萬級別時,這個公式通常需要非常大的時間複雜度,因為不僅要計算x與x的轉置,尤其是矩陣求逆時,演算法的時間複雜度要達到o(n3)。另外,正規方程演算法較適用於線性回歸模型,在以後學習的更複雜的模型中,我不得不繼續使用梯度下降演算法。

多變數線性回歸以及正規方程實現線性回歸

在多變數線性回歸中假設函式依然是 代價函式是以及它的向量表示 y是乙個 n,1 維的列向量,x t得到 n,1 維的向量,每一行資料是第 i 個元素,每乙個元素都有相同的特徵。梯度下降的更新規則 為了方便計算我們轉化為矩陣的乘法 通過矩陣可以證明上述兩種形式的公式是等價的。我們通過同時更新 的 來計...

正規方程解多變數線性回歸

梯度下降解法 正規方程方法 使用正規方程解法的時候注意矩陣不可逆的情況 用np.linalg.det 求解矩陣a的行列式 a 如果行列式為0,不可逆,否則可逆。import numpy as np import pandas as pd data pd.read csv ex1data2.txt n...

機器學習(4) 多元線性回歸

乙個唯一的因變數和多個自變數 之間的關係 這裡自變數在處理之前不僅僅是數值型 上圖 我們要做的也就是,尋找到最佳的b0 b1 bn 這裡有關於50個公司的資料 spend1 2 3代表了公司在某三個方面的花銷,state是公司的的位址,profit則是公司去年的收入。現在要選擇目標公司,要求績效最好...