什么情況下需要會用到抽樣:
-數據量太大,計算能力不足。
-抽樣調查,小部分數據即可反應全局情況。
-時效要求,通過抽樣快速實現概念驗證。
-定性分析的工作需要。
-無法實現全覆蓋的場景,比如滿意度調查等。
今天我們來聊聊kaggle學術活動中數據抽樣方式。
解決樣本不均衡問題:
隨機抽樣(用的最多)
該抽樣方法是按等概率原則直接從總中抽取n個樣本,這種隨機樣本方法簡單,易于操作;但是它并不能保證樣本能完美的代表總體,這種抽樣的基本前提是所有樣本個體都是等概率分布,但真實情況卻是很多數樣本都不是或無法判斷是否等概率分布。在簡單隨機抽樣中,得到的結果是不重復的樣本集,還可以使用有放回的簡單隨機抽樣,這樣得到的樣本集中會存在重復數據。該方法適用于個體分布均勻的場景。
使用Pandas進行數據隨機
DataFrame.sample(n=None,?frac=None,?replace=False,?weights=None,?random_state=None,?axis=None)
參數說明:
n:需要抽樣的數量
frac:需要抽樣的比例,0-1之前的小數。n和frac只能傳一個
replace:是否允許同一行被抽到多次,默認為False
weights:默認為等概率加權
random_state:隨機數發生器種子
axis:取值為0時,抽取行。取值為1時,抽取列。
等距抽樣:
等距抽樣是先將總體的每個個體按順序編號,然后再計算出抽樣間隔,再按照固定抽樣間隔抽取個體。這種操作方法易于理解、簡便易行,但當總體樣本的分布呈現明顯的分布規律時容易產生偏差,例如增減趨勢、周期性規律等。該方法適用于個體分布均勻或呈現明顯的均勻分布規律,無明顯趨勢或周期性規律的數據。
比如當需要對用戶訪問頁面進行分析時,由于一個用戶存在多個瀏覽記錄,如果采用隨機抽樣可能會導致抽取到的用戶訪問頁面不全的信息。改進方案為按照會員維度等距進行抽樣。比如按會員號尾號進行抽樣。
分層抽樣:
分層抽樣是先將所有個體樣本按照某種特征劃分為幾個類別,然后從每個類別中使用隨機抽樣或等距抽樣的方法選擇個體組成樣本。這種操作方法能明顯的降低抽樣誤差,并且便于針對不同類別的數據樣本進行單獨研究,因此是一種較好的實現方法。該方法適用于帶有分類邏輯的屬性、標簽等特征的數據。
通過分層抽樣解決樣本不均衡的問題:
過抽樣:增加分類中少數類樣本的數量,最簡單的方法就是復制少數類樣本形成多條記錄。改進的過抽樣方法是在少數類中加入隨機噪聲、干擾數據或通過一定規則產生新的合成樣本。例如SMOTE算法。過抽樣方法應用極廣泛。
欠抽樣:減少分類中多數類樣本的數量,最簡單的方法就是隨機去掉一些多數樣本。
通過正負樣本的懲罰權重來解決不均衡:對于分類中不同樣本數量的類別分別賦予不同權重(一般小樣本量類別權重大,大樣本量類別權重小),然后進行計算和建模,例SVM。
機器學習需要多大的數據量
很多機器學習研究者普遍存在的問題:“我的項目需要多少訓練數據?”這個問題經常讓不少開發者非常苦惱。實際上,這個問題回答起來比看上去要復雜的多,因為其中要涉及到很多因素,比如你使用的模型類型,模型在實際業務中的用途等等。
報名通道已開啟,有想法以及需要報名的,掃碼咨詢!
免費領取近幾年真題及解析,考前沖刺,名師講解,專業答疑,穩扎穩打

為何很難預估你的數據集大小?
確定目標數據量的許多困難源于訓練過程的目標。有很多文章都講到了模型訓練過程的工作原理,但要記住,我們訓練的目的是構建一個能理解數據背后模式和關系的模型,而不僅僅是理解數據本身。收集數據時,我們需要確保所擁有的數據數量能教會算法數據中的關系,以及數據和結果之間的關系。
這看起來很容易預測。但實際上機器學習項目的目標多種多樣,可以產生大量的訓練數據類型。因此,每個項目都有各自獨特的多種因素,這使得提前計算數據需求變得非常困難,可能包括以下部分或全部內容:
1.模型的復雜度:模型為完成任務而必須考慮的每個參數都會增加訓練所需的數據量。例如,用于識別特定汽車品牌的模型具有少量的參數,主要與車輛的形狀相關。而如果是一個必須從長遠考慮汽車成本的模型,不僅要顧及到包括汽車品牌和狀況的因素,還有經濟和社會因素。由于這種復雜程度更高,第二個模型需要比第一個模型更多的數據。
2.訓練方法:由于模型必須理解更多的互連參數,由此導致的復雜性使得訓練模型的方式也被迫發生改變。傳統的機器學習算法使用結構化學習,這意味著它們很快就會出現附加數據投入產出比很低的情況。相反,深度學習模型可以找出自己的參數,并學習如何在沒有結構的情況下進行改進。這意味著它們不僅需要更多的數據,而且還有更長的學習曲線,其中進一步增加數據具有積極的影響。因此,你使用的訓練方法會導致對你的模型有用的訓練數據量發生顯著變化。
3.標簽需求:根據實際任務,我們會以不同方式注釋數據點。這可能會導致數據生成的標簽數量,以及創建這些標簽所需的工作量發生明顯變化。例如,如果我們有1000個輸入數據句子用于情感分析,我們可能只需要將它們標記為正面情感或負面情感,因此每個句子產生一個標簽。但是,如果對同樣1000個句子進行注釋用于實體提取,則可能需要為每個句子標記5個單詞。盡管具有相同的原始輸入數據,但是一個任務產生的標簽比另一個任務多五倍。因此,我們準備數據的方式可能會影響項目所需的工作量和花費的成本。
4.誤差容忍度:模型在你的實際業務中的預期作用也會影響數據量。對于預測天氣的模型,20%的誤差率是可接受的,但如果用于檢測有心臟病發作風險的患者,這個誤差率萬萬不可。在邊界案例方面的改進可以降低這種風險。如果你的算法具有高度風險規避或者對于項目能否成功至關重要,那么你需要的數據量會大幅增加,才能追求完美性能。
5.輸入的多樣性:我們生活在一個復雜的世界中,可以向模型輸入各種類型的輸入數據。例如,聊天機器人必須能夠理解各種語言,哪怕它們是用一系列正式,非正式甚至語法不正確的風格寫就的。如果無法高度控制模型的輸入,就需要更多數據來幫助你的模型在不可預測的環境中運行。從上面這些因素可以清楚地看到,我們需要的數據量取決于項目的獨特需求和預期目標。最后,項目負責人必須自己平衡這些因素,并提出自己的目標。那么有沒有什么方法呢?有,接下來就看看有哪些方法可以幫我們在剛開始時確定所需的數據量。
我們該如何計算數據需求
確定任何給定算法所需的確切數據數量可能無法做到。幸好,基于整體預估的方法能幫你分析項目的訓練數據需求量,以下兩種方法均可:
10 倍法則:一個常見的經驗法則是模型通常需要超出其自由度 10 倍的數據量。這里的自由度可以是影響模型輸出的參數,是數據點的一個屬性,或者更簡單地說,是數據集中的列。10 倍法則的目標就是是抵消這些組合參數為模型輸入帶來的變化。對于復雜模型而言,這可能沒有幫助。但是,這條法則能讓我們快速估算數據集的數量,保證項目保持運行。
學習曲線:如果你已經有一些數據并希望根據更多事實情況做出決策,可以考慮創建一個研究示例,根據數據集的大小來評估模型的能力。通過把結果繪制在圖表上,你應該能夠找出數據集大小與模型能力之間的關系,同時還要確定什么時候添加更多數據的收益會不斷遞減。這種方法需要更多人力工作,包括創建一些邏輯回歸問題,但至少比簡單一猜要靠譜得多。
通常,最好在剛開始時用手頭已有的數據訓練模型,在你認為有必要時再添加更多數據。一旦項目取得一些結果,你對數據的需求會越來越明顯。不過,有些朋友還是希望能在項目開水前有個確切的數字,下面是我們在網上找到的項目數據集大小的一些估計。也許這些例子能讓你對自己項目所需的數據集大小心里有個數。
數量 VS 質量
數據的局限性也會是模型的局限性。但是,在所有關于你需要多少數據的討論中,不要忘記這條也適用于數據質量和數量。對于模型來說,一百萬個混亂的數據反而不如 100 個干凈數據,后者實際上更有助于算法達成目標。無論你正在搭建什么樣的模型,都要確保正在使用的數據能為你提供堅實的基礎和最佳的成功機會。
大于 (數值型特征數量+每個類別型特征的類別數) * 10小于 100萬個人處理時,也沒有考慮那么多內容,通常取100萬數據進行作為訓練集。
● 版權聲明:內容大部分源于網絡,版權歸作者所有,如有侵犯權益,請私信處理。

? 2025. All Rights Reserved. 滬ICP備2023009024號-1