面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法
【專利摘要】本發(fā)明公開(kāi)了一種面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,所述的方法包括以下步驟:步驟一、數(shù)據(jù)Spout;步驟二、過(guò)濾批化Bolt;步驟三、模型Bolt;步驟四、局部統(tǒng)計(jì)與計(jì)算Bolt;步驟五、評(píng)估Bolt。本發(fā)明針對(duì)大數(shù)據(jù)“4V”特點(diǎn)中Volume(海量)、Velocity(高速)、Value(價(jià)值)這“3V”特點(diǎn)和海量數(shù)據(jù)高效處理的需求,實(shí)現(xiàn)了基于Storm平臺(tái)的垂直并行化P?VFDT算法;在大規(guī)模數(shù)據(jù)上的實(shí)驗(yàn)表明,P?VFDT算法和VFDT算法有著相近的分類性能,但是單機(jī)多核環(huán)境的P?VFDT算法比VFDT算法耗時(shí)約少12%,集群環(huán)境的P?VFDT算法比VFDT算法耗時(shí)約少8%。
【專利說(shuō)明】
面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,涉及一種面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)和數(shù)據(jù)處理技術(shù)的不斷發(fā)展,搜索引擎、電子商務(wù)、微博和即時(shí)通訊等 應(yīng)用為人們提供了海量的信息和便捷的服務(wù),在豐富人們生活的同時(shí)也極大提高了人們的 工作效率和生活情趣。人們?cè)谑褂眠@些應(yīng)用和服務(wù)的過(guò)程中也產(chǎn)生了各種類型的數(shù)據(jù),如 向搜索引擎發(fā)出搜索請(qǐng)求、在電商網(wǎng)站瀏覽商品,評(píng)論轉(zhuǎn)發(fā)微博和在線聊天等。這些數(shù)據(jù)經(jīng) 過(guò)一定的時(shí)間積累規(guī)模都已十分龐大,并且保持著較高的增長(zhǎng)速率,大數(shù)據(jù)的"4V"特 點(diǎn)--Volume(大量)、Velocity(高速)、Variety(多樣)、Value(價(jià)值),日益凸顯。
[0003] 海量數(shù)據(jù)流是指數(shù)據(jù)總量宏大且到達(dá)速率極高的數(shù)據(jù)流。例如大型傳感器網(wǎng)絡(luò)每 秒可收集百萬(wàn)量級(jí)數(shù)據(jù),網(wǎng)絡(luò)路由器每秒收集到的數(shù)據(jù)量更是復(fù)雜和規(guī)模龐大。數(shù)據(jù)的總 量和增量決定了這些數(shù)據(jù)不能經(jīng)過(guò)完全存儲(chǔ)后再進(jìn)行處理,而且必須保證對(duì)數(shù)據(jù)的處理速 率要大于或等于數(shù)據(jù)的到達(dá)速率才能保證數(shù)據(jù)處理系統(tǒng)的有效運(yùn)轉(zhuǎn)。
[0004] 海量數(shù)據(jù)流的分類,相比于一般的數(shù)據(jù)流處理過(guò)程來(lái)說(shuō),計(jì)算量要高得多,這也對(duì) 算法的性能提出了更大的挑戰(zhàn)。實(shí)現(xiàn)對(duì)數(shù)據(jù)流高效準(zhǔn)確的分類,具備極大的現(xiàn)實(shí)意義。一方 面,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的篩選,縮小下游節(jié)點(diǎn)處理數(shù)據(jù)的規(guī)模;另一方面,可以實(shí)時(shí)監(jiān)控目標(biāo) 類別數(shù)據(jù)的變化情況,實(shí)現(xiàn)對(duì)于異常情況實(shí)時(shí)告警。所以高效準(zhǔn)確是應(yīng)對(duì)海量數(shù)據(jù)流分類 時(shí)必須解決的問(wèn)題。
[0005] 相關(guān)技術(shù)背景
[0006] (l)Storm 相關(guān)技術(shù)
[0007] Topology是對(duì)運(yùn)行在Storm集群中一個(gè)工作任務(wù)的邏輯抽象,Stream是一個(gè)無(wú)界 的數(shù)據(jù)流序列,其中的一條數(shù)據(jù)為T(mén)uple,處理Stream的原語(yǔ)是Spout和Bolt,他們均是對(duì)計(jì) 算過(guò)程的邏輯抽象。Spout作為流的數(shù)據(jù)源用于產(chǎn)生Stream,即發(fā)送數(shù)據(jù),而B(niǎo)olt用作對(duì) Stream進(jìn)行處理和傳播,即接收數(shù)據(jù)、處理數(shù)據(jù)、發(fā)送數(shù)據(jù)。圖1為一個(gè)簡(jiǎn)單Topology示例。 不同的Spout產(chǎn)生不同的數(shù)據(jù),不同的Bolt執(zhí)行不同的任務(wù)。Spout和Bolt之間通過(guò)Stream 連接,數(shù)據(jù)從Spout流向Bolt;不同Bolt之間通過(guò)不同的Stream相連接。
[0008] (2)垂直并行化
[0009] 圖2為分布式數(shù)據(jù)流決策樹(shù)的垂直并行化方案,其中數(shù)據(jù)Spout向模型Bolt發(fā)送數(shù) 據(jù),模型Bolt維持一個(gè)完整的全局決策樹(shù),而局部統(tǒng)計(jì)與計(jì)算Bolt負(fù)責(zé)存儲(chǔ)部分葉節(jié)點(diǎn)的 屬性統(tǒng)計(jì)信息以及對(duì)這些屬性進(jìn)行評(píng)估分?jǐn)?shù)的計(jì)算。
[00?0]通過(guò)人工設(shè)定局部統(tǒng)計(jì)與計(jì)算Bolt的并行度,使得模型Bolt在對(duì)屬性數(shù)據(jù)分發(fā)的 時(shí)候,可根據(jù)并行度進(jìn)行均分。適當(dāng)?shù)牟⑿卸瓤梢蕴岣哌\(yùn)行效率,但是當(dāng)并行度過(guò)高時(shí),會(huì) 產(chǎn)生的局部計(jì)算結(jié)果過(guò)多,使集群中各節(jié)點(diǎn)間的網(wǎng)絡(luò)通信量增加,也會(huì)增大模型Bolt匯總 局部計(jì)算結(jié)果的計(jì)算量。
[0011]垂直并行化比較適合高維數(shù)據(jù),因?yàn)樵跀?shù)據(jù)維度很高時(shí),垂直并行化可將計(jì)算代 價(jià)極高的計(jì)算可行劃分的評(píng)估分?jǐn)?shù)這一過(guò)程并行處理。另外,垂直并行化因?yàn)椴恍枰3?多個(gè)樹(shù)結(jié)構(gòu),其內(nèi)存消耗較小。但是,當(dāng)數(shù)據(jù)的維度不夠高時(shí),進(jìn)行劃分和并行計(jì)算的性價(jià) 比可能不高。
【發(fā)明內(nèi)容】
[0012] 本發(fā)明克服了現(xiàn)有技術(shù)的不足,提供一種面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法。 該方法基于Storm實(shí)時(shí)數(shù)據(jù)流處理框架,能適用于大數(shù)據(jù)場(chǎng)景。實(shí)驗(yàn)結(jié)果證實(shí)了該方法的可 行性與有效性。
[0013] 為解決上述的技術(shù)問(wèn)題,本發(fā)明采用以下技術(shù)方案:
[0014] -種面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,所述的方法包括以下步驟:
[0015] 步驟一、數(shù)據(jù) Spout
[0016] 數(shù)量為1,連續(xù)產(chǎn)生數(shù)據(jù)記錄;
[0017] 步驟二、過(guò)濾批化Bolt
[0018] 數(shù)量為1,接收數(shù)據(jù)消息,對(duì)收集的數(shù)據(jù)進(jìn)行過(guò)濾篩選,并積累成批發(fā)送給模型 Bolt ;
[0019] 步驟三、模型Bolt
[0020] 數(shù)量為1,對(duì)一批數(shù)據(jù)進(jìn)行處理,將數(shù)據(jù)的分類結(jié)果,發(fā)送給評(píng)估Bo It進(jìn)行評(píng)估;將 數(shù)據(jù)進(jìn)行分解,然后發(fā)送給局部統(tǒng)計(jì)與計(jì)算Bolt的對(duì)應(yīng)Task;當(dāng)數(shù)據(jù)所在的葉節(jié)點(diǎn)通過(guò)劃 分測(cè)試時(shí),向局部統(tǒng)計(jì)與計(jì)算Bolt的所有Task發(fā)送計(jì)算消息,請(qǐng)求劃分結(jié)果;收到局部統(tǒng)計(jì) 與計(jì)算Bolt的所有Task發(fā)來(lái)的計(jì)算結(jié)果后,判斷是否執(zhí)行最終劃分,如果通過(guò)最終劃分測(cè) 試,則執(zhí)行劃分操作,并向局部統(tǒng)計(jì)與計(jì)算Bolt的所有Task發(fā)送刪除劃分前葉節(jié)點(diǎn)的統(tǒng)計(jì) 信息的消息;
[0021 ] 步驟四、局部統(tǒng)計(jì)與計(jì)算Bolt
[0022] 數(shù)量為η,收到批屬性數(shù)據(jù)消息時(shí),更新屬性相關(guān)統(tǒng)計(jì)信息;
[0023] 收到計(jì)算消息時(shí),計(jì)算對(duì)應(yīng)節(jié)點(diǎn)的最優(yōu)劃分評(píng)估分?jǐn)?shù);
[0024]收到刪除消息時(shí),刪除模型中已經(jīng)完成分割的節(jié)點(diǎn)的屬性相關(guān)統(tǒng)計(jì)信息;
[0025] 步驟五、評(píng)估Bolt。
[0026]更進(jìn)一步的技術(shù)方案是所述步驟三包括:
[0027]當(dāng)模型Bolt收到批數(shù)據(jù)消息后,對(duì)于批數(shù)據(jù)消息中的每一條數(shù)據(jù),找到對(duì)應(yīng)的葉 結(jié)點(diǎn),并根據(jù)葉節(jié)點(diǎn)的數(shù)據(jù)類標(biāo)分布進(jìn)行分類,同時(shí)向評(píng)估Bolt發(fā)出分類結(jié)果的消息;如果 數(shù)據(jù)所在的葉節(jié)點(diǎn)已經(jīng)處于劃分狀態(tài),則無(wú)需使用該數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練,只執(zhí)行分類操 作;否則,需要使用該數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練。
[0028]更進(jìn)一步的技術(shù)方案是所述對(duì)模型進(jìn)行訓(xùn)練包括:
[0029]首先更新葉節(jié)點(diǎn)的數(shù)據(jù)類標(biāo)分布,然后將數(shù)據(jù)分解為以節(jié)點(diǎn)編號(hào)、屬性編號(hào)、屬性 值的三元組,并添加到節(jié)點(diǎn)的屬性消息列表中,根據(jù)節(jié)點(diǎn)的屬性消息列表生成批屬性消息, 同時(shí)將葉節(jié)點(diǎn)加入到批數(shù)據(jù)所在葉節(jié)點(diǎn)的集合中。
[0030]更進(jìn)一步的技術(shù)方案是所述步驟四中,在局部統(tǒng)計(jì)與計(jì)算Bolt中使用的數(shù)據(jù)結(jié)構(gòu) 包括一個(gè):節(jié)點(diǎn)id,屬性id,屬性統(tǒng)計(jì)信息的表格localTable,該Bolt的每一個(gè)Task都有一 個(gè) localTable。
[0031]更進(jìn)一步的技術(shù)方案是所述步驟四中,對(duì)批屬性消息的處理是根據(jù)消息中的節(jié)點(diǎn) i d和屬性i d,更新屬性的統(tǒng)計(jì)信息。
[0032]更進(jìn)一步的技術(shù)方案是所述步驟四中,對(duì)計(jì)算消息的處理是通過(guò)節(jié)點(diǎn)id,計(jì)算 localTable中該節(jié)點(diǎn)的所有屬性的可行劃分,找出最優(yōu)和次優(yōu)劃分并作為局部計(jì)算結(jié)果返 回。
[0033] 更進(jìn)一步的技術(shù)方案是所述步驟四中,對(duì)刪除消息的處理是根據(jù)消息中的節(jié)點(diǎn) id,刪除localTable中該節(jié)點(diǎn)所有屬性的統(tǒng)計(jì)信息。
[0034] 更進(jìn)一步的技術(shù)方案是所述步驟五包括:并行與非并行算法性能對(duì)比和/或批數(shù) 據(jù)消息的大小對(duì)性能的影響分析。
[0035] 更進(jìn)一步的技術(shù)方案是所述步驟五包括實(shí)驗(yàn)分析,所述實(shí)驗(yàn)分析中的實(shí)驗(yàn)數(shù)據(jù)通 過(guò)超平面生成算法生成;所述超平面生成算法包括:設(shè)需要生成的數(shù)據(jù)維度為attNum,每 一個(gè)維度對(duì)應(yīng)一個(gè)屬性,數(shù)據(jù)中噪聲比率為noiseP,發(fā)生概念漂移的屬性數(shù)為dr if tNum,概 念漂移幅度為magChange,反向漂移概率為sigmaPercentage,則數(shù)據(jù)的生成過(guò)程如下: [0036] 1)、隨機(jī)初始化超平面的法向量,包括:隨機(jī)初始化各屬性的權(quán)重weights;
[0037] 2)、初始化發(fā)生概念漂移的各屬性方向sigmas,均為1;
[0038] 3)、生成attNum個(gè)0到1之間的隨機(jī)數(shù)作為各屬性的取值,并按照weights加權(quán)求和 得到SUm,同時(shí)對(duì)
[0039]
則數(shù)據(jù)類標(biāo)為1,否則,數(shù)據(jù)類標(biāo)為0;
[0040] 5)、生成一個(gè)0到1之間的隨機(jī)數(shù)r,如果r〈noiseP,則修改數(shù)據(jù)類標(biāo)為相反類標(biāo),即 噪聲數(shù)據(jù);
[0041 ] 6)、對(duì)于前dr if tNum個(gè)屬性,更新weights[i]為weights[i ] + s igmas [ i ] X magChange,其中i為屬性編號(hào);生成一個(gè)0到1之間的隨機(jī)數(shù)r,如果r〈sigmaPercentage,貝lj 修改sigmas[ i ]為-sigmas[ i ];每產(chǎn)生一條數(shù)據(jù)后,對(duì)應(yīng)的超平面為
[0043]更進(jìn)一步的技術(shù)方案是所述步驟五中選取的分類評(píng)價(jià)指標(biāo)為正確率和F值,F(xiàn)值的 公式化表述為
[0045]其中precision為準(zhǔn)確率,等于分類正確的正例數(shù)除以被分類為正例的數(shù)據(jù)總數(shù); recall為召回率,等于被正確分類的正例數(shù)量除以數(shù)據(jù)中實(shí)際正例的總量。
[0046] 與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例的有益效果之一是:
[0047] (1)針對(duì)大數(shù)據(jù)"4V"特點(diǎn)中Volume(海量)、Veloci ty (高速)、Value(價(jià)值)這"3V" 特點(diǎn)和海量數(shù)據(jù)高效處理的需求,實(shí)現(xiàn)了基于Storm平臺(tái)的垂直并行化P-VFDT算法;
[0048] (2)在大規(guī)模數(shù)據(jù)上的實(shí)驗(yàn)表明,P-VFDT算法和VFDT算法有著相近的分類性能,但 是單機(jī)多核環(huán)境的P-VFDT算法比VFDT算法耗時(shí)約少12%,集群環(huán)境的P-VFDT算法比VFDT算 法耗時(shí)約少8 %。
【附圖說(shuō)明】
[0049]圖1為本發(fā)明一個(gè)實(shí)施例中Storm中的Topology示例示意圖。
[0050]圖2為本發(fā)明一個(gè)實(shí)施例中垂直并行化示例示意圖。
[00511圖3為本發(fā)明一個(gè)實(shí)施例中P-VFDT算法的拓?fù)浣Y(jié)構(gòu)示意圖。
[0052]圖4為本發(fā)明一個(gè)實(shí)施例中批屬性消息生成過(guò)程示意圖。
[0053]圖5為本發(fā)明一個(gè)實(shí)施例中批屬性消息生成過(guò)程示意圖。
[0054]圖6為本發(fā)明一個(gè)實(shí)施例中批屬性消息生成過(guò)程示意圖。
[0055]圖7為本發(fā)明一個(gè)實(shí)施例中不同時(shí)刻生成三維數(shù)據(jù)的示意圖。
[0056]圖8為本發(fā)明一個(gè)實(shí)施例中不同時(shí)刻生成三維數(shù)據(jù)的示意圖。
[0057]圖9為本發(fā)明一個(gè)實(shí)施例中三種環(huán)境下VFDT算法和P-VFDT算法的正確率示意圖。 [0058]圖10為本發(fā)明一個(gè)實(shí)施例中三種環(huán)境下VFDT算法和P-VFDT算法的F值示意圖。 [0059]圖11為本發(fā)明一個(gè)實(shí)施例中不同批數(shù)據(jù)大小時(shí)P-VFDT算法的正確率示意圖。
[0060]圖12為本發(fā)明一個(gè)實(shí)施例中不同批數(shù)據(jù)大小時(shí)P-VFDT算法的F值示意圖。
[0061]圖13為本發(fā)明一個(gè)實(shí)施例中不同批數(shù)據(jù)大小時(shí)P-VFDT算法的耗時(shí)情況示意圖。
【具體實(shí)施方式】
[0062] 本說(shuō)明書(shū)中公開(kāi)的所有特征,或公開(kāi)的所有方法或過(guò)程中的步驟,除了互相排斥 的特征和/或步驟以外,均可以以任何方式組合。
[0063] 本說(shuō)明書(shū)(包括任何附加權(quán)利要求、摘要和附圖)中公開(kāi)的任一特征,除非特別敘 述,均可被其他等效或具有類似目的的替代特征加以替換。即,除非特別敘述,每個(gè)特征只 是一系列等效或類似特征中的一個(gè)例子而已。
[0064]下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明的【具體實(shí)施方式】進(jìn)行詳細(xì)描述。
[0065] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,本實(shí)施例公開(kāi)一種面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方 法,該方法基于Storm實(shí)時(shí)數(shù)據(jù)流處理框架,能適用于大數(shù)據(jù)場(chǎng)景。實(shí)驗(yàn)結(jié)果證實(shí)了該方法 的可行性與有效性。具體的,該方法包括以下步驟:
[0066] 步驟一、數(shù)據(jù) Spout
[0067] 數(shù)量為1,以一定的速率不停的產(chǎn)生數(shù)據(jù)記錄。
[0068] 步驟二、過(guò)濾批化Bolt
[0069] 按預(yù)定的數(shù)據(jù)過(guò)濾規(guī)則對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,對(duì)保留的數(shù)據(jù)進(jìn)行積累,當(dāng)積累的數(shù)據(jù) 量達(dá)到設(shè)定的批閾值時(shí),將積累下的數(shù)據(jù)成批發(fā)送給模型Bolt。具體實(shí)現(xiàn)偽代碼見(jiàn)表1。
[0070] 表1過(guò)濾批化Bolt實(shí)現(xiàn)
[0073] 步驟三、模型Bolt
[0074] 模型Bolt會(huì)收到兩類消息,分別是批數(shù)據(jù)消息、計(jì)算結(jié)果消息。收到批數(shù)據(jù)消息 后,對(duì)于批數(shù)據(jù)消息中的每一條數(shù)據(jù),找到對(duì)應(yīng)的葉結(jié)點(diǎn),并根據(jù)葉節(jié)點(diǎn)的數(shù)據(jù)類標(biāo)分布進(jìn) 行分類,同時(shí)向評(píng)估Bolt發(fā)出分類結(jié)果的消息。如果數(shù)據(jù)所在的葉節(jié)點(diǎn)已經(jīng)處于劃分狀態(tài), 即已經(jīng)發(fā)出了計(jì)算消息但尚未就收到的局部計(jì)算結(jié)果做出最終的劃分決策,則無(wú)需使用該 數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練,只執(zhí)行分類操作。否則,需要使用該數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練。對(duì)模型的 訓(xùn)練首先需要更新葉節(jié)點(diǎn)的數(shù)據(jù)類標(biāo)分布,然后將數(shù)據(jù)分解為以〈節(jié)點(diǎn)編號(hào),屬性編號(hào),屬 性值〉的三元組,并添加到節(jié)點(diǎn)的屬性消息列表中,根據(jù)節(jié)點(diǎn)的屬性消息列表生成批屬性消 息,同時(shí)將葉節(jié)點(diǎn)加入到批數(shù)據(jù)所在葉節(jié)點(diǎn)的集合中。對(duì)一批數(shù)據(jù)執(zhí)行以上步驟后,對(duì)批數(shù) 據(jù)所在葉節(jié)點(diǎn)的集合中的所有葉節(jié)點(diǎn),發(fā)送葉節(jié)點(diǎn)的批屬性消息。在發(fā)送葉節(jié)點(diǎn)的批屬性 消息后,如果葉節(jié)點(diǎn)不處于劃分狀態(tài),并且葉節(jié)點(diǎn)積累的數(shù)據(jù)量已經(jīng)達(dá)到執(zhí)行劃分的最小 數(shù)據(jù)量,貝向局部統(tǒng)計(jì)與計(jì)算Bolt發(fā)出計(jì)算消息。
[0075] 發(fā)送批屬性消息的過(guò)程見(jiàn)圖4至圖6,其中圖4為批數(shù)據(jù)消息包括ABCD四條數(shù)據(jù),屬 性維度為Al、A2、A3、A4、A5這5個(gè);圖5為模型B 0lt中維持的樹(shù)模型結(jié)構(gòu),AB⑶四條數(shù)據(jù)在樹(shù) 模型中對(duì)應(yīng)的葉節(jié)點(diǎn)分別為j、j、k、g;圖6為節(jié)點(diǎn)j、k、g的所有屬性消息,屬性消息由〈節(jié)點(diǎn) id,屬性編號(hào),屬性值〉組成,同一個(gè)節(jié)點(diǎn)的所有屬性消息,按節(jié)點(diǎn)id和屬性編號(hào)分組成批, 即在圖6中每個(gè)節(jié)點(diǎn)的每一行的所有屬性消息成為一條批屬性消息。處理批數(shù)據(jù)消息的算 法見(jiàn)表2。
[0076] 表2模型Bolt對(duì)批數(shù)據(jù)消息處理
[0078] 對(duì)于局部計(jì)算結(jié)果消息,從消息中可以得到一個(gè)局部統(tǒng)計(jì)與計(jì)算Bolt的Task中對(duì) 于一個(gè)節(jié)點(diǎn)的局部最優(yōu)和次優(yōu)劃分,并根據(jù)消息中的最優(yōu)和次優(yōu)劃分對(duì)節(jié)點(diǎn)全局的最優(yōu)和 次優(yōu)劃分進(jìn)行更新。當(dāng)收齊所有的局部計(jì)算結(jié)果消息后,即可得到全局的最優(yōu)和次優(yōu)劃分, 同時(shí)取消超時(shí)檢測(cè)線程。如果全局最優(yōu)和次優(yōu)劃分的評(píng)估分?jǐn)?shù)差值滿足Hoeffding B 〇 u n d,則對(duì)節(jié)點(diǎn)執(zhí)行最終劃分。其中,局部計(jì)算結(jié)果消息的數(shù)量與局部統(tǒng)計(jì)與計(jì)算Β ο 11的 Task數(shù)量一致,模型Bolt對(duì)計(jì)算結(jié)果消息的處理的偽代碼見(jiàn)表3。
[0079]表3模型Bolt對(duì)計(jì)算結(jié)果消息的處理
[0081] 步驟四、局部統(tǒng)計(jì)與計(jì)算Bolt
[0082] 局部統(tǒng)計(jì)與計(jì)算Bolt會(huì)收到批屬性消息、計(jì)算消息和刪除消息這三類消息。在局 部統(tǒng)計(jì)與計(jì)算Bolt中使用的主要數(shù)據(jù)結(jié)構(gòu)是一個(gè)〈節(jié)點(diǎn)id,屬性id,屬性統(tǒng)計(jì)信息〉的表格 1〇〇3]^&1316,該13〇11:的每一個(gè)Task都有一個(gè)localTable。對(duì)批屬性消息的處理是根據(jù)消息 中的節(jié)點(diǎn)id和屬性id更新屬性的統(tǒng)計(jì)信息;對(duì)計(jì)算消息的處理是通過(guò)節(jié)點(diǎn)id,計(jì)算 localTable中該節(jié)點(diǎn)的所有屬性的可行劃分,找出最優(yōu)和次優(yōu)劃分并作為局部計(jì)算結(jié)果 返回;對(duì)刪除消息的處理是根據(jù)消息中的節(jié)點(diǎn)i d刪除1 〇 c a 1 Ta b 1 e中該節(jié)點(diǎn)所有屬性的統(tǒng)計(jì) 信息。局部統(tǒng)計(jì)與計(jì)算Bolt處理計(jì)算消息的過(guò)程見(jiàn)表4。
[0083 ] 表4局部統(tǒng)計(jì)與計(jì)算Bo 11處理計(jì)算消息
[0085] 步驟五、評(píng)估Bolt。
[0086] 實(shí)驗(yàn)分析
[0087] (1)實(shí)驗(yàn)環(huán)境
[0088]本實(shí)施例采用的實(shí)驗(yàn)環(huán)境主要包含兩種情況,第一種是單機(jī)多核,另一種是集群 環(huán)境。單機(jī)多核主要作為傳統(tǒng)單進(jìn)程算法和模擬并行化多進(jìn)程(網(wǎng)絡(luò)通信開(kāi)銷較?。┑膶?shí)驗(yàn) 環(huán)境;集群環(huán)境是通過(guò)虛擬機(jī)模擬真實(shí)的分布式實(shí)驗(yàn)環(huán)境。由于機(jī)器百兆網(wǎng)卡性能的限制, 用多臺(tái)物理機(jī)搭建的集群只能達(dá)到約10M每秒的傳輸速度,而在工業(yè)界生產(chǎn)環(huán)境中至少為 千兆網(wǎng)卡,本文使用物理機(jī)與虛擬機(jī)結(jié)合構(gòu)建小型集群,并虛擬千兆網(wǎng)卡進(jìn)行實(shí)驗(yàn)。表5為 單機(jī)多核實(shí)驗(yàn)環(huán)境配置,表6為集群實(shí)驗(yàn)環(huán)境配置,在物理機(jī)上進(jìn)行虛擬化。
[0089] 表5單機(jī)多進(jìn)程實(shí)驗(yàn)環(huán)境
[0091]表6集群實(shí)驗(yàn)環(huán)境
[0093] (2)實(shí)驗(yàn)數(shù)據(jù)描述
[0094] 本實(shí)施例的實(shí)驗(yàn)數(shù)據(jù)通過(guò)一個(gè)超平面生成算法生成,該算法可以通過(guò)任意維度的 超平面生成相應(yīng)維度的數(shù)據(jù),而且可以設(shè)定發(fā)生概念漂移的維度數(shù)量,概念漂移的幅度,數(shù) 據(jù)中的噪聲比率等。對(duì)于生成的數(shù)據(jù)點(diǎn),處在超平面兩側(cè)的數(shù)據(jù)為不同的類標(biāo),超平面法向 量的波動(dòng),代表著數(shù)據(jù)概念漂移現(xiàn)象的發(fā)生,而超級(jí)(突發(fā)性)漂移是超平面法向量隨機(jī)重 置。總的來(lái)說(shuō),該算法可生成海量任意維的動(dòng)態(tài)數(shù)據(jù),并且可對(duì)數(shù)據(jù)流中的概念漂移按需定 制。
[0095] 圖7和圖8為不同時(shí)刻生成三維數(shù)據(jù)的示意圖,圖7為t時(shí)刻的超平面,其中圖8為t +n時(shí)刻的超平面,處在超平面兩側(cè)的數(shù)據(jù)為不同類標(biāo),由t至t+n時(shí)刻的超平面法向量發(fā)生 了輕微變化,說(shuō)明有輕微概念漂移發(fā)生。
[0096]數(shù)據(jù)的生成算法可表述為,設(shè)需要生成的數(shù)據(jù)維度為attNum,每一個(gè)維度對(duì)應(yīng)一 個(gè)屬性,數(shù)據(jù)中噪聲比率為noi seP,發(fā)生概念漂移的屬性數(shù)為dr if tNum,概念漂移幅度為 magChange,反向漂移概率為s igmaPercentage,則數(shù)據(jù)的生成過(guò)程如下:
[0097]步驟1.隨機(jī)初始化超平面的法向量,即隨機(jī)初始化各屬性的權(quán)重we ights。
[0098]步驟2.初始化發(fā)生概念漂移的各屬性方向sigmas,均為1 (正向)。
[00"]步驟3.生成attNum個(gè)0到1之間的隨機(jī)數(shù)作為各屬性的取值,并按照weights加權(quán) 求和得到sum,同時(shí)對(duì)weights求和得到weightSum。
[0100]
,則數(shù)據(jù)類標(biāo)為1,否則,數(shù)據(jù)類標(biāo)為0。
[0101 ] 步驟5.生成一個(gè)0到1之間的隨機(jī)數(shù)r,如果r<noiseP,則修改數(shù)據(jù)類標(biāo)為相反類 標(biāo),即噪聲數(shù)據(jù)。
[0102]步驟6 ·對(duì)于前drif tNum個(gè)屬性,更新weights [ i ]為weights [ i ] + sigmas [ i ] X magChange,其中i為屬性編號(hào)。生成一個(gè)0到1之間的隨機(jī)數(shù)r,如果r<sigmaPercentage,貝lj 修改sigmas[i]為_(kāi)sigmas[i] 〇
[0103]重復(fù)執(zhí)行步驟3到步驟6,即可以不斷的產(chǎn)生數(shù)據(jù)。步驟3用于生成屬性;步驟4用于 計(jì)算類標(biāo);步驟5用于添加噪聲;步驟6用于添加概念漂移。每產(chǎn)生一條數(shù)據(jù)后,對(duì)應(yīng)的超平 面為
[0105] (3)評(píng)價(jià)指標(biāo)
[0106]本文選取的分類評(píng)價(jià)指標(biāo)為正確率(Accuracy)和F值,其中正確率是指分類正確 的數(shù)據(jù)占參與分類的總數(shù)據(jù)量的比率,而F值是對(duì)單純的準(zhǔn)確率和召回率作為評(píng)價(jià)指標(biāo)的 折中,因?yàn)闇?zhǔn)確率和召回率都只能刻畫(huà)出模型的某一方面的特性。F值的公式化表述為
[0108] 其中precision為準(zhǔn)確率,等于分類正確的正例數(shù)除以被分類為正例的數(shù)據(jù)總數(shù); recall為召回率,等于被正確分類的正例數(shù)量除以數(shù)據(jù)中實(shí)際正例的總量。
[0109] 實(shí)驗(yàn)數(shù)據(jù)
[0110] (1)并行與非并行算法性能對(duì)比
[0111]通過(guò)三種環(huán)境下比較并行算法與非并行算法的性能,其中本地單進(jìn)程為非并行算 法(VFDT),而單機(jī)多核與集群環(huán)境都為并行算法(P-VroT)。圖3為Ρ-VFDT算法的拓?fù)浣Y(jié)構(gòu) 圖。圖9和圖10分別為三種環(huán)境下VFDT算法和P-VFDT算法的正確率和F值,實(shí)驗(yàn)數(shù)據(jù)為500萬(wàn) 條100維的實(shí)值型屬性的數(shù)據(jù)流,其中有50維發(fā)生了概念漂移,并對(duì)每5萬(wàn)條數(shù)據(jù)計(jì)算正確 率和F值。從圖中可見(jiàn),并行算法與非并行算法性能較為接近,本地單進(jìn)程環(huán)境的分類性能 略尚。
[0112] 表7為三種環(huán)境下每5萬(wàn)條數(shù)據(jù)平均的耗時(shí)情況對(duì)比,P-VFDT算法比VFDT算法耗時(shí) 略少,其中單機(jī)多核環(huán)境的P-VFDT算法比VFDT算法耗時(shí)約少12 %,集群環(huán)境的P-VFDT算法 比VFDT算法耗時(shí)約少8%。在并行化方案中,單機(jī)多進(jìn)程的耗時(shí)要低于集群,這是因?yàn)閱螜C(jī) 多進(jìn)程環(huán)境下多為進(jìn)程或線程間的通訊,而集群環(huán)境下為機(jī)器間的網(wǎng)絡(luò)通訊,數(shù)據(jù)的傳輸 開(kāi)銷相對(duì)較大。另外,在實(shí)際的應(yīng)用中可通過(guò)適當(dāng)提高數(shù)據(jù)Spout的發(fā)送速率以及批數(shù)據(jù)的 大小來(lái)減少耗時(shí),但這樣會(huì)對(duì)分類的正確率和F值產(chǎn)生一定影響,但不一定是下降。
[0113] 表7三種環(huán)境下每5萬(wàn)條數(shù)據(jù)的平均耗時(shí)情況
[0115] (2)批數(shù)據(jù)消息的大小對(duì)性能的影響
[0116]批數(shù)據(jù)消息的規(guī)模,決定了過(guò)濾批化Bolt與模型Bolt間消息的大小與通信頻率。 批數(shù)據(jù)消息越小,過(guò)濾批化Bolt與模型Bolt通信越頻繁,否則,相反。不同批數(shù)據(jù)消息大小 的總體分類正確率、F值以及平均耗時(shí)分別見(jiàn)圖11、圖12和圖13。實(shí)驗(yàn)數(shù)據(jù)流包含500萬(wàn)條 100維實(shí)值型屬性的數(shù)據(jù),實(shí)驗(yàn)環(huán)境為單機(jī)多進(jìn)程。
[0117] 從圖11和圖12可以看出起先總體分類正確率與F值隨著批數(shù)據(jù)消息的增大呈緩慢 增長(zhǎng)的趨勢(shì)。這是因?yàn)楫?dāng)批數(shù)據(jù)消息的規(guī)模過(guò)小時(shí),通信量過(guò)高,待分類數(shù)據(jù)在模型Bolt的 接收消息隊(duì)列中比較分散,分類模型會(huì)相對(duì)過(guò)時(shí);隨著批數(shù)據(jù)消息的增大,過(guò)濾批化Bolt與 模型Bolt間通信量的不斷減少,網(wǎng)絡(luò)傳輸開(kāi)銷降低,待分類的數(shù)據(jù)在模型Bolt的接收消息 隊(duì)列中更為集中,模型更新的及時(shí)性會(huì)有輕微提高。但當(dāng)批數(shù)據(jù)的規(guī)模過(guò)大時(shí),將使得總體 正確率與F值降低,這是因?yàn)槟P虰olt需要根據(jù)批數(shù)據(jù)消息進(jìn)行模型更新,批數(shù)據(jù)規(guī)模過(guò)大 將導(dǎo)致過(guò)多的局部計(jì)算結(jié)果消息在模型Bolt的接收消息隊(duì)列中,從而導(dǎo)致模型更新不及 時(shí)。從圖13可以看出P-VFDT算法耗時(shí)基本上隨著批數(shù)據(jù)消息的增大而上升,但在早期有一 次下降。
[0118] 綜合以上分析,可發(fā)現(xiàn)批數(shù)據(jù)消息的規(guī)模對(duì)算法的性能有一定影響,批數(shù)據(jù)消息 的規(guī)模過(guò)大或過(guò)小都對(duì)會(huì)使算法的性能降低,在實(shí)際的應(yīng)用過(guò)程中應(yīng)不斷的調(diào)整批數(shù)據(jù)消 息的規(guī)模來(lái)達(dá)到正確率、F值與耗時(shí)的折中。
[0119] 在本說(shuō)明書(shū)中所談到的"一個(gè)實(shí)施例"、"另一個(gè)實(shí)施例"、"實(shí)施例"等,指的是結(jié)合 該實(shí)施例描述的具體特征、結(jié)構(gòu)或者特點(diǎn)包括在本申請(qǐng)概括性描述的至少一個(gè)實(shí)施例中。 在說(shuō)明書(shū)中多個(gè)地方出現(xiàn)同種表述不是一定指的是同一個(gè)實(shí)施例。進(jìn)一步來(lái)說(shuō),結(jié)合任一 個(gè)實(shí)施例描述一個(gè)具體特征、結(jié)構(gòu)或者特點(diǎn)時(shí),所要主張的是結(jié)合其他實(shí)施例來(lái)實(shí)現(xiàn)這種 特征、結(jié)構(gòu)或者特點(diǎn)也落在本發(fā)明的范圍內(nèi)。
[0120] 盡管這里參照發(fā)明的多個(gè)解釋性實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是,應(yīng)該理解,本 領(lǐng)域技術(shù)人員可以設(shè)計(jì)出很多其他的修改和實(shí)施方式,這些修改和實(shí)施方式將落在本申請(qǐng) 公開(kāi)的原則范圍和精神之內(nèi)。更具體地說(shuō),在本申請(qǐng)公開(kāi)權(quán)利要求的范圍內(nèi),可以對(duì)主題組 合布局的組成部件和/或布局進(jìn)行多種變型和改進(jìn)。除了對(duì)組成部件和/或布局進(jìn)行的變型 和改進(jìn)外,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),其他的用途也將是明顯的。
【主權(quán)項(xiàng)】
1. 一種面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于:所述的方法包括W下步驟: 步驟一、數(shù)據(jù)Spout 數(shù)量為1,連續(xù)產(chǎn)生數(shù)據(jù)記錄; 步驟二、過(guò)濾批化Bo 11 數(shù)量為1,接收數(shù)據(jù)消息,對(duì)收集的數(shù)據(jù)進(jìn)行過(guò)濾篩選,并積累成批發(fā)送給模型Bolt; 步驟Ξ、模型Bo It 數(shù)量為1,對(duì)一批數(shù)據(jù)進(jìn)行處理,將數(shù)據(jù)的分類結(jié)果,發(fā)送給評(píng)估Bo 11進(jìn)行評(píng)估;將數(shù)據(jù) 進(jìn)行分解,然后發(fā)送給局部統(tǒng)計(jì)與計(jì)算Bolt的對(duì)應(yīng)化sk;當(dāng)數(shù)據(jù)所在的葉節(jié)點(diǎn)通過(guò)劃分測(cè) 試時(shí),向局部統(tǒng)計(jì)與計(jì)算Bolt的所有化sk發(fā)送計(jì)算消息,請(qǐng)求劃分結(jié)果;收到局部統(tǒng)計(jì)與計(jì) 算Bolt的所有化sk發(fā)來(lái)的計(jì)算結(jié)果后,判斷是否執(zhí)行最終劃分,如果通過(guò)最終劃分測(cè)試,貝U 執(zhí)行劃分操作,并向局部統(tǒng)計(jì)與計(jì)算Bolt的所有Task發(fā)送刪除劃分前葉節(jié)點(diǎn)的統(tǒng)計(jì)信息的 消息; 步驟四、局部統(tǒng)計(jì)與計(jì)算Bolt 數(shù)量為η,收到批屬性數(shù)據(jù)消息時(shí),更新屬性相關(guān)統(tǒng)計(jì)信息; 收到計(jì)算消息時(shí),計(jì)算對(duì)應(yīng)節(jié)點(diǎn)的最優(yōu)劃分評(píng)估分?jǐn)?shù); 收到刪除消息時(shí),刪除模型中已經(jīng)完成分割的節(jié)點(diǎn)的屬性相關(guān)統(tǒng)計(jì)信息; 步驟五、評(píng)估Bolt。2. 根據(jù)權(quán)利要求1所述的面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于所述的步 驟Ξ包括: 當(dāng)模型Bolt收到批數(shù)據(jù)消息后,對(duì)于批數(shù)據(jù)消息中的每一條數(shù)據(jù),找到對(duì)應(yīng)的葉結(jié)點(diǎn), 并根據(jù)葉節(jié)點(diǎn)的數(shù)據(jù)類標(biāo)分布進(jìn)行分類,同時(shí)向評(píng)估Bolt發(fā)出分類結(jié)果的消息;如果數(shù)據(jù) 所在的葉節(jié)點(diǎn)已經(jīng)處于劃分狀態(tài),則無(wú)需使用該數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練,只執(zhí)行分類操作;否 貝1J,需要使用該數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練。3. 根據(jù)權(quán)利要求2所述的面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于所述的對(duì) 模型進(jìn)行訓(xùn)練包括: 首先更新葉節(jié)點(diǎn)的數(shù)據(jù)類標(biāo)分布,然后將數(shù)據(jù)分解為W節(jié)點(diǎn)編號(hào)、屬性編號(hào)、屬性值的 立元組,并添加到節(jié)點(diǎn)的屬性消息列表中,根據(jù)節(jié)點(diǎn)的屬性消息列表生成批屬性消息,同時(shí) 將葉節(jié)點(diǎn)加入到批數(shù)據(jù)所在葉節(jié)點(diǎn)的集合中。4. 根據(jù)權(quán)利要求1所述的面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于所述的步 驟四中,在局部統(tǒng)計(jì)與計(jì)算Bolt中使用的數(shù)據(jù)結(jié)構(gòu)包括一個(gè):節(jié)點(diǎn)id,屬性id,屬性統(tǒng)計(jì)信 息的表格localTable,該Bolt的每一個(gè)Task都有一個(gè)localTable。5. 根據(jù)權(quán)利要求1所述的面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于所述的步 驟四中,對(duì)批屬性消息的處理是根據(jù)消息中的節(jié)點(diǎn)id和屬性id,更新屬性的統(tǒng)計(jì)信息。6. 根據(jù)權(quán)利要求1所述的面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于所述的步 驟四中,對(duì)計(jì)算消息的處理是通過(guò)節(jié)點(diǎn)id,計(jì)算localTable中該節(jié)點(diǎn)的所有屬性的可行劃 分,找出最優(yōu)和次優(yōu)劃分并作為局部計(jì)算結(jié)果返回。7. 根據(jù)權(quán)利要求1所述的面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于所述的步 驟四中,對(duì)刪除消息的處理是根據(jù)消息中的節(jié)點(diǎn)id,刪除localTable中該節(jié)點(diǎn)所有屬性的 統(tǒng)計(jì)信息。8. 根據(jù)權(quán)利要求1所述的面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于所述的步 驟五包括:并行與非并行算法性能對(duì)比和/或批數(shù)據(jù)消息的大小對(duì)性能的影響分析。9. 根據(jù)權(quán)利要求1所述的面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于所述的步 驟五包括實(shí)驗(yàn)分析,所述實(shí)驗(yàn)分析中的實(shí)驗(yàn)數(shù)據(jù)通過(guò)超平面生成算法生成;所述超平面生 成算法包括:設(shè)需要生成的數(shù)據(jù)維度為attNum,每一個(gè)維度對(duì)應(yīng)一個(gè)屬性,數(shù)據(jù)中噪聲比率 為noiseP,發(fā)生概念漂移的屬性數(shù)為化iftNum,概念漂移幅度為mag化ange,反向漂移概率 為sigmaPercentage,則數(shù)據(jù)的生成過(guò)程如下: 1 )、隨機(jī)初始化超平面的法向量,包括:隨機(jī)初始化各屬性的權(quán)重wei曲ts; 2) 、初始化發(fā)生概念漂移的各屬性方向sigmas,均為1; 3) 、生成attNum個(gè)0到1之間的隨機(jī)數(shù)作為各屬性的取值,并按照weights加權(quán)求和得到 S皿,同時(shí)對(duì)wei曲ts求和得到weights皿; 4) 、如果Slim > 則數(shù)據(jù)類標(biāo)為1,否則,數(shù)據(jù)類標(biāo)為0; 5) 、生成一個(gè)0到1之間的隨機(jī)數(shù)r,如果^noiseP,則修改數(shù)據(jù)類標(biāo)為相反類標(biāo),即噪聲 數(shù)據(jù); 6) 、對(duì)于前化iftNum個(gè)屬性,更新weights[i]為weights[i]+sigmas[i]Xmag化ange, 其中i為屬性編號(hào);生成一個(gè)0至Ijl之間的隨機(jī)數(shù)r,如果^sigma化rcentage,則修改sigmas [i ]為-Sigmas[ i ];每產(chǎn)生一條數(shù)據(jù)后,對(duì)應(yīng)的超平面為10. 根據(jù)權(quán)利要求1所述的面向海量數(shù)據(jù)流的實(shí)時(shí)并行分類方法,其特征在于所述的步 驟五中選取的分類評(píng)價(jià)指標(biāo)為正確率和F值,F(xiàn)值的公式化表述為其中P r e C i S i 0 η為準(zhǔn)確率,等于分類正確的正例數(shù)除W被分類為正例的數(shù)據(jù)總數(shù); recall為召回率,等于被正確分類的正例數(shù)量除W數(shù)據(jù)中實(shí)際正例的總量。
【文檔編號(hào)】G06F17/30GK106095921SQ201610406845
【公開(kāi)日】2016年11月9日
【申請(qǐng)日】2016年6月7日
【發(fā)明人】李川, 李旺龍
【申請(qǐng)人】四川大學(xué)