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