數據模型需要多少訓練數據

本篇文章扣丁學堂小編和讀者們分享一下數據模型需要多少訓練數據,喜歡大數據的小夥伴隨小編一起來了解一下吧。

數據模型需要多少訓練數據

大數據培訓

毫無疑問機器學習是大數據分析不可或缺的一部分,在使用機器學習技術的時候工程師除了要選擇合適的算法之外還需要選擇合適的樣本數據。那麼工程師到底應該選擇哪些樣本數據、選擇多少樣本數據才最合適呢?

訓練數據的質量和數量通常是決定一個模型性能的最關鍵因素。一旦訓練數據準備好,其他的事情就順理成章了。但是到底應該準備多少訓練數據呢?答案是這取決於要執行的任務,要滿足的性能,所擁有的輸入特徵、訓練數據中的噪音、提取特徵中的噪音以及模型的複雜程度等因素。而找出這些變量之間相互關係的方法就是在不同數據量的訓練數據上訓練模型並繪製學習曲線。但是這僅僅適合於已經有一定數量的訓練數據的情況,如果是最開始的時候,或者說只有很少一點訓練數據的情況,那應該怎麼辦呢?

與死板地給出所謂精確的"正確"答案相比,更靠譜的方法是通過估算和具體的經驗法則。例如本文將要介紹的實證方法:首先自動生成很多邏輯迴歸問題。然後對生成的每一個問題,研究訓練數據的數量與訓練模型的性能之間的關係。最後通過觀察這兩者在這一系列問題上的關係總結出一個簡單的規則。

生成一系列邏輯迴歸問題並研究不同數據量的訓練數據所造成的影響的代碼可以從GitHub上獲取。相關代碼是基於Tensorflow實現的,運行這些代碼不需要任何特殊的軟件或者硬件,用戶可以在自己的筆記本上運行整個實驗。代碼運行之後生成的圖表如下:

數據模型需要多少訓練數據

大數據學習

其中,X軸是訓練樣本的數量與模型參數數量的比率。Y軸是訓練模型的得分(f-score)。不同顏色的曲線表示不同參數數量的模型。例如,紅色曲線代表模型有128個參數,曲線的軌跡表明了隨著訓練樣本從128 x 1到128 x 2並不斷增長的過程中該模型的得分變化。

通過該圖表,我們能夠發現模型得分並不會隨著參數規模的變化而變化。但是這是針對線性模型而言,對於一些隱藏的非線性模型並不適合。當然,更大的模型需要更多的訓練數據,但是對於一個給定的訓練模型數量與模型參數數量比率其性能是一樣的。該圖表還顯示,當訓練樣本的數量與模型參數數量的比率達到10:1之後,模型得分基本穩定在0.85,該比率便可以作為良好性能模型的一種定義。根據該圖表我們可以總結出10X規則,也就是說一個優秀的性能模型需要訓練數據的數量10倍於該模型中參數的數量。

10X規則將估計訓練數據數量的問題轉換成了需要知道模型參數數量的問題。對於邏輯迴歸這樣的線性模型,參數的數量與輸入特徵的數量相等,因為模型會為每一個特徵分派一個相關的參數。但是這樣做可能會有一些問題:

特徵可能是稀疏的,因而可能會無法直接計算出特徵的數量。

由於正則化和特徵選擇技術,很多特徵可能會被拋棄,因而與原始的特徵數相比,真正輸入到模型中的特徵數會非常少。

避免這些問題的一種方法是:必須認識到估算特徵的數量時並不是必須使用標記的數據,通過未標記的樣本數據也能夠實現目標。例如,對於一個給定的大文本語料庫,可以在標記數據進行訓練之前通過生成單詞頻率的歷史圖表來理解特徵空間,通過歷史圖表廢棄長尾單詞進而估計真正的特徵數,然後應用10X規則來估算模型需要的訓練數據的數據量。

需要注意的是,神經網絡構成的問題集與邏輯迴歸這樣的線性模型並不相同。為了估算神經網絡所需要的參數數量,你需要:

如果輸入是稀疏的,那麼需要計算嵌套層使用的參數的數量。

計算神經網絡中邊的數量

由於神經網絡中參數之間的關係並不是線性的,所以本文基於邏輯迴歸所做的實證研究並不適合神經網絡。但是在這種情況下,可以將10X規則作為訓練數據所需數據量的下限。

儘管有上面的問題,根據經驗,10X規則對於大部分問題還是適用的,包括淺神經網絡。如果有疑問,可以在Tensorflow的代碼中插入自己的模型和假設,然後運行代碼進行驗證研究。

以上就是小編給大家分享的數據模型需要多少訓練數據,希望能幫到更多的小夥伴瞭解大數據,想要了解更多內容的小夥伴可以登錄扣丁學堂官網諮詢。扣丁學堂是專業的大數據培訓機構,不僅有專業的老師和與時俱進的課程體系,還有大量的大數據在線教程供學員觀看學習哦。


分享到:


相關文章: