目錄
三、一元線性迴歸 Linear Regression with One Variable
3.2 一元線性迴歸 Linear Regression with One Variable
3.4 梯度下降概述 Gradient Descent Outline
3.5 梯度下降算法 Gradient Descent Alg
3.5.1 同步更新參數 Simultaneously Update
四、多元線性迴歸 Multiple Features and Gradient Descent
4.2 多元線性迴歸 Linear Regression with Multiple Variables
4.6 多項式擬合 Polynomial Regression
複習Andrew Ng的課程Machine Learning,總結線性迴歸、梯度下降筆記一篇,涵蓋課程week1、week2。
一、定義 What is Machine Learning
有兩種業界比較認可的對機器學習的定義。
一種是Aithur Samuel在1959年給出的定義。機器學習:不需要明確編程就能使計算機具有學習能力的研究領域。
另一種是Tom Mitchell在1998年給出的定義。適定學習問題:如果一個計算機程序在任務T上的性能(以P衡量性能)隨着經驗E的提高而提高,那麼它就被稱爲從經驗E對某些任務T和性能度量P的學習。(拉倒吧,還是看英文原文吧!)
Machine Learning Definition
-Aithur Samuel 1959. Machine Learning: Field of study that gives computer the ability to learn without being explicitly programmed.
-Tom Mitchell 1998. Well-posed Learning Problem: A computer program is said to learn from experience E with respect to some task T and performance measure P, if its performance on T, as measured by P, improves with experience E.
二、建模 Model Representation
機器學習分很多種類
- Supervised Learning 有監督的學習
- Unsupervised Learning 無監督的學習
- Reinforcement learning 強化學習
- Recommender System 推薦系統
但是他們的建模幾乎是一樣的。都是通過在訓練集(Training Set)上運行學習算法(Learning Alg)得到估值函數(hypothesis),這個假設函數可以對輸入的特徵X進行預測(估計 estimated value),輸出y。
三、一元線性迴歸 Linear Regression with One Variable
3.1 一元線性歸回的符號約定 Notation
約定一元線性迴歸問題中的符號定義。
訓練集的大小。
輸入變量,也就是特徵。
輸出變量,也就是估值。
一個訓練用例。
訓練集中的第i個用例。
3.2 一元線性迴歸 Linear Regression with One Variable
一元線性迴歸,Linear Regression with One Variable也叫做Univariate Linear Regression。其輸入特徵是一維的,輸出值也是一維的。估值爲 。一元線性迴歸的思想是,選擇合適的 和 使 對訓練集 上的 接近 。
Idea: Choose so that is close to for our training example .
minimize
3.3 代價函數 Cost Function
Cost Function Definition is square error function. 代價函數是平方誤差函數。這個函數用來衡量估值與真實值之間的偏差。
代價函數是
其中 。使 最小的 和 值確定 。 公式裏面爲了表示“平均”,所以除以,但爲什麼不簡單的就寫個而是呢?因爲後面求導數的時候,平方的求導會把這個2抵消掉,這樣導數式的樣子就和邏輯迴歸問題的導數式子形式上統一了。
注意:
- 是關於 的函數, 和 是參數。也就是說求取導數的時候,變量是 。
- 是關於的函數, 是參數。
3.4 梯度下降概述 Gradient Descent Outline
Have some function , Want
Outline:
- Start with some
- Keep changing to reduce until we hopefully end up at a minimum.
梯度下降的思想就是,我們先假定有 有某個值,通過改變 的值使減小,直至得到最小值。
3.5 梯度下降算法 Gradient Descent Alg
3.5.1 同步更新參數 Simultaneously Update
重複進行
,
其中是學習率(learning rate),必大於0。
注意,這種更新是各個維度上的同步更新,也就是說更新過程是這樣的
3.5.2 收斂 Convergence
對於一元線性迴歸,代價函數的幾何形狀是個碗狀曲面,因此代價函數一定收斂。根據上面同步更新的公式,我們分兩種情況討論,示意圖如下。
當時,減小,趨向於收斂;
當時,增大,也趨向於收斂;
3.5.3 學習率的取值 evaluate alpha
這個過程要注意學習率的取值應適中。如果太小,收斂速率低,學習緩慢。如果太大,可能跳過minimum不能收斂,甚至發散。示意圖如下。
根據同步更新參數公式,,隨着接近minimum,逐漸減小。在接近minimum時,梯度下降自動減小步長,因此收斂的過程中不需要改變學習率。示意圖如下。
at local optima。經過學習獲得的是局部最優解。
3.5.4 梯度下降更新參數公式
由代價函數得到兩個參數的偏導數函數。
當時,。
當時,。
四、多元線性迴歸 Multiple Features and Gradient Descent
4.1 多元線性歸回的符號約定 Notation
約定多元線性迴歸問題中的符號定義。
訓練集的大小。
特徵的維度大小。
第i個訓練用例。
第i個訓練用例的第j維特徵值。
4.2 多元線性迴歸 Linear Regression with Multiple Variables
多元線性迴歸的估值爲
4.3 估值、代價函數、梯度下降
爲了方便起見,我們給特徵值增加一個維度,也就是。
特徵值和參數都寫作向量的形式:
估值寫作矩陣相乘的形式:
代價函數:
同步更新參數,以使代價函數最小,對於每一個參數而言
也就是說
……………………
寫作矩陣式
4.4 多元線性迴歸的矩陣描述
綜合4.3中討論的內容,我們這樣定義,並給出多元線性迴歸的矩陣描述公式
滿足
那麼梯度下降過程公式爲
4.5 平均值歸一化 Mean Normalization
Feature Scaling: Get every feature into approximately a range .
使用梯度下降時,爲了加速收斂,應將特徵值進行縮放(Feature Scaling)。縮放的具體算法就是Mean Normalization平均值歸一化。
Mean Normalization平均值歸一化的具體做法是,取得某一維度上特徵值的平均值,最大值,最小值。
進行縮放,使縮放後該維度上特徵值的平均值接近於0。
注意:
- 平均值歸一化算法只能對維度的特徵值進行,決不能對進行。因爲是人爲添加的,都等於1,歸一化後將全部被置爲0。
- 使用了平均值歸一化,必須要在這個過程中記錄下每個特徵的平均值和標準差。在梯度下降得到模型參數以後,給出新的測試樣本,那麼就要用這個平均值和標準差先對這個測試樣本進行平均值歸一化,再計算估值。否則,估值是錯誤的。
4.6 多項式擬合 Polynomial Regression
迴歸問題也可以採用多項式(開方)來進行擬合。
4.7 過擬合Overfit與欠擬合Underfit
機器學習問題解決的答案並不是唯一的,我們用一元線性迴歸可以得到一種估值,也可以用多項式擬合得到另一種估值,也可以用開方的擬合得到另一種估值。不同的估值並沒有對錯之分,完全取決於我們選擇了什麼樣的模型來解決問題。
對於明顯的採用一元線性迴歸或者開平方擬合就能解決的問題,如果非要使用多項式擬合,在給定的訓練集上可能效果很好。但是,隨着特徵(輸入)範圍的擴大,擬合效果將可能出現較大偏差,這就是過擬合Overfit。同理,如果我們用一元線性迴歸(“直線”)去解決一個明顯是多項式迴歸的問題,或者多項式擬合的階數不夠,就會走向另一個極端欠擬合Underfit。
因此,我們應當對訓練集的數據進行預處理,剔除明顯帶有錯誤或者重大偏差的數據,並小心謹慎的選擇解決問題的模型(恰擬合),避免過擬合或欠擬合。
4.8 一般等式、梯度下降和一般等式的比較
根據,我們得出一個求參數的一般等式。過程並不是嚴格的數學證明,只是一種演示,不嚴謹不要噴我。
這樣我們不需要經過梯度下降,根據這個公式進行矩陣運算即可求得參數。如果使用octave或者matlab等軟件,對於求矩陣逆的運算應使用pinv函數,以防止矩陣不可逆。
最後對比一下梯度下降和一般等式的優缺點。
Gradient Decent 梯度下降 |
Normal Equation 一般等式 |
---|---|
Need to choose 需要選擇學習率 |
No Need to choose 不需要選擇學習率 |
Need many iterations 需要迭代 |
No need to iterate 不需要迭代 |
Work well even when n is large 當參數個數n較大時依然性能良好 |
Need to compute slow if n is large 需要求矩陣的逆 當參數個數n較大時計算緩慢 |