提高分類準確率的技術——組合分類

組合分類方法簡介

基本思想:組合分類把k個學習得到的模型(或基分類器)M1,M2,···,Mk組合在一起,旨在創建一個改進的複合分類器模型M*。使用給定的數據集D創建k個訓練集D1,D2,···,Dk,其中Di用於創建分類器Mi。現在給定一個待分類的新數據元組,每個基分類器通過返回類預測進行投票。組合分類器基於基分類器的投票返回類預測。
這裏寫圖片描述
目前常用的組合分類器有:裝袋、提升和隨機森林。下面就對這三種分類器依次作介紹。

裝袋(bagging)

算法:裝袋。裝袋算法——爲學習方案創建組合分類模型,其中每個模型給出等權重預測。

輸入

  • D:d個訓練元組的集合
  • k:組合分類器中的模型數
  • 一種學習方案(例如,決策樹算法、後向傳播等)

輸出:組合分類器——複合模型M

方法

  1. for i = 1 to k do
  2. 通過對D 有放回抽樣,創建自助樣本Di
  3. 使用Di 和學習方法導出模型Mi
  4. endfor

使用組合分類器對元組x分類:讓k個模型都對x分類並返回多數表決

注意:這裏的每個基分類器具有相同的投票權重

提升(boosting)

在提升方法中,權重賦予每個訓練元組。迭代地學習k 個分類器。學習得到分類器Mi 之後,更新權重,使得其後的分類器Mi+1 ”更關注“Mi 誤分類的訓練元組。最終提升的分類器M 組合每個個體分類器的表決,其中每個分類器投票的權重是其準確率的函數。
Adaboost(Adaptive Boosting)是一種流行的提升算法。
算法:Adaboost.一種提升算法——創建分類器的組合。每個給出一個加權投票。
輸入

  • D:類標記的訓練元組集。
  • k:輪數(每輪產生一個分類器)。
  • 一種分類學習方案。

輸出:一個複合模型。
方法

  1. 將D中每個元組的權重初始化爲1/d
  2. for i = 1 to do
  3. 根據元組的權重從D 中又放回抽樣,得到Di
  4. 使用訓練集Di 導出模型Mi
  5. 計算Mi 的錯誤率error(Mi)=dj=1wi×err(Xj) ,其中,err(Xj)={0Xj1Xjwi 表示元組的權重值
  6. if error(Mi) > 0.5 then //這一步的作用是爲了避免所產生的分類器效果太差
  7. 轉步驟3重試
  8. endif
  9. for Di 的每個被正確分類的元組 do // 這一步是用來更新被正確分類的元組的權重值
  10. 元組的權重wi=wi×error(Mi)1error(Mi)
  11. 規範化每個元組的權重 //將所有元組的權重值進行規範化,規範化後的結果,會發現被正確分類的元組權重降低,而被誤分類元組的權重值上升
  12. endfor

使用組合分類器對元組x分類:

  1. 將每個類的權重初始化爲0
  2. for i = 1 to k do
  3. wi=log1error(Mi)error(Mi) //獲得基分類器的權重值
  4. c=Mi(x) //獲得基分類器的分類結果
  5. wi 加到類c 的權重 //將不同類的基分類器權重進行求和
  6. endfor
  7. 返回具有最大權重的類

需要注意的是,這個方法存在結果複合模型對數據過分擬合的危險。

隨機森林

隨機森林可以使用裝袋隨機屬性選擇結合起來構建。

算法:Forest-RI.一種隨機森林算法
輸入

  • D :類標記的訓練元組集
  • k :分類器中的模型樹
  • F :節點劃分時,候選屬性的個數
  • 一種屬性選擇算法

輸出:一個隨機森林
方法

  1. for i=1 to k do
  2. 通過對D 有放回抽樣,創建自助樣本Di
  3. 從自主樣本Di 的屬性集合中,隨機選擇F 個屬性作爲節點劃分時的候選屬性
  4. 根據屬性選擇算法,選擇節點的分裂屬性,對Di 進行一次分裂
  5. 再次執行第3步,直到被選擇的屬性集都在之前的分裂中使用過,即無法再進行決策樹的構建,從而得到最終的決策樹模型Mi
  6. endfor

隨機森林對於屬性個數的選擇很敏感,通常選取log2d+1 個屬性。隨機森林具有更快的分類速度,適合大型數據庫。

類不平衡數據

類不平衡問題與代價敏感學習密切相關。傳統的分類方法,將假正例和假負例的代價視爲相等,所以不適合類平衡數據分類。
這裏介紹四種通用的解決方案:(1)過抽樣;(2)欠抽樣;(3)閾值移動;(4)組合技術。第四種技術,前面已經做過介紹,下面主要對前三種技術做一下說明。注意,這裏的類不平衡解決方案,都是隻假定兩種類別,對於多類的不平衡數據,目前還沒有很好的解決措施:

過抽樣

過抽樣就是通過對訓練集中的正元組進行重複採樣,直到結果訓練集包含相同個數的正元組和負元組。

欠抽樣

欠抽樣是通過對訓練集中的多數類隨機進行刪除元組,直到結果訓練集包含相同個數的正元組和負元組。

閾值移動

這種方法適用於對於給定輸入元組返回一個連續輸出值得分類器。即對於輸入元組X ,這種分類器返回一個映射f(X)[0,1] 作爲輸出。該方法不出操控訓練元組,而是基於輸出值返回分類決策。
對於某個閾值t ,滿足f(X)t 的元組X 被視爲正的,而其他元組被視爲負的。
閾值移動就是通過改變t 的值,使得稀有類的元組更容易分類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章