1. 程式人生 > >機器學習之大數據集

機器學習之大數據集

曲線 叠代 ... 問題 alt 流數據 疊加 沒有 cost

前言

以下內容是個人學習之後的感悟,轉載請註明出處~

簡介

  大數據時代已經來臨,它將在眾多領域掀起變革的巨浪。機器學習對於大數據集的處理也變得越來越重要。大數據

集務必會帶來恐怖的計算量,不僅耗費大量資源,而且給數據處理的實時性帶來巨大的挑戰。

  想要解決這個難題,就需要采取以下措施:選擇更加適合大數據集的算法、更加好的硬件,采用並行計算等。

  本文內容較多,建立以下目錄,方便瀏覽:

  • 批量梯度下降法
  • 隨機梯度下降法
  • 微型批量梯度下降法
  • 判斷收斂
  • 選擇學習速率α
  • 在線學習
  • map readuce

批量梯度下降法

  以線性回歸為例,如果m很大,每次循環都得進行m次求和,計算量非常大,不建議。

技術分享

隨機梯度下降法

  以線性回歸為例,隨機梯度下降法采用單次代價函數cost,每次叠代θ,不需要執行那麽多次加法,計算量小很多。

  註意:樣本需要隨機打亂。

技術分享

技術分享

微型批量梯度下降法

  以線性回歸為例,設樣本數量m=1000,小批量數b=10,即每次叠代只需10次疊加,計算量也很少。

技術分享

判斷收斂

  之前數據量很少的時候,我們都是直接判斷代價函數J(θ),只要其不再減少則收斂。然後在數據量很大的情況下,如

果實時監控代價函數,必然帶來巨大的計算量。其實,我們可以每隔1000次計算一下代價函數cost,將其畫成曲線,取其

低谷處為收斂,若出現曲線趨勢遞增,則表明發散。(圖中的細小起伏波紋是噪音導致)

          技術分享

選擇學習速率α

  我們選擇隨機梯度下降法來處理大數據,雖然可以達到減小計算量的效果,但是並不能準確地達到極值點,有些人為

了盡量逼近極值點,設置α=常數1/(叠代次數+常數2)。

  雖然無法達到極值點,但是也相差不多,所以一般α取常數即可。

在線學習

  很多情況下,數據是源源不斷地傳輸過來,而且我們要時常更新一些信息,這時就需要使用在線學習。

  在線學習是沒輸入一個樣本都會計算下誤差,調整一下參數,是基於樣本的。假設有m個樣本技術分享 在線學習的過程是先輸入樣本技術分享,然後調整參數,接著再輸入技術分享,再調整參數,這樣持續到最後一個樣本。這樣也就導致了在 線學習沒有並行性,一般在使用在線學習時會隨機打亂訓練樣本的順序,這樣可以 有效避免陷入局部最小值。在線學習的一個優點是能夠追蹤 訓練數據小的改變。在線學習一般用於實時產生數據的web網站等(流數據)。   在線學習有兩個優點:
  • 在線學習容易執行
  • 對大規模和困難模式分類問題能提供有效解

map readuce

  以批量梯度下降法為例,將m=400的數據集分為4部分,分別由4臺電腦處理。如下圖所示:

技術分享

  此外,你也可以用多核電腦進行並行計算。

以上是全部內容,如果有什麽地方不對,請在下面留言,謝謝~

機器學習之大數據集