A. 用途:
可以用來預測,由多種因素影響的結果。
B. 建立公式:
C. 求解方法:
方法1. Gradient Descent:
技巧:
技巧1. Feature Scaling:
何時用:
當各個變量的值域或者數量級相差比較大時,
需要將各個變量的值域變換到相似的水平,
變換后,Gradient Descent 就可以更快地下降。
為什么要用:
不用的話,J 關于 Theta 的形狀就會非常扁,Gradient 就會來回擺動,就需要更長的時間才能找到最小值。
所以就要做Feature Scaling:
怎么用:
1.除以值域范圍:
2.或者,先減平均值,再除以值域范圍:
之后,這個形狀就會比較正規,Gradient 就可以比較快地找到全局最小值。
技巧2. Learning Rate:
如何確認Gradient Descent是在正確地進行?
如何選擇Alpha?
1. 如何確認Gradient Descent是在正確地進行?
數學家們已經證明,當Alpha足夠小,J就會每次迭代后都下降。
所以,就可以畫圖,橫軸是迭代的次數,縱軸是cost function的值:
如果是正確的話,那么每次都用迭代后得到的Theta代入J,J應該是下降的。
如果曲線是上升的,說明Gradient Descent用錯了,此時需要將Alpha調小。
因為Alpha較大的話,就會過頭而錯過最小值,進而表現越來越差,造成曲線是上升的:
但是當Alpha太小的話,收斂就會很慢。
補充:
到底需要多少次迭代才會收斂,是與算法和數據有關的。
自動檢測是否收斂的方法:
但是這個閾值是很難去確定的。
2. 如何選擇Alpha?
在實踐中:
可以嘗試一系列Alpha的值,0.001,0.01,0.1,1等。
技巧3. 如何選Feature?
在實踐中:
你可以不只是用給定的因素,而是通過思考,看哪些因素也是影響預測目標的原因,或者由原始的因素間,進行加減乘除等運算,自己構建Feature。
有一種比較普遍的構建方法,就是多項式。
后續會介紹一些算法,是用來自動選擇Feature的。
方法2. Normal Equation
它是另一種求解最小值的方法,是通過分析的方式,而不是迭代。
根據線性代數的知識,得到Theta的求解公式:
m個Sample數據,n個Feature,那么Design Matrix的維度就是 m*(n+1)。
當 X`X 不可逆的時候,該怎么辦?
造成不可逆的原因可能主要有兩個:
一個是變量間具有相關性,比如一個變量以線性相關關系的形式被用作兩個變量。
另一個原因是用了太多的Feature,就是m<=n時,比如說只用10個Sample去做101個Feature的預測。
這兩種情況下的解決方案就是,要么刪掉一些Feature,要么采用Regularization,后續。
D. 兩種方法比較
用 Normal Equation 的話,就不用做 Feature Scaling 了。
當 Feature 有很多,成千上百萬的時候,Gradient Descent 也仍然有效,但是 Normal Equation 因為要計算矩陣的轉置,乘積,還有逆,就不適用于這樣的數量級的計算。一般在 1000 級別的還可以用 Normal Equation。