機器學習中類別不平衡問題的解決方案

類別不平衡問題

  • 解決方案
    • 簡單方法
      • 收集數據
      • 調整權重
      • 閾值移動
    • 數據層面
      • 欠采樣
      • 過采樣
      • 采樣方法的優劣
    • 算法層面
      • 代價敏感
      • 集成學習:EasyEnsemble
    • 總結

類別不平衡(class-imbalance)就是指分類任務中不同類別的訓練樣例數目差別很大的情況

解決方案

當問題的指標是ROC或者AUC等對類別不平衡不敏感的指標,那么此時不處理和處理的差別沒那么大;但是對于召回率為評判指標的模型則需要進行處理

簡單方法

收集數據

針對少量樣本數據,可以盡可能去擴大這些少量樣本的數據集,或者盡可能去增加他們特有的特征來豐富數據的多樣性

調整權重

可以簡單的設置損失函數的權重,更多的關注少數類。在python的scikit-learn中我們可以使用class_weight參數來設置權重。為了權衡不同類型錯誤所造成的不同損失,可為錯誤賦予“非均等代價”

閾值移動

直接基于原始訓練集進行學習,但在用訓練好的分類器進行預測時,將原本默認為0.5的閾值調整為 正例數 正例數 + 負例數 \frac{正例數}{正例數+負例數} 正例數+負例數正例數?

如果正負樣本數量相同,對于正樣本預測為 y y y,那么分類決策規則為:
y 1 ? y > 1 \frac{y}{1-y}>1 1?yy?>1
預測為正例,當正負樣本數量不同時,分別為 m + , m ? m^{+},m^{-} m+,m?,則觀測幾率為 m + m ? \frac{m^{+}}{m^{-}} m?m+?,那么當分類器預測幾率大于觀測幾率即為正例:
y 1 ? y > m + m ? \frac{y}{1-y}>\frac{m^{+}}{m^{-}} 1?yy?>m?m+?
可以變化為以下形式:
y ′ 1 ? y ′ = y 1 ? y ? m ? m + > 1 \frac{y'}{1-y'}=\frac{y}{1-y}\cdot \frac{m^{-}}{m^{+}}>1 1?yy?=1?yy??m+m??>1
也可以稱為“再縮放”

數據層面

欠采樣

對訓練集中多數類樣本進行“欠采樣”(undersampling),即去除一些多數類中的樣本使得正例、反例數目接近,然后再進行學習。

  • 隨機欠采樣
    隨機欠采樣顧名思義即從多數類中隨機選擇一些樣本組成樣本集 。然后將新樣本集與少數類樣本集合并。
  • Edited Nearest Neighbor (ENN)
    遍歷多數類的樣本,如果他的大部分k近鄰樣本都跟他自己本身的類別不一樣,我們就將他刪除;

過采樣

對訓練集里的少數類進行“過采樣”(oversampling),即增加一些少數類樣本使得正、反例數目接近,然后再進行學習。

  • 隨機過采樣
    隨機過采樣是在少數類S中隨機選擇一些樣本,然后通過復制所選擇的樣本生成樣本集E,將它們添加到S中來擴大原始數據集從而得到新的少數類集合S+E。
  • SMOTE(Synthetic Minority Oversampling,合成少數類過采樣)
    SMOTE是對隨機過采樣方法的一個改進算法,通過對少數類樣本進行插值來產生更多的少數類樣本。基本思想是針對每個少數類樣本,從它的k近鄰中隨機選擇一個樣本 (該樣本也是少數類中的一個),然后在兩者之間的連線上隨機選擇一點作為新合成的少數類樣本。

采樣方法的優劣

  • 優點:
  1. 平衡類別分布,在重采樣后的數據集上訓練可以提高某些分類器的分類性能。
  2. 欠采樣方法減小數據集規模,可降低模型訓練時的計算開銷。
  • 缺點:
  1. 采樣過程計算效率低下,通常使用基于距離的鄰域關系(k近鄰)來提取數據分布信息,計算開銷大。
  2. 易被噪聲影響,最近鄰算法容易被噪聲干擾,可能無法得到準確的分布信息,從而導致不合理的重采樣策略。
  3. 過采樣方法生成過多數據,會進一步增大訓練集的樣本數量,增大計算開銷,并可能導致過擬合。
  4. 不適用于無法計算距離的復雜數據集,如用戶ID。

算法層面

代價敏感

可用于多分類問題,代價敏感學習方法的核心要素是代價矩陣,如表所示。其中 c o s t i j cost_{ij} costij?表示將第 i i i 類樣本預測為第 j j j 類樣本的代價。若將第0類判別為第1類所造成的損失更大,則 c o s t 01 > c o s t 10 cost_{01}>cost_{10} cost01?>cost10?;損失程度相差越大, c o s t 01 , c o s t 10 cost_{01},cost_{10} cost01?,cost10?的值差別越大。當
c o s t 01 = c o s t 10 cost_{01}=cost_{10} cost01?=cost10?時為代價不敏感的學習問題。
圖1

集成學習:EasyEnsemble

在這里插入圖片描述
1:數據中,少數標簽的為P,多數標簽的N,
為P與N在數量上的比例,T為需要采集的subset份數,也可以說是設置的基分類器的個數。
為訓練基分類器i (默認使用AdaBoost,也可以設置為其他,例如XGBoost)的訓練循環次數(iteration)。

2-5: 根據少數標簽的為P的數量,對多數標簽的N進行隨機采樣產生
,使得采樣出來的數量和P的數量一樣。

6: 把
和P結合起來,然后給基分類器i學習。這里的公式只單個基分類器的訓練過程。論文里用的基分類器是AdaBoost,而AdaBoost是由N個弱分類器組成的,j就是表示Adaboost基分類器里的第j個弱分類器.

7: 重復采樣,訓練T個這樣的基分類器。

8: 對T個基分類器進行ensemble。而這里并非直接取T個基分類的結果(0,1)進行投票,而是把n個基分類器的預測概率進行相加,最后再通過sign函數來決定分類,sgn函數就是sign函數,sgn就是把結果轉成兩個類,小于0返回-1,否則返回1。.

總結

  • 通過某種方法使得不同類別的樣本對于模型學習中的Loss(或梯度)貢獻是比較均衡的

    • 樣本層面
      1. 欠采樣、過采樣
      2. 數據增強:從原始數據加工出更多數據的表示,提高原數據的數量及質量,包括幾何操作、顏色變化、隨機裁剪、添加噪聲
    • 損失函數層面:代價敏感學習(cost-sensitive),為不同的分類錯誤給予不同懲罰力度(權重)
      1. class weight:為不同類別的樣本提供不同的權重(少數類有更高的權重),從而模型可以平衡各類別的學習
      2. Focal loss的核心思想是在交叉熵損失函數(CE)的基礎上增加了類別的不同權重以及困難(高損失)樣本的權重
      3. OHEM(Online Hard Example Mining)算法的核心是選擇一些hard examples(多樣性和高損失的樣本)作為訓練的樣本,針對性地改善模型學習效果
    • 模型層面:
      1. 選擇對類別不均衡不敏感的模型:采樣+集成樹模型(樹模型按照特征增益遞歸地劃分數據
      2. 采樣+集成學習:通過重復組合少數類樣本與抽樣的同樣數量的多數類樣本,訓練若干的分類器進行集成學習
    • 決策及評估指標
      1. 分類閾值移動,以調整模型對于不同類別偏好的情況
      2. 采用AUC、AUPRC(更優)評估模型表現。AUC的含義是ROC曲線的面積;AUC對樣本的正負樣本比例情況是不敏感

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716351.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716351.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智能分析網關V4電瓶車檢測與煙火算法,全面提升小區消防安全水平

2024年2月23日,南京市某小區因電瓶車停放處起火引發火災事故,造成巨大人員傷亡和損失。根據國家消防救援局的統計,2023年全國共接報電動自行車火災2.1萬起。電瓶車火災事故頻發,這不得不引起我們的重視和思考,尤其是在…

阿里云A10推理qwen

硬件配置 vCPU:32核 內存:188 GiB 寬帶:5 Mbps GPU:NVIDIA A10 24Gcuda 安裝 wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-rhel7-12-1-local-12.1.0_530.30.02-1.x86_64.rpm s…

ZDH-大數據采集-支持KETTLE任務

目錄 項目源碼 預覽地址 支持KETTLE介紹 新增KETTLE任務 配置調度KETTLE 重要說明 感謝支持 項目源碼 zdh_web:GitHub - zhaoyachao/zdh_web: 大數據采集,抽取平臺 預覽地址 后臺管理-登陸 用戶名:zyc 密碼:123456 支持KETTLE介紹 當前平臺不…

lv20 QT進程線程編程

知識點&#xff1a;啟動進程 &#xff0c;線程 &#xff0c;線程同步互斥 1 啟動進程 應用場景&#xff1a;通常在qt中打開另一個程序 process模板 QString program “/bin/ls"; QStringList arguments; arguments << "-l" << “-a";QPro…

手撕Java集合之簡易版Deque(LinkedList)

在目前&#xff0c;許多互聯網公司的面試已經要求能手撕集合源碼&#xff0c;集合源碼本身算是源碼里比較簡單的一部分&#xff0c;但是要在面試極短的10來分鐘內快速寫出一個簡易版的源碼還是比較麻煩的&#xff0c;很容易出現各種小問題。所以在平時就要注重這方面的聯系。 以…

倉儲自動化新解:托盤四向穿梭車駛入智能工廠 智能倉儲與產線緊密結合

目前&#xff0c;由于對倉庫存儲量的要求越來越高&#xff0c;揀選、輸送以及出入庫頻率等要求也越來越高&#xff0c;對此&#xff0c;在物流倉儲領域&#xff0c;自動化與智能化控制技術得以快速發展&#xff0c;貨架穿梭車在自動庫領域的應用越來越廣泛。現階段&#xff0c;…

linux之進程理解(1)

目錄 1. 馮諾依曼體系結構 2. 操作系統(OS) 2.1 概念 2.2 設計OS的目的 2.3 定位 2.4 理解管理 3. 系統調用和庫函數概念 4. 補充 1. 馮諾依曼體系結構 我們常見的計算機&#xff0c;如筆記本。我們不常見的計算機&#xff0c;如服務器&#xff0c;大部分都遵守馮諾依曼體…

chrome選項頁面options page配置

options 頁面用以定制Chrome瀏覽器擴展程序的運行參數。 通過Chrome 瀏覽器的“工具 ->更多工具->擴展程序”&#xff0c;打開chrome://extensions頁面&#xff0c;可以看到有的Google Chrome擴展程序有“選項Options”鏈接&#xff0c;如下圖所示。單擊“選項Options”…

制作鏡像與配置推送阿里云倉庫

一、制作jdk鏡像 1.1、Alpine linux簡介 Alpine Linux是一個輕量級的Linux發行版&#xff0c;專注于安全、簡潔和高效。它采用了musl libc和BusyBox&#xff0c;使得系統資源占用較少&#xff0c;啟動速度較快。 Alpine Linux也提供了一個簡單的包管理工具APK&#xff0c;(注…

【計算機網絡_應用層】協議定制序列化反序列化

文章目錄 1. TCP協議的通信流程2. 應用層協議定制3. 通過“網絡計算器”的實現來實現應用層協議定制和序列化3.1 protocol3.2 序列化和反序列化3.2.1 手寫序列化和反序列化3.2.2 使用Json庫 3.3 數據包讀取3.4 服務端設計3.5 最后的源代碼和運行結果 1. TCP協議的通信流程 在之…

深入分析Android運行時環境ART:原理、特點與優化策略

摘要 隨著移動互聯網的快速發展&#xff0c;智能手機的性能和功能日益強大&#xff0c;其中Android操作系統因其開放性和靈活性而占據主導地位。Android運行時環境&#xff08;ART&#xff09;作為執行應用程序代碼的關鍵組件&#xff0c;在系統性能和用戶體驗方面起著至關重要…

Vue+SpringBoot打造高校學生管理系統

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 學生管理模塊2.2 學院課程模塊2.3 學生選課模塊2.4 成績管理模塊 三、系統設計3.1 用例設計3.2 數據庫設計3.2.1 學生表3.2.2 學院課程表3.2.3 學生選課表3.2.4 學生成績表 四、系統展示五、核心代碼5.1 查詢課程5.2 新…

DFS剪枝

剪枝 將搜索過程中一些不必要的部分剔除掉&#xff0c;因為搜索過程構成了一棵樹&#xff0c;剔除不必要的部分&#xff0c;就像是在樹上將樹枝剪掉&#xff0c;故名剪枝。 剪枝是回溯法中的一種重要優化手段&#xff0c;方法往往先寫一個暴力搜索&#xff0c;然后找到某些特…

超詳細紅黑樹的模擬實現

前言 有人說設計出AVL樹的的人是個大牛&#xff0c;那寫紅黑樹&#xff08;RBTree&#xff09;的人就是天才&#xff01; 上一篇文章&#xff0c;我們已經學習了AVL樹&#xff0c;牛牛個人認為AVL樹已經夠優秀了&#xff0c;那讓我們一起探究一下&#xff0c;為什么紅黑樹比AV…

鏈表類型題目

文章目錄 簡介鏈表的常用技巧兩數相加原理代碼代碼|| 兩兩交換鏈表中的節點代碼原理 重排鏈表(重要)原理代碼 合并 K 個升序鏈表代碼遞歸代碼 K 個一組翻轉鏈表原理代碼 簡介 大家好,這里是jiantaoyab,這篇文章給大家帶來的是鏈表相關的題目練習和解析,希望大家能相互討論進步 …

[線代]自用大綱

部分內容整理自張宇和網絡 序 題型分布&#xff1a; 題型單題分值題目數量總分值選擇題5315填空題515解答題12112 *一道大題可能用到六部分所有知識 矩陣 性質 k k k倍和乘積行列式 ∣ k A ∣ k n ∣ A ∣ |kA|k^n|A| ∣kA∣kn∣A∣ ∣ A B ∣ ≠ ∣ A ∣ ∣ B ∣ |AB|≠…

DDE圖像增強

DDE&#xff08;Detail and Darkness Enhancement&#xff0c;細節和暗部增強&#xff09;是一種用于增強圖像細節和暗部區域的方法。其原理可以簡要概括如下&#xff1a; 細節增強&#xff1a;在圖像中突出顯示細節信息&#xff0c;使得圖像更加清晰和具有視覺沖擊力。這可以通…

藍橋杯刷題--python-15-二分(進階)

503. 借教室 - AcWing題庫 n,mmap(int,input().split()) class_list(map(int,input().split())) class_[0]class_ d[0] s[0] t[0] for _ in range(m): dj,sj,tjmap(int,input().split()) d.append(dj) s.append(sj) t.append(tj) def check(k): b[0]*(n2) …

如何解決微服務的數據一致性分發問題?

介紹 系統架構微服務化以后,根據微服務獨立數據源的思想,每個微服務一般具有各自獨立的數據源,但是不同微服務之間難免需要通過數據分發來共享一些數據,這個就是微服務的數據分發問題。Netflix/Airbnb等一線互聯網公司的實踐[參考附錄1/2/3]表明,數據一致性分發能力,是構…

在嵌入式設備中用多項式快速計算三角函數和方根

慣性傳感器的傾角計算要用到三角函數. 在 MCS-51, Cortex M0, M3 之類的芯片上編程時, 能使用的資源是非常有限, 通常只有兩位數KB的Flash, 個位數KB的RAM. 如果要使用三角函數和開方就要引入 math.h, 會消耗掉10KB以上的Flash空間. 在很多情況下受硬件資源限制無法使用 math.…