機器學(xué)習(xí)到底需要多少數(shù)據(jù)?可能并不是越多越好
機器學(xué)習(xí)中最值得問的一個問題是,到底需要多少數(shù)據(jù)才可以得到一個較好的模型?從理論角度,有Probably approximately correct (PAC) learning theory來描述在何種情況下,可以得到一個近似正確的模型。但從實用角度看,PAC的使用范圍還是比較局限的。所以今天我們主要想討論一個問題:到底如何定義有效數(shù)據(jù)量。
本文引用地址:http://www.ex-cimer.com/article/201803/377066.htm1. 數(shù)據(jù)的粒度(granularity)
數(shù)據(jù)的粒度可以理解為數(shù)據(jù)的細(xì)分程度,或者具體程度。舉個簡單例子,我們想預(yù)測股票的走勢,那么我們可以得到以下歷史數(shù)據(jù):
每秒鐘的交易數(shù)據(jù)
每分鐘的交易數(shù)據(jù)
...
每年的交易數(shù)據(jù)
換成另一個場景,如果我們打算對一個句子進行截斷,“我今天真高興”,那么結(jié)果可以是:
我 | 今 | 天 | 真 | 高 | 興
我今 | 今天 | 天真 | 真高 | 高興
我今天 | 天真高 | 高興X
隨著細(xì)分程度的改變,那么數(shù)據(jù)量也有明顯的變化。數(shù)據(jù)的粒度越細(xì),數(shù)據(jù)量越大。一般來說,我們追求盡量細(xì)分的數(shù)據(jù),因為可以通過聚合(aggregation)來實現(xiàn)從具體數(shù)據(jù)到宏觀數(shù)據(jù)的還原,但反之則不可得。
但是不是數(shù)據(jù)越具體越好?不一定,過于具體的數(shù)據(jù)缺失了特征,有效的特征僅在某個特定的粒度才存在。打個比方,人是由原子、分子、細(xì)胞、組織、器官構(gòu)成,但在分子層面我們不一定能分辨它是人,只有到達一定的粒度才可以。因此,數(shù)據(jù)收集的第一個重點是搞清楚,在什么粒度可以解決我們的問題,而不是盲目的收集一大堆數(shù)據(jù),或者收集過于抽象的數(shù)據(jù)。
2. 數(shù)據(jù)量與特征量的比例
機器學(xué)習(xí)中對于數(shù)據(jù)的表達一般是 n*m的矩陣,n代表樣本的數(shù)量,一行(row)數(shù)據(jù)代表一個獨立數(shù)據(jù)。而m代表特征變量(attribute/feature/variable)的數(shù)量,一列(column)數(shù)據(jù)代表某個特征在所有樣本上的數(shù)值。比如下圖就代表了一個 4*2(n=4,m=2)的矩陣,即總共有4條數(shù)據(jù),每個數(shù)據(jù)有2個特征。
人們討論數(shù)據(jù)量,往往討論的是n,也就是有多少條數(shù)據(jù)。但這個是不準(zhǔn)確的,因為更加適合的評估應(yīng)該是n/m,也就是樣本量除以特征數(shù),原因很簡單。如果你只有100條數(shù)據(jù),但只有2個特征。如果用線性函數(shù)來擬合,相當(dāng)于給你100個點來擬合到二次函數(shù)上,這個數(shù)據(jù)量一般來說是比較充裕的。但還是100個數(shù)據(jù)點,每個數(shù)據(jù)的特征數(shù)是200,那么很明顯你的數(shù)據(jù)是不夠的,過擬合的風(fēng)險極高。
所以談?wù)摂?shù)據(jù)量,不能光說有多少條數(shù)據(jù)n,一定也要考慮數(shù)據(jù)的特征數(shù)m。
3. 特征間的相關(guān)性與有效性
前文所有的討論都建立在一個標(biāo)準(zhǔn)上,那就是我們選擇的數(shù)據(jù)是有效的。從兩個方向理解:
數(shù)據(jù)間的重復(fù)性低:
樣本間的重復(fù)性比較低,不會存在大量的重復(fù)樣本。一行數(shù)據(jù)復(fù)制100次還是1行數(shù)據(jù),因此拿到數(shù)據(jù)后去重也是很有必要的。
特征間的重復(fù)性低:這個要回歸到線性代數(shù)上,假設(shè)你有3個特征,結(jié)果 X_3 = alpha X_1 + beta X_2 ,那么從某種意義上來看你并沒有3個獨立特征,即特征間的相關(guān)性比較高。對于表達能力比較弱的模型,我們甚至有時還會人為的手動制造一些這樣的變量,但如果你的數(shù)據(jù)量大量的變量都是相關(guān)的,那么要謹(jǐn)慎地認(rèn)為你的數(shù)據(jù)量很大。舉個極端的例子,你有n個變量,結(jié)果 X_j = X_1 cdot j quad forall jin[1,2,...n] ,那么說到底你還是只有1個變量。
數(shù)據(jù)的有效性:此處的有效性指的是你的變量對于解決問題有幫助,而不是完全無關(guān)或者關(guān)聯(lián)性極低的數(shù)據(jù)。不要小看無關(guān)數(shù)據(jù),幾乎無處不在。拿我常舉的例子來說:
圖1. 全球非商業(yè)性空間飛船發(fā)射數(shù)量與美國社會學(xué)博士畢業(yè)數(shù)量之間的關(guān)系[1]
4. 數(shù)據(jù)是否越多越好?
承接上一個部分,數(shù)據(jù)比模型更重要,數(shù)據(jù)重要性 >> 模型重要性。機器學(xué)習(xí)模型的表現(xiàn)高度依賴于數(shù)據(jù)量 [2],選擇對的模型只是其次,因為巧婦難為無米之炊。
但數(shù)據(jù)不是越多越好,隨機數(shù)據(jù)中也可能因為巧合而存在某種關(guān)聯(lián)。Freedman在1989年做過的模擬實驗 [3]中發(fā)現(xiàn),即使數(shù)據(jù)全是由噪音構(gòu)成,在適當(dāng)?shù)奶幚砗?,也能發(fā)現(xiàn)數(shù)據(jù)中顯著的相關(guān)性:a. 6個特征顯著 b. 對回歸的做F-test的p值遠小于0.05,即回歸存在統(tǒng)計學(xué)意義
以此為例,大量數(shù)據(jù)不代表一定有顯著的意義,即使相關(guān)性檢驗也不能證明這一點。一般來說,需要先確認(rèn)數(shù)據(jù)的來源性,其次要確認(rèn)顯著的特征是否正常,最后需要反復(fù)試驗來驗證。最重要的是,要依據(jù)人為經(jīng)驗選取可能有關(guān)的數(shù)據(jù),這建立在對問題的深入理解上。更多相關(guān)的討論可以參考 微調(diào):你實踐中學(xué)到的最重要的機器學(xué)習(xí)經(jīng)驗是什么?。
5. 數(shù)據(jù)量與模型選擇
一般來說,在大數(shù)據(jù)量小特征數(shù)時,簡單模型如邏輯回歸+正則即可。在小數(shù)據(jù)量多特征下,集成的樹模型(如隨機森林和xgboost)往往優(yōu)于神經(jīng)網(wǎng)絡(luò)。隨著數(shù)據(jù)量增大,兩者表現(xiàn)趨于接近,隨著數(shù)據(jù)量繼續(xù)上升,神經(jīng)網(wǎng)絡(luò)的優(yōu)勢會逐步體現(xiàn)。隨著數(shù)據(jù)量上升,對模型能力的要求增加而過擬合的風(fēng)險降低,神經(jīng)網(wǎng)絡(luò)的優(yōu)勢終于有了用武之地而集成學(xué)習(xí)的優(yōu)勢降低。我在微調(diào):怎么理解決策樹、xgboost能處理缺失值?而有的模型(svm)對缺失值比較敏感呢? 曾經(jīng)總結(jié)過一些根據(jù)數(shù)據(jù)量選擇模型的經(jīng)驗:
數(shù)據(jù)量很小,用樸素貝葉斯、邏輯回歸或支持向量機
數(shù)據(jù)量適中或者較大,用樹模型,優(yōu)先 xgboost和lightgbm
數(shù)據(jù)量較大,嘗試使用神經(jīng)網(wǎng)絡(luò)
所以說到底,依然不存在定式,而依賴于經(jīng)驗和理解,供大家參考。
評論