python组合数据分类_Python解决数据样本类别分布不均衡问题
所謂不平衡指的是:不同類別的樣本數量差異非常大。
數據規模上可以分為大數據分布不均衡和小數據分布不均衡。大數據分布不均衡:例如擁有1000萬條記錄的數據集中,其中占比50萬條的少數分類樣本便于屬于這種情況。小數據分布不均衡:例如擁有1000條數據樣本的數據集中,其中占有10條的少數分類樣本便于屬于這種情況。
樣本類別分布不平衡主要出現在分類問題的建模上。導致樣本量少的分類所包含的特征過少,很難從中提取規律;即使得到分類模型,也容易產生過度依賴于有限的數據樣本而導致過擬合的問題,當模型應用到新的數據上,模型的準確性和魯棒性很差。
樣本分布不平衡主要在于不同類別間的樣本比例差異,超過10倍,就要考慮該問題,超過20倍,一定要解決。
1. 數據挖掘中容易出現樣本不均衡的場景
1. 異常檢測場景
比如惡意刷單、黃牛訂單、信用卡欺詐、電力竊電、設備故障等。這些數據樣本所占的比例通常是整體樣本中很少一部分,以信用卡欺詐為例,欺詐比例一般在 0.1% 以內。
2. 客戶流失場景
大型企業流失的客戶相對于整體客戶通常是少量的。比如電信、石油等。
3. 低頻事件的發生
例如每年1次的雙11盛會一般都會產生較高的銷售額,但放到全年來看這一天的銷售額占比很可能只有1%不到,尤其對于很少參與活動的公司而言,這種情況更加明顯。這種屬于典型的低頻事件。
2. 解決樣本不均衡
1. 過抽樣和欠抽樣解決樣本不均衡
過抽樣
(也叫上采樣、over-sampling)即增加分類中少量樣本的數量,簡單方法就是復制少數類樣本形成多條記錄,缺點是樣本特征少導致過擬合。
改進的過抽樣:通過在少數類中加入隨機噪聲、干擾數據或通過一定規則產生新的合成樣本。如SMOTE算法(Synthetic Minority Oversampling Technique即合成少數類過采樣技術)。
欠抽樣
(也叫下采樣、under-sample)即減少分類中多數樣本的數量,簡單方法就是隨機去掉一些多數類樣本減小規模,缺點丟失多數類樣本中的重要信息。
總體上,過抽樣和欠抽樣更適合大數據分布不均衡的情況。
2. 正負樣本的懲罰權重解決樣本不均衡
思想:對不同樣本數量的類別賦予不同的權重(一般分類中的小樣本量類別權重高,大樣本量類別權重低)。
很多算法都有基于類別參數的調整設置,以 SVM 為例,在class_weight:{dict, 'balanced'}中針對不同類別手動指定不同的權重。適用默認方法balanced,SVM將權重設置為與不同類別樣本數量呈反比的權重來做自動均衡處理,計算公式:n_samples / (n_classes * np.bincount(y))。
3. 組合/集成方法解決樣本不均衡
思想:在每次生成訓練集時使用所有分類中的小樣本量,同時從分類中的大樣本量中隨機抽取數據來與小樣本量合并構成訓練集,這樣反復多次得到很多訓練集和訓練模型。最后使用組合方法(比如投票、加權投票等)產生分類預測結果。
例如: 在數據集中的正、負的樣本分別為100和10000條,比例為1:100。此時可以將負樣本(類別中的大量樣本集)隨機分為100份(當然也可以分更多),每份100條數據;然后每次形成訓練集時使用所有的正樣本(100條)和隨機抽取的負樣本(100條)形成新的數據集。如此反復可以得到100個訓練集和對應的訓練模型。
來自:《Python數據分析與數據化運營》
總結
以上是生活随笔為你收集整理的python组合数据分类_Python解决数据样本类别分布不均衡问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python控制键盘_【python黑
- 下一篇: matlab 未定义mat2gray,m