大數據集的梯度下降算法
主要內容包括:
- 批量梯度下降法Batch Gradient Descent(BSD)
- * 隨機梯度下降Stochastic gradient descent ( SGD) *
- 小批量梯度下降 Mini-Batch Gradient Descent
- online learning
-Map-reduce 並行化計算
回顧
梯度下降算法
批量梯度下降法Batch Gradient Descent(BSD)
每次迭代的時候,都對全部樣本進行計算
隨機梯度下降Stochastic gradient descent ( SGD)
先將樣本數據隨機打亂順序,然後在每次迭代中,只是用一個樣本數據
優點:節約計算成本
缺點:不是每次迭代都會是J變小,可能陷入局部最優解
爲了確保SGD收斂(Convergence),在使用第i個樣本更新
一般情況下learning rate(
小批量梯度下降 Mini-Batch Gradient Descent
每次迭代使用b個樣本,b通常取值範圍2~100,Angrew經常用的是10
藉助octave的向量化計算函數,Mini-Batch 的 性能會優於 SGD;但多了一個參數b要調
online learning
當你的網站有很多訪問量,有很多免費的數據,來一個數據,計算一次,丟棄這個樣本,使用onlinelearning。如果你的網站數據量很小,那還是把數據保存下來慢慢train 比較好。
online learning 可以很好的使用用戶的變化,比如經濟危機的時候用戶可能會價格更加敏感。
舉一個搜索引擎學習CTR的例子
Map-reduce 並行化計算
就是將批量梯度下降算法的求和計算分配給整個集羣
將訓練集分成若干份,每一份在一個slave機器上跑,再彙總到master機器上
如果機器學習算法中有求和計算,就可以考慮用MapReduce進行優化
Mapreduce可以用於集羣,數據中心,也可以用戶多核的單機