04.20 在線算法外存學習處理大數據集

在上一篇文章中,使用了logistic迴歸來對電影評論進行分類,消耗了2到3個小時

,在使用網格搜索對50000條電影評論構建特徵向量的時候計算成本是非常大的。在實際應用中,可能會遇見更大的數據集,如果直接把數據集加載到內存中,可能會超出計算機的最大內存,同時也會需要更久的時間。在這篇文章中,將介紹外存學習來處理大數據集,使用外存學習來處理50000條電影評論只需要1分鐘

在線算法外存學習處理大數據集

在梯度下降算法中,我們有學習過隨機梯度下降和批量梯度下降,每次通過一個或批量的訓練數據來更新權重。而,外存學習與批量梯度下降的思想是一致的。使用sklearn的SGDClassifier的partial_fit函數來訓練從本地磁盤讀取的批量數據,來構建模型。

1、導入相關包

在線算法外存學習處理大數據集

2、評論的預處理

在線算法外存學習處理大數據集

3、讀取電影評論

在線算法外存學習處理大數據集

4、模型訓練和預測

在線算法外存學習處理大數據集

sklearn中的TfidfVectorizer在計算電影評論的特徵向量時,需要將所有的電影評論加載到計算機的內存中來計算TF-IDF。sklearn還提供了HashingVectorizer來計算文本信息的向量,HashingVectorizer是獨立數據,使用了32位的MurmurHash3算法。

在線算法外存學習處理大數據集

總結:外存學習能提高訓練模型的速度,但同時也會降低模型的準確率。在上一篇文章中,使用網格搜索和交叉驗證獲得的模型在訓練集上的準確率為89.9%在測試集上的準確率為90.6%。所以在處理實際問題的時候,我們需要根據我們的需求來進行選擇,從訓練時間和資源消耗之間進行衡量。


分享到:


相關文章: