一種基于Spark的半監(jiān)督隨機(jī)森林分類方法
【專利摘要】本發(fā)明公開了一種基于Spark的半監(jiān)督隨機(jī)森林分類方法,利用隨機(jī)森林算法在訓(xùn)練數(shù)據(jù)集合上采用有放回抽樣,列屬性上也采用有放回抽樣,因此在行方向和列方向都加入了隨機(jī)性,既保證了決策樹的多樣性,又不需要進(jìn)行樹剪枝,而且采用投票法決定類別,準(zhǔn)確率大大提高。因此,本發(fā)明提供的隨機(jī)森林算法在處理高維數(shù)據(jù)樣本時(shí)不需要進(jìn)行降維。不管是對(duì)于稀疏向量和稠密向量隨機(jī)森林算法都具有很好的效果。經(jīng)過(guò)多組實(shí)驗(yàn)驗(yàn)證,本發(fā)明提供的半監(jiān)督學(xué)習(xí)算法降低了分類模型錯(cuò)誤率均值;提升了計(jì)算性能。
【專利說(shuō)明】
一種基于Spark的半監(jiān)督隨機(jī)森林分類方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及機(jī)器學(xué)習(xí)分類算法技術(shù)領(lǐng)域,特別是一種spark通用并行框架、Tri-Training 半監(jiān)督分類和分布式隨機(jī)森林分類算法。
【背景技術(shù)】
[0002] 分類問(wèn)題是機(jī)器學(xué)習(xí)領(lǐng)域的范疇,是一種常用的數(shù)據(jù)分析技術(shù),主要用來(lái)確定某 目標(biāo)對(duì)象屬于哪個(gè)預(yù)定義的目標(biāo)類。在許多領(lǐng)域具有廣泛的應(yīng)用,包括數(shù)據(jù)挖掘、統(tǒng)計(jì)學(xué) 習(xí)、神經(jīng)網(wǎng)絡(luò)等。機(jī)器學(xué)習(xí)領(lǐng)域,常用的研究方法分為兩種,一類是監(jiān)督學(xué)習(xí),另一類是無(wú)監(jiān) 督學(xué)習(xí)。傳統(tǒng)的分類模型需要在帶標(biāo)簽樣本集合的基礎(chǔ)上訓(xùn)練得到,屬于監(jiān)督學(xué)習(xí)。實(shí)際應(yīng) 用中,對(duì)于數(shù)據(jù)的標(biāo)簽化工作受到各方面因素的限制,有時(shí)甚至需要付出昂貴的代價(jià)。而相 對(duì)于帶標(biāo)簽樣本,無(wú)標(biāo)簽樣本數(shù)據(jù)的獲取工作則相對(duì)簡(jiǎn)單,利用無(wú)標(biāo)簽樣本進(jìn)行學(xué)習(xí)的過(guò) 程,成為無(wú)監(jiān)督學(xué)習(xí)。而半監(jiān)督學(xué)習(xí)(Semi-supervised Learning)則是介于監(jiān)督學(xué)習(xí)和無(wú) 監(jiān)督學(xué)習(xí)之間的方法。它是在實(shí)際應(yīng)用的驅(qū)動(dòng)下而產(chǎn)生的一種學(xué)習(xí)方法,主要研究訓(xùn)練數(shù) 據(jù)中的部分信息缺失的背景下,如何獲得具有理想性能和推廣能力的學(xué)習(xí)模型。而半監(jiān)督 分類(Semi-supervised Classifi cat ion)方法中,從監(jiān)督學(xué)習(xí)的角度為出發(fā)點(diǎn),考慮在帶 標(biāo)簽樣本不足的情況下,如何利用無(wú)標(biāo)簽樣本的信息輔助分類模型的訓(xùn)練,從而提高模型 的泛化能力。
[0003] 目前,半監(jiān)督學(xué)習(xí)在不同領(lǐng)域具有廣泛應(yīng)用,從事機(jī)器學(xué)習(xí)領(lǐng)域的學(xué)者提出了許 多半監(jiān)督學(xué)習(xí)方法,主要分為:基于生成式模型、基于直推式學(xué)習(xí)、基于圖模型、協(xié)同訓(xùn)練 等。對(duì)于產(chǎn)生式模型,主要是在模型的優(yōu)化過(guò)程中進(jìn)行參數(shù)的估計(jì),由于一部分參數(shù)的估計(jì) 不需要樣本標(biāo)簽信息,因此在參數(shù)估計(jì)過(guò)程中引入無(wú)標(biāo)簽數(shù)據(jù)?;谥蓖剖綄W(xué)習(xí)中,研究較 多的是直推式支持向量機(jī)(Transductive Support Vector Machines),它的核心思想是優(yōu) 化問(wèn)題,通常只考慮某個(gè)特定的數(shù)據(jù)集,試圖最小化分類模型在該數(shù)據(jù)集上的誤差率。基于 圖模型的方法,是將樣本集合看作一個(gè)數(shù)據(jù)鄰接圖,利用無(wú)數(shù)據(jù)標(biāo)簽信息的需要對(duì)該圖進(jìn) 行分割。典型方法包括圖的最小分割(Graph MinCut),離散馬爾可夫隨機(jī)過(guò)程等。協(xié)同訓(xùn)練 方法是一般化的學(xué)習(xí)框架,它要求訓(xùn)練數(shù)據(jù)集包含兩個(gè)獨(dú)立且冗余的數(shù)據(jù)視圖,并能夠獨(dú) 立訓(xùn)練分類器,并給對(duì)方提供本身預(yù)測(cè)的置信度高的樣本進(jìn)行分類器的重新訓(xùn)練。其中基 于協(xié)同訓(xùn)練的有Self-Training、Co-Training、Tri-Training、Co-Forest等。然而目前的半 監(jiān)督分類算法都只能以單機(jī)模式處理小批量的數(shù)據(jù),無(wú)法處理大量數(shù)據(jù),也無(wú)法直接拿到 分布式平臺(tái)(如spark ,hadoop)上實(shí)現(xiàn)并運(yùn)行。需要對(duì)算法進(jìn)行改變,以適應(yīng)大規(guī)模分布式 集群計(jì)算。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,本發(fā)明的目的是在面對(duì)少量有標(biāo)簽數(shù)據(jù)和大量無(wú)標(biāo)簽數(shù)據(jù)時(shí),利用分 布式內(nèi)存計(jì)算平臺(tái)spark實(shí)現(xiàn)一個(gè)基于Tri-Training的半監(jiān)督隨機(jī)森林算法。以解決人工 標(biāo)記樣本成本過(guò)高、樣本數(shù)據(jù)過(guò)大單機(jī)無(wú)法快速執(zhí)行、訓(xùn)練樣本過(guò)少無(wú)法得到具有較高分 類準(zhǔn)確率的分類模型和無(wú)法利用大量廉價(jià)無(wú)標(biāo)簽數(shù)據(jù)等問(wèn)題。
[0005] 本發(fā)明的目的是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)的:
[0006] 本發(fā)明提供的一種基于Spark的半監(jiān)督隨機(jī)森林分類方法,包括以下步驟:
[0007] SI:將標(biāo)簽訓(xùn)練樣本切分為第一二標(biāo)簽訓(xùn)練樣本并用第一訓(xùn)練樣本訓(xùn)練第一隨機(jī) 森林模型~、第二隨機(jī)森林模型 <和第三隨機(jī)森林模型K ;
[0008] S2:針對(duì)第一隨機(jī)森林紀(jì),根據(jù)第二隨機(jī)森林C和第三隨機(jī)森林冗,對(duì)第二標(biāo)簽訓(xùn) 練樣本進(jìn)行分類,如果第二隨機(jī)森林< 和第三隨機(jī)森林< 的分類結(jié)果相同且都不等于標(biāo)簽 值,則錯(cuò)誤數(shù)加一;計(jì)算標(biāo)記錯(cuò)誤率4 ;
[0009] S3:根據(jù)第二隨機(jī)森林/《,和第三隨機(jī)森林 < 對(duì)無(wú)標(biāo)簽數(shù)據(jù)集U進(jìn)行分類,如果分類 結(jié)果相同則進(jìn)行類別標(biāo)注,如果不同則刪除,得到帶標(biāo)簽數(shù)據(jù)集
[0010] S4:判斷錯(cuò)誤率是否滿足條件:e丨Cep1,如果是,則進(jìn)行步驟S6;如果否,則將第一 隨機(jī)森林hi改為第一隨機(jī)森林/^1的上一輪的值;
[0011] S5:設(shè)置帶標(biāo)簽數(shù)據(jù)集/T1的初始值:
[0012] S6:判斷帶標(biāo)簽數(shù)據(jù)集是否滿足公式:4,如果是,則進(jìn)行步驟S8;如果否,則 對(duì)第一隨機(jī)森林Iu不做更新;
[0013] S7:判斷是否滿足公式 如果是,則進(jìn)行步驟S9;如果不滿足
,
但滿足 則進(jìn)行步驟SlO,如果都不滿足則第一隨機(jī)森林Iu不做 更新;
[0014] S8:根據(jù)公式十算并重新訓(xùn)練第一隨機(jī)森林h1;
[0015] S9:從帶標(biāo)簽數(shù)據(jù)集4中無(wú)放回抽樣,抽出數(shù)量滿足公: ,抽出的 樣本子集作為端,然后同步驟S9重新訓(xùn)練第一隨機(jī)森林hl;
[0016] S10:當(dāng)?shù)谝浑S機(jī)森林模型¥、第二隨機(jī)森林模型私和第三隨機(jī)森林模型<都不進(jìn) 行更新的時(shí)候結(jié)束半監(jiān)督學(xué)習(xí)分類模型訓(xùn)練,否則回到步驟S2繼續(xù)重復(fù)訓(xùn)練;
[0017] Sll:利用第一隨機(jī)森林模型紀(jì)、第二隨機(jī)森林模型私和第三隨機(jī)森林模型<對(duì)測(cè) 試樣本進(jìn)行分類。
[0018] 進(jìn)一步,所述步驟Sl中按照以下方式將標(biāo)簽訓(xùn)練樣本切分為第一標(biāo)簽訓(xùn)練樣本和 第二標(biāo)簽訓(xùn)練樣本:
[0019] 所述第一標(biāo)簽訓(xùn)練樣本為標(biāo)簽訓(xùn)練樣本的70-90%,第二標(biāo)簽訓(xùn)練樣本為標(biāo)簽訓(xùn) 練樣本的30-10%,并用第一標(biāo)簽訓(xùn)練樣本反復(fù)訓(xùn)練第一隨機(jī)森林模型允第二隨機(jī)森林模 型私和第三隨機(jī)森林模型K。
[0020] 播1 一來(lái)· WjItRifea磨S5中按照以下公式來(lái)計(jì)算帶標(biāo)簽數(shù)據(jù)集if1'的初始值:
[0021]
[0022] 其中,< 表示初始化的新標(biāo)記無(wú)標(biāo)簽數(shù)據(jù)集,為防止第一次迭代計(jì)算時(shí)如果I?大 小為〇無(wú)法滿足條件4|4|< 4吟|進(jìn)而無(wú)法進(jìn)行后續(xù)計(jì)算,利用上述公式初始化I?大??;因?yàn)?每一輪計(jì)算過(guò)程中都要判斷< <|/^|需要上一輪的ef和片1,而第〇次迭代不存在所 以給予人工初始化滿足判斷條件。
[0023] £丨表示;第t輪迭代,利用第t-Ι輪訓(xùn)練出的隨機(jī)森林Λ丨廣和/(m# i辛η)從無(wú)標(biāo)簽 數(shù)據(jù)集U中選擇高置信度的數(shù)據(jù)構(gòu)成然后用訓(xùn)練新的隨機(jī)森林¥。
[0024] e廣表示Zt3和<-2對(duì)1的標(biāo)記錯(cuò)誤率;
[0025] 4表示隨機(jī)森林C1和/C1(H^Wn)從無(wú)標(biāo)簽數(shù)據(jù)集U中選擇高置信度的數(shù)據(jù)構(gòu)成 數(shù)據(jù)集<,< 為/C1和C1對(duì)4的標(biāo)記錯(cuò)誤率。
[0026] 進(jìn)一步,所述標(biāo)記錯(cuò)誤率e丨的取值范圍為〇<? <0.5。
[0027] 由于采用了上述技術(shù)方案,本發(fā)明具有如下的優(yōu)點(diǎn):
[0028] 本發(fā)明提供的隨機(jī)森林算法在訓(xùn)練數(shù)據(jù)集合上采用有放回抽樣,列屬性上也采用 有放回抽樣,因此在行方向和列方向都加入了隨機(jī)性,既保證了決策樹的多樣性,又不需要 進(jìn)行樹剪枝,而且采用投票法決定類別,準(zhǔn)確率大大提高。因此,本發(fā)明提供的隨機(jī)森林算 法在處理高維數(shù)據(jù)樣本時(shí)不需要進(jìn)行降維。不管是對(duì)于稀疏向量和稠密向量隨機(jī)森林算法 都具有很好的效果。經(jīng)過(guò)多組實(shí)驗(yàn)驗(yàn)證,本發(fā)明提供的半監(jiān)督學(xué)習(xí)算法降低了分類模型錯(cuò) 誤率均值;提升了計(jì)算性能。
[0029] 本發(fā)明的其他優(yōu)點(diǎn)、目標(biāo)和特征在某種程度上將在隨后的說(shuō)明書中進(jìn)行闡述,并 且在某種程度上,基于對(duì)下文的考察研究對(duì)本領(lǐng)域技術(shù)人員而言將是顯而易見的,或者可 以從本發(fā)明的實(shí)踐中得到教導(dǎo)。本發(fā)明的目標(biāo)和其他優(yōu)點(diǎn)可以通過(guò)下面的說(shuō)明書來(lái)實(shí)現(xiàn)和 獲得。
【附圖說(shuō)明】
[0030] 本發(fā)明的【附圖說(shuō)明】如下。
[0031] 圖1為本發(fā)明的基于Spark的半監(jiān)督隨機(jī)森林分類算法流程示意圖。
[0032] 圖2為本發(fā)明的隨機(jī)森林訓(xùn)練流程示意圖。
[0033] 圖3為本發(fā)明的分類標(biāo)簽流程示意圖。
[0034] 圖4為本發(fā)明的隨機(jī)森林更新迭代流程示意圖。
【具體實(shí)施方式】
[0035]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0036] 實(shí)施例1
[0037]本發(fā)明提供的基于Spark的半監(jiān)督隨機(jī)森林分類方法具體原理如下所述:
[0038]根據(jù)Angluin和Laird的論文噪音學(xué)習(xí),如果訓(xùn)練集大小為m,噪音為n,錯(cuò)誤率為ε, c是個(gè)常暈。則滿足關(guān)系:
[0039] (1)
[0040] 為了簡(jiǎn)化計(jì)算,有必要計(jì)算常量c與錯(cuò)誤率平方的商。
[0041] ⑵
[0042]用U表示無(wú)標(biāo)簽數(shù)據(jù)集,L表示有標(biāo)簽數(shù)據(jù)集。hi,h2,h3表示三個(gè)隨機(jī)森林模型。 [0043] 對(duì)于hi在第t次tri-training訓(xùn)練循環(huán)中,先用h2,h3對(duì)U無(wú)標(biāo)簽數(shù)據(jù)集標(biāo)記,選擇 標(biāo)記相同的樣本并標(biāo)記,記為L(zhǎng)t,其標(biāo)記錯(cuò)誤率為然后用LU Lt表示新訓(xùn)練集,新訓(xùn)練集 大小為mt,也可以用I LU Lt I表示。同理第t-Ι輪分別表示為L(zhǎng)t-I1,L U Lt-I,mt-l,I LU L*-11。
[0044] 用η表示原始有標(biāo)簽數(shù)據(jù)集L的噪音,用Ilt表示ILULt I的噪音。則針對(duì)hi的第t次訓(xùn)
[0050] 因?yàn)楣?2)# = ^ c為常量,所以如果滿足則Ρ<εΜ,錯(cuò)誤率下降。所以L , 練。
[0045]
[0046]
[0047]
[0048]
[0049] 得到公式:
[0051]
[0052] 因?yàn)棣潜容^小,而弱分類器錯(cuò)誤率至少低于〇. 5,即〇 < ei,tf1 < 0.5。所以要滿足公 式(6)需和IOlLt-1U因?yàn)樾枰看斡?xùn)練都比上一次訓(xùn)練效果好,新加入 的樣本標(biāo)記錯(cuò)誤率<應(yīng)小于f p所以
[0053]
(7)
[0054] 可能出現(xiàn)I Lt I特別大,大出I廣11很多,而ei也小于<1。但出5
所 以當(dāng)I Lt I過(guò)大是需要對(duì)h2,h3新標(biāo)記的樣本進(jìn)行抽樣得到Lt,大小設(shè)為S。
[0055] C8>
[0056] 公式(8)的前提條件是ΙΛ1滿足公式(9),只有滿足公式(9)的情況下,Lt在抽樣之 后的大小仍然大于Lt 1。
[0057] (9)
[0058]上述是理論依據(jù)。其中有一個(gè)假設(shè)。h2,h3對(duì)無(wú)標(biāo)簽樣本U標(biāo)記,并選擇標(biāo)記相同的 樣本,^是此標(biāo)記錯(cuò)誤率,但此標(biāo)記錯(cuò)誤率是無(wú)法評(píng)估的。不過(guò)有標(biāo)簽樣本和無(wú)標(biāo)簽樣本是 獨(dú)立同分布的??梢杂胔2,h3對(duì)L有標(biāo)簽樣本中的部分樣本分類,并計(jì)算分類錯(cuò)誤率,來(lái)模擬 4。此處選擇有標(biāo)簽樣本L的子集的方法有兩種,一種是選擇h2,h3上次構(gòu)建時(shí)抽樣沒有選 擇到的部分L樣本。這種細(xì)微化的操作在分布式環(huán)境下很難做到或者空間時(shí)間消耗過(guò)大。另 外一種是,在第一次訓(xùn)練之前就取一小部分帶標(biāo)簽數(shù)據(jù)(如L的20%),單獨(dú)用于計(jì)算不用 來(lái)做分類模型訓(xùn)練。
[0059]本實(shí)施例提供的基于Spark的半監(jiān)督隨機(jī)森林算法的具體步驟如下:
[0060] (1)將有標(biāo)簽訓(xùn)練樣本切分為兩份一份80%,一份20%,并用80%的訓(xùn)練樣本反復(fù) 訓(xùn)練三個(gè)隨機(jī)森林模型,這80%的訓(xùn)練樣本即為理論支撐中的L。每次訓(xùn)練是無(wú)需對(duì)有標(biāo)簽 樣本進(jìn)行有放回抽樣,因?yàn)殡S機(jī)森林的訓(xùn)練已經(jīng)在行抽樣和列屬性抽樣上加入了隨機(jī)性。 隨機(jī)森林的訓(xùn)練是基于分布式環(huán)境下的改進(jìn)優(yōu)化算法。主要實(shí)現(xiàn)了三個(gè)優(yōu)化策略:切分點(diǎn) 抽樣統(tǒng)計(jì)、特征裝箱、逐層訓(xùn)練。本實(shí)施例提供的spark的隨機(jī)森林算法實(shí)現(xiàn)了這三個(gè)優(yōu)化 策略,spark隨機(jī)森林算法為本半監(jiān)督算法中的一部分,即spark開源的隨機(jī)森林算法。
[0061 ] (2)使用另一份20%的有標(biāo)簽訓(xùn)練樣本。針對(duì)每一個(gè)隨機(jī)森林#,用另外兩個(gè)隨機(jī) 森林^,對(duì)帶標(biāo)簽樣本點(diǎn)point分類,如果<,€的分類結(jié)果相同且都不等于真實(shí)標(biāo)簽 值,則錯(cuò)誤數(shù)加一。計(jì)算標(biāo)記錯(cuò)誤率<。
[0062] (3)使用無(wú)標(biāo)簽數(shù)據(jù)集U。針對(duì)每個(gè)隨機(jī)森林紀(jì),用另外兩個(gè)隨機(jī)森林<和< 對(duì)無(wú) 標(biāo)簽數(shù)據(jù)點(diǎn)分類,如果分類結(jié)果相同則進(jìn)行類別標(biāo)注,不同則篩選掉,得到帶標(biāo)簽的數(shù)據(jù)集
[0063] 本實(shí)施例的帶標(biāo)簽的數(shù)據(jù)集L:采用如下方法:若<和/<對(duì)無(wú)標(biāo)簽數(shù)據(jù)點(diǎn)p的分類 都為類c,則將帶標(biāo)簽數(shù)據(jù)<c,P>添加到帶標(biāo)簽數(shù)據(jù)集右
[0064] (5)針對(duì)隨機(jī)森林<,如果< <<則進(jìn)行第(6)步,否則,隨機(jī)森林Iu改為上一輪的 隨機(jī)森林&Γ1。
[0065] (6)針對(duì)隨機(jī)森林¥,如果IT1的大小為〇(也就是初始化的時(shí)候把|4|都設(shè)為〇,把4 都設(shè)為0.5),則i
。其中,為了避免第一輪迭代計(jì)算時(shí)I右I數(shù)值太大,無(wú)法滿 足即(8)中公式需要計(jì)算帶標(biāo)簽數(shù)據(jù)集Zf1的初始值;
[0066] 其中,< 表示初始化的新標(biāo)記無(wú)標(biāo)簽數(shù)據(jù)集,為防止第一次迭代計(jì)算時(shí)如果#大 小為〇無(wú)法滿足條件¥|4|<<吟|進(jìn)而無(wú)法進(jìn)行后續(xù)計(jì)算,利用上述公式初始化Z?大?。灰?yàn)?每一輪計(jì)算過(guò)程中都要判斷私I <<?4_?需要上一輪的 < 和#,而第〇次迭代不存在所 以給予人工初始化滿足判斷條件。
[0067] 在表示;第t輪迭代,利用第t-Ι輪訓(xùn)練出的隨機(jī)森林和/ifU辛i辛η)從無(wú)標(biāo)簽 數(shù)據(jù)集U中選擇高置信度的數(shù)據(jù)構(gòu)成私,然后用LuL:訓(xùn)練新的隨機(jī)森林/^。
[0068] C1表示/C2和^對(duì)P的標(biāo)記錯(cuò)誤率;
[0069] <表示隨機(jī)森林t和/^從無(wú)標(biāo)簽數(shù)據(jù)集U中選擇高置信度的數(shù)據(jù)構(gòu)成 數(shù)據(jù)集篇,4為C1和Λ,"對(duì)右的標(biāo)記錯(cuò)誤率。
[0070] (7)針對(duì)隨機(jī)森林圮,如果#< g則進(jìn)行第⑶步,否則此次隨機(jī)森林Ill不做更新。
[0071] (8)針對(duì)隨機(jī)森林¥,如·
W進(jìn)行第(9)步,如果不滿足
?則進(jìn)行第(10)步,如果都不滿足則此次隨機(jī)森林Iu不做 更新。
[0072] (9)利用重新訓(xùn)練隨機(jī)森林hi。
[0073] (10)從數(shù)據(jù)集與中無(wú)放回抽樣,抽出數(shù)量滿足公式(8),抽出的樣本子集作為寫, 然后同第(9)步重新訓(xùn)練隨機(jī)森林lu。
[0074] (11)當(dāng)一輪迭代三個(gè)隨機(jī)森林都不進(jìn)行更新的時(shí)候結(jié)束半監(jiān)督學(xué)習(xí)分類模型訓(xùn) 練。否則回到第(2)步繼續(xù)訓(xùn)練。
[0075]分類預(yù)測(cè):
[0076]使用訓(xùn)練好的三個(gè)隨機(jī)森林模型對(duì)測(cè)試樣本進(jìn)行分類投票,票數(shù)高的分類類標(biāo)作 為分類結(jié)果。
[0077]本實(shí)施例提供的算法可抽象為無(wú)限循環(huán)的三個(gè)大步驟:選無(wú)標(biāo)簽數(shù)據(jù)、三個(gè)森林 投票分類、選得票高的當(dāng)做有標(biāo)簽的數(shù)據(jù)加上以前的訓(xùn)練數(shù)據(jù)再次訓(xùn)練更新hi。
[0078] 4是本輪選數(shù)據(jù)時(shí)選出的高得票的。由于在選4的時(shí)候?yàn)榱讼拗?訓(xùn)練集的大小, 如果過(guò)大就不滿足I < 了,后面用過(guò)大的C更新hi就得不到更優(yōu)的模型,所以本 實(shí)施例采用無(wú)放回的抽取。
[0079] 數(shù)據(jù)選好之后隨機(jī)森林hi是用訓(xùn)練集丨重新訓(xùn)練更新。使用標(biāo)準(zhǔn)的隨機(jī)森林 算法,隨機(jī)森林是由多棵決策樹構(gòu)成,每棵決策樹在ZuL丨上有放回抽樣選取數(shù)據(jù)點(diǎn)作為訓(xùn) 練集(每個(gè)決策樹的訓(xùn)練集不一樣),屬于行隨機(jī)性。每個(gè)數(shù)據(jù)點(diǎn)可能有幾個(gè)到幾十個(gè)的屬 性。隨機(jī)有放回抽取一部分屬性做決策樹訓(xùn)練(每個(gè)決策樹有放回抽取的屬性集不一樣), 屬于列隨機(jī)性;因此行隨機(jī)性和列隨機(jī)性是隨機(jī)森林算法的特性,兩個(gè)隨機(jī)性保證了決策 樹的多樣,進(jìn)而保證了這個(gè)森林的多樣。
[0080] 下面結(jié)合模型訓(xùn)練流程更詳細(xì)地說(shuō)明本發(fā)明提供的基于spark的半監(jiān)督隨機(jī)森林 算法,所述模型訓(xùn)練流程圖分三個(gè)大步,如圖2-4所示,其中圖中每個(gè)方框代表一個(gè)spark RDD,具體流程圖如下:
[00811圖2中,L表示有標(biāo)簽的數(shù)據(jù)集,對(duì)L進(jìn)行切分,LA是L的80%,LB是L的20%。利用LA 和s p a r k M11 i b機(jī)器學(xué)習(xí)庫(kù)中的隨機(jī)森林算法,重復(fù)三次訓(xùn)練,訓(xùn)練出隨機(jī)森林 RandomForestA(RFA)、RandomForestB(RFB)、RandomForest(RFC);
[0082] 圖3中,方框都表示spark RDD,point表示數(shù)據(jù)點(diǎn),labelA、labelB、labelC分別代 表隨機(jī)森林RFA、RFB、RFC對(duì)point分類預(yù)測(cè)得到的分類標(biāo)簽。Label代表有標(biāo)簽數(shù)據(jù)集LB中 數(shù)據(jù)點(diǎn)的真實(shí)分類標(biāo)簽。首先利用RFA、RFB、RFC分別對(duì)所有LB中的point分類得到labelA, labelB,labelC。之后利用spark RDD的操作,RDD轉(zhuǎn)換過(guò)濾得到三個(gè)分類錯(cuò)誤率。
[0083]圖4中,U表示無(wú)標(biāo)簽數(shù)據(jù)集,先利用RFA、RFB、RFC分別對(duì)所有U中的Po int分類得到 IabelA,labelB, labelC。然后經(jīng)過(guò)RDD轉(zhuǎn)換過(guò)濾分別得到高置信度的數(shù)據(jù)集,最后根據(jù)前述 步驟中的條件更新隨機(jī)森林1^^、1^8、1^(:,如果無(wú)隨機(jī)森林得到更新則訓(xùn)練結(jié)束,如果有隨 機(jī)森林進(jìn)行了更新則回到圖3所述步驟利用新的隨機(jī)森林繼續(xù)迭代計(jì)算。
[0084]模型構(gòu)建完成之后分類預(yù)測(cè)部分使用三個(gè)隨機(jī)森林模型對(duì)待分類樣本進(jìn)行投票 分類。
[0085]本實(shí)施例提供的算法主要體現(xiàn)在以下五個(gè)方面:
[0086]將tri-training半監(jiān)督分類算法與spark隨機(jī)森林算法結(jié)合實(shí)現(xiàn)半監(jiān)督分類。 [0087] 使用分布式環(huán)境下基于RDD內(nèi)存計(jì)算的方式實(shí)現(xiàn)tri-training半監(jiān)督學(xué)習(xí),并在 算法步驟有做了一些改進(jìn)。分布式:(2)(3) (9)(10)多線程:(5)(6)(7) (8)(8)(10)并行計(jì) 算:⑵⑶(9)(10)〇
[0088] 分布式環(huán)境下基于spark的RDD并行化處理。分別表現(xiàn)為:基于多線程并行初始化 三個(gè)隨機(jī)森林(線程內(nèi)部基于RDD分布式計(jì)算);基于RDD并行計(jì)算< ;基于RDD并行計(jì)算;; 基于多線程(線程內(nèi)部根據(jù)理論分析條件和RDD操作)并行更新隨機(jī)森林模型。
[0089]
[0090]當(dāng)< 廣時(shí),說(shuō)明最新的訓(xùn)練模型<相比前一次的訓(xùn)練模型A廣沒有減少反而增 加了誤差,所以Iu保存為上一輪的訓(xùn)練模型P。
[0091] 本實(shí)施例采用MINIST數(shù)據(jù)庫(kù)。此數(shù)據(jù)庫(kù)是Google實(shí)驗(yàn)室的Corinna Cortes和紐約 大學(xué)柯郎研究所的YannLeCun建立的一個(gè)手寫數(shù)字?jǐn)?shù)據(jù)庫(kù)。含有8100000條帶標(biāo)簽數(shù)據(jù)。類 別有10類,特征有784個(gè)。數(shù)據(jù)采用Iibsvm數(shù)據(jù)格式。
[0092] 實(shí)驗(yàn)一:使用1600條有標(biāo)簽數(shù)據(jù)作為訓(xùn)練集LA,400條有標(biāo)簽數(shù)據(jù)作為訓(xùn)練集LB, 98000條無(wú)標(biāo)簽數(shù)據(jù)作為U,100000條帶標(biāo)簽數(shù)據(jù)作為測(cè)試集。進(jìn)行本發(fā)明算法的半監(jiān)督分 類學(xué)習(xí)和訓(xùn)練。并與基于spark的隨機(jī)森林算法實(shí)驗(yàn)進(jìn)行對(duì)比。經(jīng)過(guò)多組實(shí)驗(yàn)驗(yàn)證,本發(fā)明 的半監(jiān)督學(xué)習(xí)算法得到的分類模型錯(cuò)誤率均值為19.168%。而基于spark的監(jiān)督隨機(jī)森林 模型的分類錯(cuò)誤率為22.86%。本次實(shí)驗(yàn)說(shuō)明本算法性能提升超過(guò)百分之三。
[0093] 實(shí)驗(yàn)二:使用1600條有標(biāo)簽數(shù)據(jù)作為訓(xùn)練集LA,400條有標(biāo)簽數(shù)據(jù)作為訓(xùn)練集LB, 298000條無(wú)標(biāo)簽數(shù)據(jù)作為U,700000條帶標(biāo)簽數(shù)據(jù)作為測(cè)試集。經(jīng)過(guò)多次實(shí)驗(yàn)本發(fā)明的半監(jiān) 督分類模型錯(cuò)誤率均值為19.276%。而基于spark的監(jiān)督隨機(jī)森林模型錯(cuò)誤率為25.24%。 性能提升在6%左右。本次實(shí)驗(yàn)中,通過(guò)不斷增加無(wú)標(biāo)簽訓(xùn)練集U的大小,觀察本發(fā)明半監(jiān)督 分類模型的分類錯(cuò)誤率變化。實(shí)驗(yàn)結(jié)果如下表1所示:
[0094] 表 1
[0096]實(shí)驗(yàn)結(jié)果證明了隨著訓(xùn)練樣本的增加,訓(xùn)練模型分類錯(cuò)誤率不斷下降。表明本發(fā) 明的分布式環(huán)境下的半監(jiān)督學(xué)習(xí)算法能起到預(yù)想的效果。
[0097]最后說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管參照較 佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技 術(shù)方案進(jìn)行修改或者等同替換,而不脫離本技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本發(fā)明 的權(quán)利要求范圍當(dāng)中。
【主權(quán)項(xiàng)】
1. 一種基于Spark的半監(jiān)督隨機(jī)森林分類方法,其特征在于:包括以下步驟: S1:將標(biāo)簽訓(xùn)練樣本切分為第一二標(biāo)簽訓(xùn)練樣本并用第一訓(xùn)練樣本訓(xùn)練第一隨機(jī)森林 模型Λ,'、第二隨機(jī)森林模型尺和第三隨機(jī)森林模型} S2:針對(duì)第一隨機(jī)森林以,根據(jù)第二隨機(jī)森林<和第三隨機(jī)森林<,對(duì)第二標(biāo)簽訓(xùn)練樣 本進(jìn)行分類,如果第二隨機(jī)森林 <,和第三隨機(jī)森林紀(jì)的分類結(jié)果相同且都不等于標(biāo)簽值, 則錯(cuò)誤數(shù)加一;計(jì)算標(biāo)記錯(cuò)誤率4; S3:根據(jù)第二隨機(jī)森林g和第三隨機(jī)森林欠對(duì)無(wú)標(biāo)簽數(shù)據(jù)集U進(jìn)行分類,如果分類結(jié)果 相同則進(jìn)行類別標(biāo)注,如果不同則刪除,得到帶標(biāo)簽數(shù)據(jù)集罵. S4:判斷錯(cuò)誤率是否滿足條件:4 ,如果是,則進(jìn)行步驟S6;如果否,則將第一隨機(jī) 森林hi改為第一隨機(jī)森林/f1的上一輪的值; S5:設(shè)置帶標(biāo)簽數(shù)據(jù)集/T1的初始值: S6:判斷帶標(biāo)簽數(shù)據(jù)集是否滿足公式:ir < 4,如果是,則進(jìn)行步驟S8;如果否,則對(duì)第 一隨機(jī)森林hi不做更新; S7:判斷是否滿足公式:如果是,則進(jìn)行步驟S9;如果不滿足 片?但滿足則進(jìn)行步驟S10,如果都不滿足則第一隨機(jī)森林lu不做 更新; S8:根據(jù)公式計(jì)算并重新訓(xùn)練第一隨機(jī)森林比; S9:從帶標(biāo)簽數(shù)據(jù)集局中無(wú)放回抽樣,抽出數(shù)量滿足公式抽出的樣本 子集作為4,然后同步驟S9重新訓(xùn)練第一隨機(jī)森林h1;S10:當(dāng)?shù)谝浑S機(jī)森林模型#、第二隨機(jī)森林模型私和第三隨機(jī)森林模型欠:都不進(jìn)行更 新的時(shí)候結(jié)束半監(jiān)督學(xué)習(xí)分類模型訓(xùn)練,否則回到步驟S2繼續(xù)重復(fù)訓(xùn)練; S11:利用第一隨機(jī)森林模型 <、第二隨機(jī)森林模型 <和第三隨機(jī)森林模型/<對(duì)測(cè)試樣 本進(jìn)行分類。2. 如權(quán)利要求1所述的基于Spark的半監(jiān)督隨機(jī)森林分類方法,其特征在于:所述步驟 S1中按照以下方式將標(biāo)簽訓(xùn)練樣本切分為第一標(biāo)簽訓(xùn)練樣本和第二標(biāo)簽訓(xùn)練樣本: 所述第一標(biāo)簽訓(xùn)練樣本為標(biāo)簽訓(xùn)練樣本的70-90%,第二標(biāo)簽訓(xùn)練樣本為標(biāo)簽訓(xùn)練樣 本的30-10%,并用第一標(biāo)簽訓(xùn)練樣本反復(fù)訓(xùn)練第一隨機(jī)森林模型瑢、第二隨機(jī)森林模型疋 和第三隨機(jī)森林模型圮。3. 如權(quán)利要求1所述的基于Spark的半監(jiān)督隨機(jī)森林分類方法,其特征在于:所述步驟 S5中按照以下公式來(lái)計(jì)算帶標(biāo)簽數(shù)據(jù)集iT的初始值:其中,表示初始化的新標(biāo)記無(wú)標(biāo)簽數(shù)據(jù)集; 4表示;第t輪迭代,利用第t-Ι輪訓(xùn)練出的隨機(jī)森林/^1和乒i乒η)從無(wú)標(biāo)簽數(shù)據(jù) 集U中選擇高置信度的數(shù)據(jù)構(gòu)成右,然后用1^//(訓(xùn)練新的隨機(jī)森林 表示C2和C 2對(duì)Ζ: 1的標(biāo)記錯(cuò)誤率; 劣表示隨機(jī)森林私;1和/CHm乒i乒η)從無(wú)標(biāo)簽數(shù)據(jù)集U中選擇高置信度的數(shù)據(jù)構(gòu)成數(shù)據(jù) 集4, 4為/t1和/C1對(duì)片的標(biāo)記錯(cuò)誤率。4.如權(quán)利要求1所述的基于Spark的半監(jiān)督隨機(jī)森林分類方法,其特征在于:所述標(biāo)記 錯(cuò)誤率e;的取值范圍為0 < 4(1 < 0 5。
【文檔編號(hào)】G06K9/62GK106056134SQ201610340166
【公開日】2016年10月26日
【申請(qǐng)日】2016年5月20日
【發(fā)明人】李學(xué)明, 馬超
【申請(qǐng)人】重慶大學(xué)