基于聚類和匈牙利算法的數(shù)據(jù)分類方法
【專利摘要】本發(fā)明提供一種基于聚類和匈牙利算法的數(shù)據(jù)分類方法,包括:讀取原始樣本集{&、x2...Xj;將原始樣本集{Xi、X2...XJ中所有樣本視為無分類樣本,對原始樣本集中的所有樣本采用聚類方法進(jìn)行首次聚類,得到L+C個(gè)類別;將L個(gè)已知類別通過匈牙利算法指派到L+C個(gè)類別中的L個(gè)類別,將首次聚類得到的類別與已知類別對應(yīng)上;將已知分類樣本子集{XpX2...XJ中各個(gè)樣本劃分到其歸屬的類中,然后保持已知分類樣本子集{XpX2...XJ中各個(gè)樣本所屬類不變,再次聚類,使用目標(biāo)函數(shù)迭代未標(biāo)注的樣本,使未標(biāo)注的樣本分到某個(gè)類別或視為背景噪音。能夠準(zhǔn)確簡單的對數(shù)據(jù)進(jìn)行分類,且分類結(jié)果精確。
【專利說明】基于聚類和匈牙利算法的數(shù)據(jù)分類方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于數(shù)據(jù)分類【技術(shù)領(lǐng)域】,具體涉及一種基于聚類和匈牙利算法的數(shù)據(jù)分類 方法。
【背景技術(shù)】
[0002] 對樣本分析時(shí),經(jīng)常是部分樣本的類別已知,已知類別的樣本并不很多,而且,可 能有背景噪音不屬于任何類別。
[0003] 因此,對于該類問題,如果使用分類算法,不能生成可信賴的分類器,S卩:產(chǎn)生的分 類器可能偏差較大,又不能把無未標(biāo)注的類分出來;如果用聚類算法,又忽視了已標(biāo)注樣本 的參考價(jià)值;而且,聚類算法也無法解決對背景噪音的處理分類問題。比較接近的方法為 部分半監(jiān)督學(xué)習(xí)算法,目前主要有兩種:第一種,從已標(biāo)注和未標(biāo)注樣本中進(jìn)行學(xué)習(xí);第二 種,從正例和未標(biāo)注樣本中學(xué)習(xí)。對于第一種,要求已標(biāo)注的類別全部有標(biāo)注樣本,局限性 較大。而對于第二種,是對正例與反例的二分類算法,無法解決部分類進(jìn)行了標(biāo)注、部分類 未標(biāo)注的情況;也不能解決有背景噪音的情況。
【發(fā)明內(nèi)容】
[0004] 針對現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提供一種基于聚類和匈牙利算法的數(shù)據(jù)分類方 法,能夠準(zhǔn)確簡單的對數(shù)據(jù)進(jìn)行分類,且分類結(jié)果精確。
[0005] 本發(fā)明采用的技術(shù)方案如下:
[0006] 本發(fā)明提供一種基于聚類和匈牙利算法的數(shù)據(jù)分類方法,包括以下步驟:
[0007] S1,讀取原始樣本集氏、X2. . . XN};
[0008] 原始樣本集{XpX2. . . XN}包括已知分類樣本子集{XpX2. . . Xn}和未知分類樣本子 集{Xn+1、Xn+2. . . XN};其中,已知分類樣本子集氏、X2. . . XJ中各個(gè)樣本所屬類別Yi分別為 Yp Y2. . . Yn ;已知分類樣本子集中已知類別個(gè)數(shù)為L ;
[0009] 未知分類樣本子集{Xn+1、Xn+2. . . ΧΝ}中未知類別個(gè)數(shù)為C ;
[0010] S2,將原始樣本集{ΧρΧ2... ΧΝ}中所有樣本視為無分類樣本,對原始樣本集中的所 有樣本采用聚類方法進(jìn)行首次聚類,得到L+C個(gè)類別;
[0011] S3,將L個(gè)已知類別通過匈牙利算法指派到L+C個(gè)類別中的L個(gè)類別,將首次聚類 得到的類別與已知類別對應(yīng)上;
[0012] S4,將已知分類樣本子集{XpXy . . XJ中各個(gè)樣本劃分到其歸屬的類中,然后保持 已知分類樣本子集{Xi、X2... XJ中各個(gè)樣本所屬類不變,再次聚類,使用目標(biāo)函數(shù)迭代未標(biāo) 注的樣本,使未標(biāo)注的樣本分到某個(gè)類別或視為背景噪音。
[0013] 優(yōu)選的,S2中,所述聚類方法為KMeans聚類方法或分層聚類方法。
[0014] 優(yōu)選的,S4中,再次聚類時(shí)所采用的聚類方法為KMeans聚類方法或分層聚類方 法。
[0015] 優(yōu)選的,S4中,使用目標(biāo)函數(shù)迭代未標(biāo)注的樣本,使未標(biāo)注的樣本分到某個(gè)類別或 視為背景噪音,具體為:
[0016] 使用目標(biāo)函數(shù)迭代未標(biāo)注的樣本,通過目標(biāo)函數(shù)是否達(dá)到極值識別背景噪音;當(dāng) 本次迭代結(jié)果與上次迭代結(jié)果不再發(fā)生變化時(shí),或目標(biāo)函數(shù)不再發(fā)生變化時(shí),結(jié)束分類。
[0017] 優(yōu)選的,所述目標(biāo)函數(shù)設(shè)定為:類間分散度*類內(nèi)聚合度*識別率。
[0018] 優(yōu)選的,所述類間分散度用間平均距離、類間均方距離、類間最小距離或類間最大 距離表示。
[0019] 優(yōu)選的,所述類內(nèi)聚合度用類內(nèi)平均距離、類內(nèi)均方距離或類內(nèi)最大距離表示。
[0020] 優(yōu)選的,所述識別率表達(dá)式為:類別個(gè)數(shù)/總樣本個(gè)數(shù)。
[0021] 本發(fā)明的有益效果如下:
[0022] 本發(fā)明提供一種基于聚類和匈牙利算法的數(shù)據(jù)分類方法,適用于以下情況:部分 樣本的分類已知,已知分類的樣本點(diǎn)不需很多,可以有部分未知分類即該類尚無標(biāo)注的樣 本點(diǎn),而且可以有背景噪音即噪音點(diǎn)不屬于任何類;能夠準(zhǔn)確簡單的對數(shù)據(jù)進(jìn)行分類,且分 類結(jié)果精確。
【專利附圖】
【附圖說明】
[0023] 圖1為本發(fā)明提供的基于聚類和匈牙利算法的數(shù)據(jù)分類方法流程示意圖;
[0024] 圖2為實(shí)施例二中原始樣本集顯示圖;
[0025] 圖3為實(shí)施例二中樣本期望分類顯示圖;
[0026] 圖4為實(shí)施例二中樣本實(shí)際分類顯示圖。
【具體實(shí)施方式】
[0027] 以下結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)說明:
[0028] 實(shí)施例一
[0029] S1,讀取原始樣本集氏、X2. . . XN};
[0030] 原始樣本集{Xi、X2... XN}包括已知分類樣本子集{Xi、X2... XJ和未知分類樣本子 集{Xn+1、Xn+2. . . XN};其中,已知分類樣本子集氏、X2. . . XJ中各個(gè)樣本所屬類別Yi分別為 Yp Y2... Yn;已知分類樣本子集中已知類別個(gè)數(shù)為L ;
[0031] 未知分類樣本子集{χη+1、χη+2... χΝ}中未知類別個(gè)數(shù)為C。
[0032] 例如,Ν = 650, L = 2, C = 3, η = 50 ;
[0033] 原始樣本集由650個(gè)惡意代碼樣本組成,650個(gè)惡意代碼樣本的編號分別為:Χρ Χ2. ..Χ65(ι。在這650個(gè)惡意代碼樣本中,編號分別為Χ^Α。。。Χ5(ι的50個(gè)惡意代碼樣本的類 別已知,即:50個(gè)惡意代碼樣本屬于2個(gè)類別,分別為:25個(gè)黑客病毒和25個(gè)宏病毒。編號 為Χ51、Χ 52。。。Χ65(ι的600個(gè)惡意代碼樣本的類別未知,未知的惡意代碼樣本類別可以為任何 類型,例如,可以為腳本病毒、木馬、蠕蟲黑客病毒或宏病毒,當(dāng)然,也可以不屬于任何類型。 [0034] S2,將原始樣本集{ΧρΧ2. . . ΧΝ}中所有樣本視為無分類樣本,對原始樣本集中的所 有樣本采用聚類方法進(jìn)行首次聚類,得到L+C個(gè)類別;
[0035] 本步驟中,聚類方法可以采用普通聚類算法,比如KMeans、分層聚類等。
[0036] 對于上述惡意代碼樣本集,在對650個(gè)樣本進(jìn)行聚類時(shí),共得到5個(gè)類別。需要 強(qiáng)調(diào)的是,本步驟中,通過聚類只得到5個(gè)類,但并不區(qū)分類名,S卩,不區(qū)分哪個(gè)類為黑客病 毒,哪個(gè)類為宏病毒。只是將屬于同一類的惡意代碼樣本聚集到一起。
[0037] S3,將L個(gè)已知類別通過匈牙利算法指派到L+C個(gè)類別中的L個(gè)類別,將首次聚類 得到的類別與已知類別對應(yīng)上。
[0038] 例如,由于Χρ X2。。。X5(l的50個(gè)惡意代碼樣本的類別已知,包括黑客病毒和宏病 毒。因此,通過指派,將5個(gè)類中包含黑客病毒最多的類認(rèn)為是黑客病毒類,將5個(gè)類中包 含宏病毒最多的類認(rèn)為是宏病毒類。
[0039] S4,將已知分類樣本子集{XpX2. . . XJ中各個(gè)樣本劃分到其歸屬的類中,然后保持 已知分類樣本子集{Xi、X2. .. XJ中各個(gè)樣本所屬類不變,再次聚類,使用目標(biāo)函數(shù)迭代未標(biāo) 注的樣本,使未標(biāo)注的樣本分到某個(gè)類別或視為背景噪音。
[0040] 例如,對于類別已知的50個(gè)惡意代碼樣本,假設(shè)一共存在。X2(l共20個(gè)黑客 病毒,在首次聚類時(shí),存在將。X 15共15個(gè)黑客病毒聚到黑客病毒類中,而將X16、X17.. x 2(l共5個(gè)黑客病毒聚到其他病毒類中的可能性。因此,在指派后,需要將類別已知的黑客 病毒X16、X 17。。X2(l劃分到其歸屬的類中。
[0041] 基于普通聚類算法,比如KMeans、分層聚類等再次聚類后,需要使用目標(biāo)函數(shù)迭代 未標(biāo)注的樣本,通過目標(biāo)函數(shù)是否達(dá)到極值識別背景噪音。當(dāng)本次迭代結(jié)果與上次迭代結(jié) 果不再發(fā)生變化時(shí),或目標(biāo)函數(shù)不再發(fā)生變化時(shí),結(jié)束分類。
[0042] 具體的,目標(biāo)函數(shù)可以設(shè)定為:類間分散度*類內(nèi)聚合度*識別率;以下對這三個(gè) 參數(shù)分別介紹:
[0043](一)類間分散度
[0044] 類間分散度根據(jù)具體應(yīng)用,可選擇類間平均距離、類間均方距離、類間最小距離或 類間最大距離表示。
[0045] 可設(shè)為:(不同類間樣本的平均距離V(所有有分類的樣本間平均距離)=(所 有有分類的樣本的總距離-各類內(nèi)的樣本間的總距離V(所有有分類的樣本總距離)*所 有有分類的樣本數(shù)*(所有有分類的樣本數(shù)-1)/ Σ (某分類的樣本數(shù)*(某分類的樣本 數(shù)-1))。
[0046] 例如:不同類間樣本的平均距離是指:若共存在黑客病毒、宏病毒、腳本病毒、木 馬和蠕蟲五個(gè)類,
[0047] Xi,Xj表示樣本;dij表示Xi與Xj間的距離;Yi表示Xi被分到的類編號,Yj表 示Xj被分到的類編號,如果Yi = 〇表示Xi不分到任何類,Xi被分到某個(gè)類時(shí)Yi取值為 1?(L+C)中的某個(gè)數(shù),則:
[0048] 所有有分類的樣本間平均距離是指:對Yi > 0且Yj > 0的所有i,j,求dij的平 均值;
[0049] 所有有分類的樣本總距離是指:對Yi > 0且Yj > 0的所有i,j,求dij的總和;
[0050] 所有有分類的樣本數(shù)是指:對Yi > 0所有i的個(gè)數(shù);
[0051] 各類內(nèi)的樣本間的總距離是指:對Yi > 〇,Yj > 0且Yi = Yj的所有i,j,求dij 的總和;
[0052] 不同類間樣本的平均距離是指:對Yi > 0, Yj > 0且Yi尹Yj的所有i,j,求di j 的平均值。
[0053] (二)類內(nèi)聚合度
[0054] 類內(nèi)聚合度可用相似度,也可用距離的負(fù)指數(shù)形式表示,類內(nèi)聚合度可以用類內(nèi) 平均距離、類內(nèi)均方距離或類內(nèi)最大距離表示。
[0055] (三)識別率
[0056] 識別率最簡單形式為:類別個(gè)數(shù)/總樣本個(gè)數(shù),也可以是這個(gè)比例的一個(gè)函數(shù)。
[0057] 例如:對于上述惡意代碼樣本集,總樣本個(gè)數(shù)為650,如果650個(gè)惡意代碼樣本均 有類標(biāo)識,則識別率為100% ;如果有10個(gè)惡意代碼樣本被認(rèn)為不屬于任何類,則識別率為 (650-10)/650。
[0058] 性質(zhì):類間分散度越大越好,類內(nèi)聚合度越大越好,識別率越高越好。
[0059] 實(shí)施例二
[0060] 采用本發(fā)明實(shí)施例一提供的基于聚類和匈牙利算法的數(shù)據(jù)分類方法,下面介紹一 種具體應(yīng)用。
[0061] 如圖2所示,為原始樣本集,共包括1000個(gè)樣本和100個(gè)噪音點(diǎn);其中,原始樣本 集大致區(qū)分為4個(gè)類,形狀類似漢字的"六"。對"六"字下面的"撇"、"捺"各有10個(gè)已標(biāo) 注的樣本,見圖2中A、B所指向的各個(gè)樣本,即為已標(biāo)注樣本;其中,A所指向的樣本代表一 個(gè)類別,B所指向的樣本代表另一個(gè)類別。上面的"點(diǎn)"、"橫"均為未標(biāo)注的樣本。
[0062] 如圖3所示,為聚類分類所期望的分類結(jié)果,期望能把4類劃分出來,即圖3中用 圓形或橢圓形圈起來的樣本,其他散落在圓形或橢圓形外的樣本作為背景噪音樣本不做歸 類。
[0063] 通過采用本發(fā)明提供的基于聚類和匈牙利算法的數(shù)據(jù)分類方法,得到如圖4所示 的分類結(jié)果,從圖4可以看出,本發(fā)明基本識別出了"六"的四個(gè)筆畫部分,而且濾除了背景 噪音的樣本。
[0064] 以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人 員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng) 視本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1. 一種基于聚類和匈牙利算法的數(shù)據(jù)分類方法,其特征在于,包括以下步驟: S1,讀取原始樣本集{Xp X2... XN}; 原始樣本集{Xi、χ2... XN}包括已知分類樣本子集{Xi、X2... xn}和未知分類樣本子集 {Χη+1、Χη+2· · · XN};其中,已知分類樣本子集氏、Χ2· · · XJ中各個(gè)樣本所屬類別Yi分別為Yi、 Y2... Yn;已知分類樣本子集中已知類別個(gè)數(shù)為L ; 未知分類樣本子集{χη+1、χη+2... χΝ}中未知類別個(gè)數(shù)為c ; S2,將原始樣本集{Xi、X2. . . ΧΝ}中所有樣本視為無分類樣本,對原始樣本集中的所有樣 本采用聚類方法進(jìn)行首次聚類,得到L+C個(gè)類別; S3,將L個(gè)已知類別通過匈牙利算法指派到L+C個(gè)類別中的L個(gè)類別,將首次聚類得到 的類別與已知類別對應(yīng)上; S4,將已知分類樣本子集{XpX2... XJ中各個(gè)樣本劃分到其歸屬的類中,然后保持已知 分類樣本子集{Xi、X2... XJ中各個(gè)樣本所屬類不變,再次聚類,使用目標(biāo)函數(shù)迭代未標(biāo)注的 樣本,使未標(biāo)注的樣本分到某個(gè)類別或視為背景噪音。
2. 根據(jù)權(quán)利要求1所述的基于聚類和匈牙利算法的數(shù)據(jù)分類方法,其特征在于,S2中, 所述聚類方法為KMeans聚類方法或分層聚類方法。
3. 根據(jù)權(quán)利要求1所述的基于聚類和匈牙利算法的數(shù)據(jù)分類方法,其特征在于,S4中, 再次聚類時(shí)所采用的聚類方法為KMeans聚類方法或分層聚類方法。
4. 根據(jù)權(quán)利要求1所述的基于聚類和匈牙利算法的數(shù)據(jù)分類方法,其特征在于,S4 中,使用目標(biāo)函數(shù)迭代未標(biāo)注的樣本,使未標(biāo)注的樣本分到某個(gè)類別或視為背景噪音,具體 為: 使用目標(biāo)函數(shù)迭代未標(biāo)注的樣本,通過目標(biāo)函數(shù)是否達(dá)到極值識別背景噪音;當(dāng)本次 迭代結(jié)果與上次迭代結(jié)果不再發(fā)生變化時(shí),或目標(biāo)函數(shù)不再發(fā)生變化時(shí),結(jié)束分類。
5. 根據(jù)權(quán)利要求4所述的基于聚類和匈牙利算法的數(shù)據(jù)分類方法,其特征在于,所述 目標(biāo)函數(shù)設(shè)定為:類間分散度*類內(nèi)聚合度*識別率。
6. 根據(jù)權(quán)利要求5所述的基于聚類和匈牙利算法的數(shù)據(jù)分類方法,其特征在于,所述 類間分散度用間平均距離、類間均方距離、類間最小距離或類間最大距離表示。
7. 根據(jù)權(quán)利要求5所述的基于聚類和匈牙利算法的數(shù)據(jù)分類方法,其特征在于,所述 類內(nèi)聚合度用類內(nèi)平均距離、類內(nèi)均方距離或類內(nèi)最大距離表示。
8. 根據(jù)權(quán)利要求5所述的基于聚類和匈牙利算法的數(shù)據(jù)分類方法,其特征在于,所述 識別率表達(dá)式為:類別個(gè)數(shù)/總樣本個(gè)數(shù)。
【文檔編號】G06F17/30GK104216920SQ201310220527
【公開日】2014年12月17日 申請日期:2013年6月5日 優(yōu)先權(quán)日:2013年6月5日
【發(fā)明者】胡勇 申請人:北京齊爾布萊特科技有限公司