mahout分類算法

1.樸素貝葉斯(Naive Bayes)分類
Mahout目前支持兩種根據(jù)貝氏統(tǒng)計(jì)來(lái)實(shí)現(xiàn)內(nèi)容分類的方法。第一種方法是使用簡(jiǎn)單的支持MapReduce的Naive Bayes分類器。Naive Bayes分類器以速度快和準(zhǔn)確性高而著稱,但其關(guān)于數(shù)據(jù)的簡(jiǎn)單(通常也是不正確的)假設(shè)是完全獨(dú)立的。當(dāng)各類的訓(xùn)練示例的大小不平衡,或者數(shù)據(jù)的獨(dú)立性不符合要求時(shí),Naive Bayes分類器會(huì)出現(xiàn)故障。第二種方法是Complementary Naive Bayes,它會(huì)嘗試糾正Naive Bayes方法中的一些問(wèn)題,同時(shí)仍然能夠維持簡(jiǎn)單性和速度。
簡(jiǎn)單來(lái)講,Naive Bayes分類器包括兩個(gè)流程:跟蹤特定文檔及類別相關(guān)的特征(詞匯),然后使用此信息預(yù)測(cè)新的、未見過(guò)的內(nèi)容的類別。第一個(gè)步驟稱做訓(xùn)練(Training),它將通過(guò)查看已分類內(nèi)容的示例來(lái)創(chuàng)建一個(gè)模型,然后跟蹤與特定內(nèi)容相關(guān)的各個(gè)詞匯的概率。第二個(gè)步驟稱做分類,它將使用在訓(xùn)練階段中創(chuàng)建的模型及新文檔的內(nèi)容,并結(jié)合Bayes Theorem(貝葉斯定理)來(lái)預(yù)測(cè)傳入文檔的類別。因此,要運(yùn)行Mahout的分類器,首先需要訓(xùn)練模式,然后再使用該模對(duì)新內(nèi)容進(jìn)行分類。
2.支持向量機(jī)(SVM)
SVM可以完成分類任務(wù),每一個(gè)對(duì)象都被看做是n維特征空間中的點(diǎn),n是用來(lái)描述對(duì)象的特征數(shù)量,除此之外,每個(gè)對(duì)象都標(biāo)有一個(gè)二進(jìn)制標(biāo)簽,用來(lái)區(qū)分其是“正面的”還是“負(fù)面的”。在學(xué)習(xí)過(guò)程中,算法試圖在空間中找到一個(gè)超平面,此超平面可以把正面的和負(fù)面的對(duì)象完全分開。
3.神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)是一個(gè)用來(lái)進(jìn)行多維分類的方法,Mahout致力于實(shí)現(xiàn)帶有一個(gè)隱含層的反向傳播網(wǎng)絡(luò),因?yàn)檫@些網(wǎng)絡(luò)已經(jīng)在2006 NIPS Map Reduce Paper中體現(xiàn)。這些網(wǎng)絡(luò)不僅可以學(xué)習(xí)線性的分享超平面,還可以學(xué)習(xí)任意的決策邊界。
4.Perception與Winnow
這兩種算法都是相對(duì)簡(jiǎn)單的線性分類器,如果訓(xùn)練數(shù)據(jù)是在n維向量空間中并且?guī)в卸M(jìn)制標(biāo)簽作的注釋,算法就可以找到一個(gè)線性分類器(如果不存在)。與Perception相比,Winnow僅僅適用于二進(jìn)制特征矢量。
盡管這兩種算法都相對(duì)簡(jiǎn)單,但是對(duì)于文本分類來(lái)說(shuō)都具有較好的效果,并且能快速訓(xùn)練好數(shù)據(jù),即使是一些大型數(shù)據(jù)集。與Naive Bayes相比,這兩種算法不基于對(duì)象的所有特征都相對(duì)獨(dú)立。
目前,并行策略比較簡(jiǎn)單,首先有足夠的訓(xùn)練數(shù)據(jù),然后分塊,在每一塊上進(jìn)行分類器的訓(xùn)練。
5.隨機(jī)森林
在機(jī)器學(xué)習(xí)中,隨機(jī)森林(RF,Random Forests)是一個(gè)包含多個(gè)決策樹的分類器,并且其輸出的類別是由個(gè)別樹輸出類別的眾數(shù)而定的。
RF的想法是通過(guò)降低不同樹之間相關(guān)性的同時(shí)使得每棵樹的方差不增加太多,來(lái)達(dá)到降低bagging裝袋方差的效果。RF通過(guò)在每次分割時(shí)隨機(jī)選取不同的候選輸入變量來(lái)達(dá)到降低不同樹之間相關(guān)性的目的。RF的一個(gè)好處是它不會(huì)因?yàn)槭褂昧颂嗟臉涠鴮?dǎo)致最終的模型過(guò)擬合,這大概也是為什么它可以比較有效地用于組合多個(gè)算法的預(yù)測(cè)結(jié)果(如在Netflix Prize Challenge中)。并且使用RF之前對(duì)輸入數(shù)據(jù)不需要做預(yù)處理,即可以進(jìn)行rescale、transform操作或修改數(shù)據(jù)。
建造每棵樹的算法步驟如下:
(1)用N來(lái)表示訓(xùn)練例子的個(gè)數(shù),M表示變量的數(shù)目。
(2)定義一個(gè)數(shù)m用于當(dāng)做一個(gè)節(jié)點(diǎn)上的變量,m應(yīng)小于M。
(3)采用從N個(gè)訓(xùn)練案例中可重復(fù)取樣的方式,取樣N次,形成一組訓(xùn)練集,并使用這棵樹對(duì)剩余樣本預(yù)測(cè)其類別,同時(shí)評(píng)估其誤差。
(4)對(duì)于每一個(gè)點(diǎn),隨機(jī)選擇m個(gè)基于此點(diǎn)上的變量,根據(jù)這m個(gè)變量,計(jì)算最佳分隔方式。
(5)每棵樹都會(huì)完整成長(zhǎng)而不會(huì)剪枝。
RF的模型偏差比單棵樹的偏差要大,之所以它們的模型精確度更高,主要得益于它們的模型方差較低。