機器學習 - 第二講

多元線性迴歸(Linear Regression with Multiple Variables)


多元(Multiple Features)

多元線性迴歸又稱“multivariate linear regression”。

現在介紹一種可以表示任意輸入變量的符號:

  • \(x_j^{(i)} = j \ 在 \ i^{th} \ 的訓練樣本的值。\)
  • \(x^{(i)} = 所有\ i^{th} \ 訓練樣本的值組成的列向量。 \)
  • \(m = 訓練樣本的數目 \)
  • \(n = |x^{(i)}|\ 特性的數量。\)

現在定義假設函數的多變量形式,包含以下各種參數:

\(h_\theta (x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_3 + \cdots + \theta_n x_n\)

爲了便於理解,我們可以將 \(\theta_0\) 當作房子的基本價格,\(\theta_1\) 當作每平方米的價格,\(\theta_2\) 當作每層的價格等等。則 \(x_1\) 代表房子的平方米數,\(x_2\) 代表房子的層數等等。

使用矩陣乘法定義,我們的多元假設函數可以表示爲:

hθ(x)=[θ0θ1...θn]x0x1xn=θTx

這是一個向量化的假設函數的一個訓練組。

訓練樣本逐行儲存在 \(X\) 中, 例如:

X=x(1)0x(2)0x(3)0x(1)1x(2)1x(3)1,θ=[θ0θ1]

你可以將假設作爲一個 \((m \times 1)\) 的列向量計算:

\(h_\theta(X) = X \theta\)

成本函數(Cost function)

\(對於向量\ \theta ( \mathbb{R}^{n+1} 或者 \mathbb{R}^{(n+1) \times 1} )\),成本函數爲:

\(J(\theta) = \dfrac {1}{2m} \displaystyle \sum_{i=1}^m \left (h_\theta (x^{(i)}) - y^{(i)} \right)^2\)

使用向量計算:

\(J(\theta) = \frac{1}{2m} (X\theta - \vec{y})^{T} (X\theta - \vec{y})\)

\(其中\ \vec{y}\ 表示所有\ y\ 的值。\)

多元梯度下降(Gradient Desent for Mulitple Variables)

梯度下降等式和之前的形式類似,我們只需要重複計算’n’個即可:

}repeat until convergence:{θ0:=θ0α1mi=1m(hθ(x(i))y(i))x(i)0θ1:=θ1α1mi=1m(hθ(x(i))y(i))x(i)1θ2:=θ2α1mi=1m(hθ(x(i))y(i))x(i)2

也可以這麼表示:

}repeat until convergence:{θj:=θjα1mi=1m(hθ(x(i))y(i))x(i)jfor j := 0..n

矩陣符號(Matrix Notation)

梯度下降規則可以表示爲:

θ:=θαJ(θ)

其中 \(\nabla J(\theta)\) 是列向量的表示形式:

J(θ)θj==1mi=1m(hθ(x(i))y(i))x(i)j1mi=1mx(i)j(hθ(x(i))y(i))

第 j 個梯度元素可以由兩部分和構成:

J(θ)θj==1mi=1m(hθ(x(i))y(i))x(i)j1mi=1mx(i)j(hθ(x(i))y(i))

有時,其中的兩部分可以由兩個向量表示。

\(其中的,x_j^{(i)} ,for i = 1,…,m 代表第 \ j列\ m\ 個元素,向量\ \vec{x_j}\ 取自訓練組矩陣\ X\ 。\)

另一部分 \(\left(h_\theta(x^{(i)}) - y^{(i)} \right)是預測值 \ h_\theta(x^{(i)}) \ 和 真實值 \ y^{(i)}\ 的偏差量的向量。重寫\ \frac{\partial J(\theta)}{\partial \theta_j}\ ,我們得到:\)

J(θ)θjJ(θ)==1mxjT(Xθy⃗ )1mXT(Xθy⃗ )

最後,梯度下降規則的矩陣形式(向量化)表示爲:

\(\theta := \theta - \frac{\alpha}{m} X^{T} (X\theta - \vec{y})\)

數值一般化(Feature Normalization)

我們可以通過將每個輸入值粗略的控制到一個範圍加速梯度下降。其中的原理是因爲 \(\theta\) 在小的範圍內下降速度很快,大的範圍內下降速度很慢,因此當數據不均勻的時候可能會一直襬動不會降到最佳點。

防止這種情況發生的方法就是修正輸入變量的範圍讓他們粗略的相同:

\(-1 \le x_i \le 1\)

\(-0.5 \le x_i \le 0.5\)

這些沒有額外的需求,我們僅僅嘗試加速計算。目標是讓所有輸入變量粗略的限制在這個範圍。

有兩種方法可以幫助我們:數值縮放(feature scaling)和均一化(mean normalization)。數值縮放通過輸入變量的範圍分割輸入值,結果是產生一個新的範圍爲1的值。均一化則是減去輸入變量的平均值,得到一個新的爲0的平均值。可以通過一下公式使用這兩種方法調整你的輸入值:

\(x_i := \dfrac{x_i - \mu_i}{s_i}\)

其中 \(\mu_i\) 是所有值的平均值,\(s_i\) 是範圍(最大值-最小值),或者 \(s_i\) 也可以是標準差(standard deviation)。

特性和多項式迴歸(Features and Polynomial Regression)

我們可以通過兩種不同的方式改進假設函數的特性和形式。

我們可以將多個特性組合成一個。例如,我們可以將 \(x_1\ 和\ x_2\ 通過\ x_1 \cdot x_2\ 組合成一個新特性\ x_3。\)

多項式迴歸(Polynomial Regression)

我們的假設函數不必是線性的(一條直線)如果無法與數據匹配的很好。

我們可以改變行爲或通過平方,立方或者平方根函數或者其他形式繪成曲線。

例如,如果我們的假設函數爲\(h_\theta(x) = \theta_0 + \theta_1 x_1\) ,我們可以根據 \(x_1\) 創建一個新特性,得到二次函數 \(h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_1^2\) 或者三次函數 \(h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_1^2 + \theta_3 x_1^3\)

在三次函數中,我們創建了新特性 \(x_2\ 和\ x_3\ ,其中\ x_2=x_1^2,x_3 = x_1^3\)

平方根函數:

\(h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 \sqrt{x_1}\)

一般等式(Normal Equation)

一般等式是一種不需要迭代就可以尋找最適值的方法。

\(\theta = (X^T X)^{-1}X^T y\)

使用一般等式時不需要數值縮放(feature scaling)。

梯度下降和一般等式的對比:

使用一般等式計算 \(\mathcal{O}(n^3)\) 逆矩陣會很複雜。所以如果我們由很多數量的特性時,一般等式會很慢。實踐證明,n 小於 10,000 時用一般等式。

一般等式不可逆(Normal Equation Noninvertibility)

當使用一般等式時使用 ‘pinv’ 函數,不使用 ‘inv’

發佈了9 篇原創文章 · 獲贊 29 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章