样本不平衡不均衡数据处理
20220302
對連續性的不平衡也可以參照分類型數據的不平衡處理方法?劃分為多個集合求平均值?
20220125
# 數據劃分negtive_rows = negtive_data.shape[0]positive_rows = postive_data.shape[0]pos_neg_ratio = negtive_rows / positive_rowsdata_divide_nums = np.round(pos_neg_ratio)data_divide_nums = int(data_divide_nums)# 湊成數目相等的數據if data_divide_nums > pos_neg_ratio: # 進位total_rows = data_divide_nums * negtive_rowspostive_data = pd.concat([postive_data,postive_data],axis=0)postive_data = postive_data.iloc[0:total_rows,:]else:total_rows = (data_divide_nums+1) * negtive_rowspostive_data = pd.concat([postive_data, postive_data], axis=0)postive_data = postive_data.iloc[0:total_rows,:]正負樣本湊齊數目相同的處理
20220104
基于改進聚類的電信客戶流失預測分析
20211010
集成方法——使用所有分類中的小樣本量,同時從分類中的大樣本量中隨機抽取數據來與小樣本量合并構成訓練集,這樣反復多次會得到很多訓練集,從而訓練出多個模型。例如,在數據集中的正、負樣本分別為100和10000條,比例為1:100,此時可以將負樣本隨機切分為100份,每份100條數據,然后每次形成訓練集時使用所有的正樣本(100條)和隨機抽取的負樣本(100條)形成新的訓練數據集。如此反復可以得到100個模型。然后繼續集成表決
當然常用的是上述集成方法,但是不是直接進行使用,試想訓練100個模型進行表決,離線會很麻煩,而且線上使用也不現實。
所以通常會進行修改使用,一般情況下在選擇正負樣本時會進行相關比例的控制,假設正樣本的條數是N,則負樣本的條數會控制在2N或者3N,即遵循1:2或者1:3的關系,當然具體的業務場景下要進行不同的嘗試和離線評估指標的對比。
20210114
多數樣本和少數樣本類別比不超過100?
在銀行欺詐檢測,市場實時競價或網絡入侵檢測等領域通常是什么樣的數據集呢?
在這些領域使用的數據通常有不到1%少量但“有趣的”事件,例如欺詐者利用信用卡,用戶點擊廣告或者損壞的服務器掃描網絡。
然而,大多數機器學習算法對于不平衡數據集的處理不是很好。 以下七種技術可以幫你訓練分類器來檢測異常類。
使用正確的評估指標
對使用不平衡數據生成的模型應用不恰當的評估指標可能是危險的。
想象一下,我們的訓練數據如上圖所示。 如果使用精度來衡量模型的好壞,使用將所有測試樣本分類為“0”的模型具有很好的準確性(99.8%),但顯然這種模型不會為我們提供任何有價值的信息。
在這種情況下,可以應用其他替代評估指標,例如:
精度/特異性:有多少個選定的相關實例。
調用/靈敏度:選擇了多少個相關實例。
F1得分:精度和召回的諧波平均值。
MCC:觀察和預測的二進制分類之間的相關系數。
AUC:正確率與誤報率之間的關系。
重新采樣訓練集
除了使用不同的評估標準外,還可以選擇不同的數據集。使平衡數據集不平衡的兩種方法:欠采樣和過采樣。
欠采樣通過減少冗余類的大小來平衡數據集。當數據量足夠時使用此方法。通過將所有樣本保存在少數類中,并在多數類中隨機選擇相等數量的樣本,可以檢索平衡的新數據集以進一步建模。
相反,當數據量不足時會使用過采樣,嘗試通過增加稀有樣本的數量來平衡數據集。不是去除樣本的多樣性,而是通過使用諸如重復,自舉或SMOTE等方法生成新樣本(合成少數過采樣技術)
請注意,一種重采樣方法與另一種相比沒有絕對的優勢。這兩種方法的應用取決于它適用的用例和數據集本身。過度取樣和欠采樣不足結合使用也會有很好的效果。
以正確的方式使用K-fold交叉驗證
值得注意的是,使用過采樣方法來解決不平衡問題時,應適當地應用交叉驗證。切記,過采樣會觀察到稀有的樣本,并根據分布函數自舉生成新的隨機數據。如果在過采樣之后應用交叉驗證,那么我們所做的就是將模型過度適應于特定的人工引導結果。這就是為什么在過采樣數據之前應該始終進行交叉驗證,就像實現特征選擇一樣。只有對數據進行重復采樣,可以將隨機性引入到數據集中,以確保不會出現過擬合問題。
組合不同的重采樣數據集
生成通用模型的最簡單方法是使用更多的數據。問題是,開箱即用的分類器,如邏輯回歸或機森隨林,傾向于通過丟棄稀有樣例來推廣。一個簡單的最佳實現是建立n個模型,使用少數類的所有樣本和數量充足類別的n個不同樣本。假如您想要組合10個模型,需要少數類1000例,隨機抽取10.000例多數類的樣本。然后,只需將10000個樣本分成10個塊,訓練出10個不同的模型。
如果您有大量數據,那么這種方法很簡單,完美地實現水平擴展,因此您可以在不同的集群節點上訓練和運行模型。集合模型也趨于一般化,使得該方法容易處理。
用不同比例重新采樣
對多數類進行聚類
Sergey Quora提出了一種優雅的方法[2]。他建議不要依賴隨機樣本來覆蓋訓練樣本的種類,而是將r個分組中的多數類進行聚類,其中r為r中的樣本數。對于每個組,只保留質心(樣本的中心)。然后該模型僅保留了少數類和樣本質心來訓練。
設計自己的模型
以前的所有方法都集中在數據上,并將模型作為固定的組件。但事實上,如果模型適用于不平衡數據,則不需要對數據進行重新采樣。如果數據樣本沒有太多的傾斜,著名的XGBoost已經是一個很好的起點,因為該模型內部對數據進行了很好的處理,它訓練的數據并不是不平衡的。但是再次,如果數據被重新采樣,它只是悄悄進行。
通過設計一個損失函數來懲罰少數類的錯誤分類,而不是多數類,可以設計出許多自然泛化為支持少數類的模型。例如,調整SVM以相同的比例懲罰未被充分代表的少數類的分類錯誤。
綜上所述
這不是一份獨家的技術清單,而是處理不平衡數據的一個起點。
沒有適合所有問題的最佳方法或模型,強烈建議您嘗試不同的技術和模型來評估哪些方法最有效。 可以嘗試創造性地結合不同的方法。
同樣重要的是,要注意在不平衡類出現的許多領域(例如欺詐檢測,實時競價)中,“市場規則”正在不斷變化。所以,要查看一下過去的數據是否已經過時了。
20211010
https://mp.weixin.qq.com/s/qxcpRKoUUEH0JXA8_o4G5Q
https://mp.weixin.qq.com/s/QEHAV_rW25E0b0N7POr6tw
關于處理樣本不平衡問題的Trick整理
處理非平衡數據的七個技巧
總結
以上是生活随笔為你收集整理的样本不平衡不均衡数据处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多分类 数据不平衡的处理 lightgb
- 下一篇: EdgeBERT:极限压缩bert