lage scale machine learnning(大規模機器學習)
1、判斷是否有必要擴大資料量?
使用學習曲線,觀察隨著 m 的增大,測試誤差是否有顯著下降,如高方差情況(過擬合).
2、stochastic gradient descent(隨機梯度下降):
(1)問題背景:
當資料過於龐大,一次性無法完全讀取資料,在求和的時候無法完成所有資料的求和.
(2)對比 batch gradient descent(批量梯度下降):
① 演算法區別:
其中:
外層迴圈一般1 - 10次.
② 擬合流程區別:
批量梯度下降:接近一條直線去靠近全域性最小值;
隨機梯度下降:迂迴徘徊地靠近全域性最小值.
(3)檢查收斂性:
每1000次迭代計算一次平均代價,繪製出影象,影象可能會存在雜訊,但是總體趨勢下降即可判斷是收斂.
下圖紅色線條的學習速率更小,**會更小:
倘若資料總量太少,設定的迭代次數間隔太大,那麼雜訊會很大,下降趨勢不夠明顯,如下圖:
下圖表示演算法發散,可以嘗試更小的學習速率:
3、mini-batch gradient descent(小批量梯度下降):
批量梯度下降每次迭代使用 m 個樣本,隨機梯度下降每次迭代使用 1 個樣本.
而小批量梯度下降每次迭代使用 b 個樣本.
b 為「迷你批次」的引數,通常取值 2 - 100.
舉例說明:假設在貨運系統中,客戶出價 x 讓貨車從a運到b,貨車可以選擇接受(y = 1)和拒絕(y = 0). 依據 p( y = 1 | x; θ),來優化** x.
repeat forever{
get (x, y) corresponding to user;
update θ using (x, y):
θj := θj - α (hθ(x) - y) x; (j = 0, 1, ..., n)
5、map reduce(對映約減):
(1)原理:
假設存在 m 個訓練樣本,將訓練集等分成 c 份(這裡假設是4個).將訓練樣本的子集送到 c 臺不同計算機,每一台對 m/c 個資料進行求和運算,再送到中心計算伺服器:
combine: 求和部分轉為四個 temp的累加.
(2)注意點:
① 若不考慮網路延遲和傳輸時間,演算法可以得到四倍加速.
② 當主要運算量在於訓練樣本的求和時,可以考慮使用對映化簡技術.
機器學習 大規模機器學習
當資料有大量的資料,比如1億以上的時候,如果想擬合乙個線性回歸或者邏輯回歸時,梯度下降演算法的計算量將是非常龐大的。預檢查 為什麼不用1000個樣本,而需要用11億個?遇到高偏差問題時候,選擇合適大小的資料集即可,再增加資料集並不會改善,處理方式為尋找新的模型。如果是低方差的模型,增加資料集的規模可...
大規模機器學習
如果我們有乙個低方差的模型,增加資料集的規模可以幫助你獲得更好的結果。我們應 該怎樣應對乙個有 100 萬條記錄的訓練集?以線性回歸模型為例,每一次梯度下降迭代,我們都需要計算訓練集的誤差的平方和,如果我們的學習演算法需要有 20 次迭代,這便已經是非常大的計算代價。首先應該做的事是去檢查乙個這麼大...
大規模機器學習
如果我們有乙個低方差的模型,增加資料集的規模可以幫助你獲得更好的結果。我們應 該怎樣應對乙個有 100 萬條記錄的訓練集?以線性回歸模型為例,每一次梯度下降迭代,我們都需要計算訓練集的誤差的平方和,如果我們的學習演算法需要有 20 次迭代,這便已經是非常大的計算代價。首先應該做的事是去檢查乙個這麼大...