組合分類方法簡介
基本思想:組合分類把k個學習得到的模型(或基分類器)M1,M2,···,Mk組合在一起,旨在創建一個改進的複合分類器模型M*。使用給定的數據集D創建k個訓練集D1,D2,···,Dk,其中Di用於創建分類器Mi。現在給定一個待分類的新數據元組,每個基分類器通過返回類預測進行投票。組合分類器基於基分類器的投票返回類預測。
目前常用的組合分類器有:裝袋、提升和隨機森林。下面就對這三種分類器依次作介紹。
裝袋(bagging)
算法:裝袋。裝袋算法——爲學習方案創建組合分類模型,其中每個模型給出等權重預測。
輸入:
- D:d個訓練元組的集合
- k:組合分類器中的模型數
- 一種學習方案(例如,決策樹算法、後向傳播等)
輸出:組合分類器——複合模型
方法:
- for i = 1 to k do
- 通過對
D 有放回抽樣,創建自助樣本Di - 使用
Di 和學習方法導出模型Mi - endfor
使用組合分類器對元組x分類:讓k個模型都對x分類並返回多數表決
注意:這裏的每個基分類器具有相同的投票權重
提升(boosting)
在提升方法中,權重賦予每個訓練元組。迭代地學習
Adaboost(Adaptive Boosting)是一種流行的提升算法。
算法:Adaboost.一種提升算法——創建分類器的組合。每個給出一個加權投票。
輸入:
- D:類標記的訓練元組集。
- k:輪數(每輪產生一個分類器)。
- 一種分類學習方案。
輸出:一個複合模型。
方法:
- 將D中每個元組的權重初始化爲
1/d - for
i = 1 to do - 根據元組的權重從
D 中又放回抽樣,得到Di - 使用訓練集
Di 導出模型Mi - 計算
Mi 的錯誤率error(Mi)=∑dj=1wi×err(Xj) ,其中,err(Xj)={0,Xj被正確分類1,Xj被誤分類 ,wi 表示元組的權重值 - if
error(Mi) > 0.5 then//這一步的作用是爲了避免所產生的分類器效果太差
- 轉步驟3重試
- endif
- for
Di 的每個被正確分類的元組 do// 這一步是用來更新被正確分類的元組的權重值
- 元組的權重
wi=wi×error(Mi)1−error(Mi) - 規範化每個元組的權重
//將所有元組的權重值進行規範化,規範化後的結果,會發現被正確分類的元組權重降低,而被誤分類元組的權重值上升
- endfor
使用組合分類器對元組x分類:
- 將每個類的權重初始化爲0
- for
i = 1 tok do wi=log1−error(Mi)error(Mi) //獲得基分類器的權重值
c=Mi(x) //獲得基分類器的分類結果
- 將
wi 加到類c 的權重//將不同類的基分類器權重進行求和
- endfor
- 返回具有最大權重的類
需要注意的是,這個方法存在結果複合模型對數據過分擬合的危險。
隨機森林
隨機森林可以使用裝袋與隨機屬性選擇結合起來構建。
算法:Forest-RI.一種隨機森林算法
輸入:
D :類標記的訓練元組集k :分類器中的模型樹F :節點劃分時,候選屬性的個數- 一種屬性選擇算法
輸出:一個隨機森林
方法:
- for
i=1 tok do - 通過對
D 有放回抽樣,創建自助樣本Di - 從自主樣本
Di 的屬性集合中,隨機選擇F 個屬性作爲節點劃分時的候選屬性 - 根據屬性選擇算法,選擇節點的分裂屬性,對
Di 進行一次分裂 - 再次執行第3步,直到被選擇的屬性集都在之前的分裂中使用過,即無法再進行決策樹的構建,從而得到最終的決策樹模型
Mi - endfor
隨機森林對於屬性個數的選擇很敏感,通常選取
類不平衡數據
類不平衡問題與代價敏感學習密切相關。傳統的分類方法,將假正例和假負例的代價視爲相等,所以不適合類平衡數據分類。
這裏介紹四種通用的解決方案:(1)過抽樣;(2)欠抽樣;(3)閾值移動;(4)組合技術。第四種技術,前面已經做過介紹,下面主要對前三種技術做一下說明。注意,這裏的類不平衡解決方案,都是隻假定兩種類別,對於多類的不平衡數據,目前還沒有很好的解決措施:
過抽樣
過抽樣就是通過對訓練集中的正元組進行重複採樣,直到結果訓練集包含相同個數的正元組和負元組。
欠抽樣
欠抽樣是通過對訓練集中的多數類隨機進行刪除元組,直到結果訓練集包含相同個數的正元組和負元組。
閾值移動
這種方法適用於對於給定輸入元組返回一個連續輸出值得分類器。即對於輸入元組
對於某個閾值
閾值移動就是通過改變