Coursera在线学习---第十节.大规模机器学习(Large Scale Machine Learning)
一、如何學習大規模數據集?
在訓練樣本集很大的情況下,我們可以先取一小部分樣本學習模型,比如m=1000,然后畫出對應的學習曲線。如果根據學習曲線發現模型屬于高偏差,則應在現有樣本上繼續調整模型,具體調整策略參見第六節的高偏差時模型如何調整;如果發現模型屬于高方差,則可以增加訓練樣本集。
?
二、隨機梯度下降法(Stochastic Gradient Descent)
之前在講到優化代價函數的時候,采取的都是“批量梯度下降法”Batch Gradient,這種方法在每次迭代的時候,都需要計算所有的訓練樣本,對于數以億計的大規模樣本集而言,計算代價太大,再加上需要多次迭代,累加起來計算量更大,收斂速度會比較慢。
隨機梯度下降法,首先打亂樣本順序,然后遍歷樣本集。對每一個樣本就相當于迭代一次,調整一次參數,所以總體計算量小很大。對整個樣本集的重復次數也就是1-10次足矣。所以,該算法要快很多。
?
三、小批量梯度下降法(Mini-batch Gradient Descent)
小批量梯度下降法介于批量梯度下降法與隨機梯度下降法之間,每次迭代用b個樣本數據,b往往=10,或者2~100的數。但是在使用小批量梯度下降法時,如果你采用的是向量化計算時,能夠同時并行處理b個樣本,此時效率應該比隨機梯度法更好,因為其并沒有并行處理數據。
?
四、隨機梯度下降法的收斂。
隨機梯度下降法最后的收斂不一定是全局最小值,這點跟批量梯度下降法不大一樣,而是在全局最小值周圍振蕩徘徊,只要很接近全局最小值,這也是可以接受的。其實可以動態調整學習速率α=常數1/(迭代次數+常數2),這樣隨著迭代進行,α逐漸減小,有利于最后收斂到全局最小值。但是由于"常數1"與“常數2”不好確定,所以往往設定α是固定不變的。
如何判斷隨著迭代進行,模型在收斂呢?每隔1000或5000個樣本,計算這些樣本的J值一個總體平均值,然后畫出來,如下圖所示。從圖形走勢看模型迭代過程中是不是在下降收斂。如第四張圖,走勢是上升的,則應調小學習速率α。
?
五、在線機器學習
以物流運輸為例,當用戶登陸網站,選擇包裹起始地與目的地后,網站據此提供一個服務價格,用戶可能接受,也可能拒絕。一個用戶完成后,我們就得到了一個樣本(x,y),這樣我們就可以用隨機梯度下降法來學習了。當有用戶源源不斷進來時,模型就不斷地學習調整參數Θ。即便隨著經濟發展,用戶可以接受更高價格了,模型也能根據用戶選擇,動態調整參數Θ。在線機器學習的前提是,網站能源源不斷地獲取大量樣本數據。
另一個應用例子就是用戶搜索商品時,根據用戶的點擊情況來動態調整參數,盡量將點擊率高的產品推薦給用戶。
轉載于:https://www.cnblogs.com/gczr/p/6509423.html
總結
以上是生活随笔為你收集整理的Coursera在线学习---第十节.大规模机器学习(Large Scale Machine Learning)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQLCMD
- 下一篇: spark sql的简单操作