一種改進c4.5決策樹算法下的不平衡數據抽樣方法
【技術領域】
[0001] 本發(fā)明屬于數據處理技術領域,涉及一種改進C4. 5決策樹算法下的不平衡數據 抽樣方法。
【背景技術】
[0002] 不平衡數據集是指在數據集中,某一類的樣本數量遠遠少于其它類的樣本數量, 其中數量占多數的類稱為多數類,而占少數的類稱為少數類。不平衡數據集的分類問題大 量存在于人們的現實生活和工業(yè)生產之中,如客戶流失預測、DNA微陣列數據分析、軟件缺 陷預測、垃圾郵件過濾、文本分類、醫(yī)療診斷等,在這些應用中,少數類分類精度往往更為重 要。因此,提高少數類的分類精度成為不平衡數據集中的一個研究重點。
[0003] 解決不平衡分類問題的策略可以分為兩大類:一類是從訓練集入手,通過改 變訓練集樣本分布,降低不平衡程度。常用的方法有隨機過抽樣、隨機欠抽樣、SM0TE、 Borderline-SMOTE、進化算法、基于聚類的過抽樣算法(Under-samplingbasedon clustering,SBC)、基于局部聚類的過抽樣方法等。但是欠抽樣容易導致重要樣本信息的丟 失,過抽樣會引起分類器過學習的問題。另一類是從學習算法入手,根據算法在解決不平衡 問題時的缺陷,適當地修改算法使之適應不平衡分類問題。常用策略有:代價敏感方法,在 傳統(tǒng)的分類算法的基礎上引人代價敏感因子,設計出代價敏感的分類算法,如代價敏感決 策樹、代價敏感支持向量機等,這些算法的關鍵都在于誤分代價的確定,而在多數情況下, 真實的誤分代價很難被準確地估計。
【發(fā)明內容】
[0004] 有鑒于此,本發(fā)明的目的在于提供一種改進C4. 5決策樹算法下的不平衡數據抽 樣方法,能夠有針對性地進行過抽樣和欠抽樣處理,提高少數類和數據集整體的分類性能。
[0005] 為達到上述目的,本發(fā)明提供如下技術方案:
[0006] -種改進C4. 5決策樹算法下的不平衡數據抽樣方法,包括以下步驟:
[0007] 1)根據訓練集中各類樣本的數量初始化各個樣本的權重,作為該樣本的誤分權 重;設迭代總次數為T,從1到T每輪迭代訓練依次完成步驟2)~3);
[0008] 2)利用改進的C4. 5決策樹算法對訓練集進行學習,得到一套規(guī)則;
[0009] 3)根據步驟2)所得規(guī)則修改訓練集各個樣本的權重,分類錯誤的樣本權重增大, 分類正確的樣本權重減小,且變化幅度與其原始權重成正比;
[0010] 4)設定過抽樣率,并根據樣本權重找出位于少數類邊界區(qū)域的樣本,利用SMOTE 算法對此區(qū)域的樣本進行過抽樣,并將所有的少數類樣本及過抽樣所得樣本添加到 NewData數據集中;
[0011] 5)設定欠抽樣率,按照樣本權重對多數類進行欠抽樣,使位于多數類中心區(qū)域的 樣本更容易被選中,將選中的樣本添加到NewData數據集中;
[0012] 6)使用決策樹算法對抽樣得到的數據集NewData進行訓練,得到規(guī)則并對測試集 進行分類處理。
[0013] 進一步,在步驟1)中,所述初始化各個樣本的權重具體包括:設多數類樣本數量 為m,少數類樣本數量為n,則所有多數類樣本的權重為l/2m,少數類樣本的權重為l/2n,這 樣既體現了多數類樣本與少數類樣本之間的差異,又保證了所有樣本權重和為1。
[0014] 進一步,在步驟2)中,改進的C4. 5決策樹算法的構建要點如下:
[0015] a)分裂屬性的選擇:分裂標準需要兼顧屬性信息增益率和誤分樣本權重。設S表 示樣本集合,屬性4將當前樣本集合分為v個不相交的子集{SuS2, ...,Sv},則選擇標準的 計算公式為:f(S,Ai) =GainRatio(S,Ai)XReduMc(S,Ai),選擇使f取最大值的屬性作為分 裂屬性;
[0016] GainRatio(S,AJ為以Ajt為分裂屬性時的信息增益率,值越大說明屬性的 分類性能越好,其計算公式為:
其中Gain(S,AJ= I(S)-I(S,Ax)
I(S)表示分裂前S的信息熵, I 表示按屬性Ai分裂之后各子集的信息熵加權和,計算公式為:
[0017]
,是S中樣本屬于類別i的概率,C是類別數量;
[0018] ReduMc(S,AJ為以Ai作為分裂屬性時的誤分權重減少量,其計算公式為:
^中Me⑶為分裂前的誤分權重,設S中有p個少數 ι=1 類樣本和η個多數類樣本,記p個少數類樣本的權重和為pw,η個多數類樣本的權重和為nw,貝Me(S) =Min(pw,nw),乞祕'('0為ν個子集的誤分權重和;
[0019] b)分裂點的選擇:若分裂屬性為離散型,直接將各個離散值作為當前節(jié)點的分 支;若分裂屬性為連續(xù)型,首先將樣本中分裂屬性的所有取值進行排序,并將相鄰值的平均 值作為候選分裂點,其次計算各個候選分裂點分裂的f值,f值最大的候選分裂點作為分裂 點,將當前節(jié)點分裂為兩顆子樹;
[0020] c)葉子節(jié)點類標記的確定:當一個分類節(jié)點中所有樣本的類型標記都相同或者 樣本數量小于給定值時,將當前節(jié)點標記為葉子節(jié)點;如果所有樣本的類型相同,那么直接 將當前節(jié)點的類型標記為該類型;如果樣本數量少于給定的數量,計算各類樣本的權重總 和,設當前節(jié)點包含P個少數類樣本和η個多數類樣本,p個少數類樣本權重記為pw,η個多 數類樣本權重記為nw,若pw>nw,則將當前節(jié)點的類型標記為少數類,否則標記為多數類;
[0021] d)決策樹的剪枝:以悲觀剪枝算法PEP為基礎,對其進行改進使其能夠適應不平 衡數據;在PEP算法中認為如果:
[0022]e'⑴彡e'(Tt) +Se (e'(Tt))成立,則凡應被剪裁,其中
e(t)為節(jié)點t處誤差,i為覆蓋Tt的葉子,Nt為子樹Tt的葉子 數,n(t)為在節(jié)點t處訓樣本的數目;
[0023] 對此算法進行改進之處在于少數類的計數方式,使少數類樣本和多數類樣本具有 同等的重要性,設訓練樣本中具有m個多數類樣本和η個少數類樣本,節(jié)點t處包含p個 少數類樣本和q個多數類樣本,pw為節(jié)點t處p個少數類樣本權重和,nw為節(jié)點t處q個 多數類樣本權重和,則e(t)的計算公式為
n(t)的計算公式為:
[0024] 進一步,在步驟3)中,樣本權重的修改公式為
, 其中,Dt⑴表示第t輪迭代中第i個樣本的權重,^表示訓練集中第i個樣本,yie{-1,1} 表示第i個樣本的類別標識,h(Xl)e{-l,l}表示第i個樣本的預測分類,權重調整因子~ 計算公式為:
r=XDt⑴(h(Xl) #yi),β⑴為代價調整函數,定義為:
Zt為歸一化參數,定義為
用于確 保更新后的權重取值在[0, 1]區(qū)間內。
[0025] 進一步,在步驟4)中,具體包括:
[0026] 首先設定少數類邊界區(qū)域的權重閾值,樣本權重大于閾值的少數類樣本即位于少 數類的邊界區(qū)域;然后利用SMOTE算法對邊界區(qū)域的樣本進行過抽樣處理,生成新的合成 樣本;最后將所有的少數類樣本及合成樣本添加到數據集NewData中。
[0027] 進一步,在步驟5)中,具體包括:
[0028] 首先對所有多數類樣本的權重求倒數,這是因為樣本權重越小,說明其所處的區(qū) 域越趨于中心;然后按照權重大小對所有的多數類樣本進行欠抽樣,使權重大的樣本被選 中的概率大;最后將所有選中的多數類樣本添加到數據集NewData中。
[0029] 本發(fā)明的有益效果在于:
[0030] 1)本發(fā)明引入了誤分權重來作為決策樹分裂標準的一部分,與傳統(tǒng)的代價敏感策 略人為去設定代價矩陣不同,這點充分考慮了現實情況,因為在現實生活中,真實的誤分代 價是很難估計得到。而且在每輪決策樹訓練完成后會對樣本權重進行修改,可以更好地體 現出樣本分布的情況,而代價矩陣是不會發(fā)生變化的,它是把同一類的所有樣本進行同等 處理,沒有體現出樣本間的差異情況。
[0031] 2)本發(fā)明根據樣本所處區(qū)域進行有針對性地抽樣處理,充分利用了樣本的分布信 息,使抽樣得到的樣本更具有代表性,從而避免過擬合和有用信息丟失的現象,提高了分類 器對不平衡數據的分類性能。
【附圖說明】
[0032] 為了使本發(fā)明的目的、技術方案和有益效果更加清楚,本發(fā)明提供如下附圖進行 說明:
[0033] 圖1為改進的C4. 5決策樹建立過程示意圖;
[0034] 圖2為改進C4. 5決策樹算法下的不平衡數據抽樣方法流程圖。
【具體實施方式】
[0035] 下面將結合附圖,對本發(fā)明的優(yōu)選實施例進行詳細的描述。
[0036] 圖2為改進C4. 5決策樹算法下的不平衡數據抽樣方法流程圖,如圖所示,本方法 具體包括以下步驟:
[0037] 1)初始化數據集的各樣本權重及迭代次數T。設多數類樣本數量為m,少數類樣本 數量為n,則所有多數類樣本的權重為l/2m,少數類樣本的權重為l/2n。
[0038] 2)使用圖1所示的改進的C4. 5決策樹算法對數據集進行訓練,算法的個核心點在 于分裂屬性及分裂點的確定,葉子節(jié)點的類標記,剪枝,具體計算方式描述如下:
[0039] (1)分裂屬性的選擇:分裂標準需要兼顧屬性的信息增益率和誤分權重。設S表 示樣本集合,屬性4將當前樣本幾個分為v個不相交的子集{SuS2, ...,Sv},則選擇標準的 計算公式為:f(S,Ai) =GainRatio(S,Ai)XReduMc(S,Ai),選擇使f取最大值的屬性作為分 裂屬性。
[0040]GainRatio(S,AJ為以Ajt為分裂屬性時的信息增益率,值越大說明屬性的 分類性能越好,其計算公式為:
,,其中Gain(S,AJ= I⑶-ΙΚΑΙ
,I(S)表示分裂前S的信息熵, I表示按屬性Ai分裂之后各子集的信息熵加權和,計算公式為:
iS中樣本屬于類別i的概率,C是類別數量。
[0041]ReduMc(S,AJ為以Ai作為分裂屬性時的誤分權重減少量,其計算公式為: 實中Me(S)為分裂前的誤分權重,設S中有p個少數類
1-1 樣本和η個多數類樣本,記p個少數類樣本的權重和為pw,η個多數類樣本的權重和為nw, 則:
[0042]
為v個子集的誤分權重和。
[0043](2)分裂點的選擇:若分裂屬性為離散型,直接將各個離散值作為當前節(jié)點的分 支;若分裂屬性為連續(xù)型,首先將樣本中分裂屬性的所有取值進行排序,并將相鄰值的平均 值作為候選分裂點,其次計算各個候選分裂點分裂的f值,f值最大的候選分裂點作為分裂 點,將當前節(jié)點分裂為兩顆子樹。
[0044] (3)葉子節(jié)點類標記的確定:當一個分類節(jié)點中所有樣本的類型標記都相同或者 樣本數量小于給定值時,將當前節(jié)點標記為葉子節(jié)點。如果所有樣本的類型相同