- 相關(guān)推薦
基于Mahout 命令的電影聚類分析與實現(xiàn)論文
摘要:研究使用mahout命令進行電影聚類分析,介紹了聚類算法、分類算法及推薦過濾算法等。同時結(jié)合mahout的特點,分別呈現(xiàn)兩種算法即K-means與Canopy+K-means的原理,并采用從電影網(wǎng)站中爬取的幾十條數(shù)據(jù)對算法進行測試與實現(xiàn),兩種算法最終都直觀地得出此聚類所代表的電影信息。
關(guān)鍵詞:Mahout;聚類分析;大數(shù)據(jù);電影
中圖分類號:TP393文獻標(biāo)志碼:A文章編號:1006-8228(2017)11-54-04
0引言
互聯(lián)網(wǎng)娛樂在大數(shù)據(jù)浪潮中迎來了新的挑戰(zhàn),如何在各種網(wǎng)站海量的視頻中找到感興趣的內(nèi)容就成了新的難題。中國電影產(chǎn)業(yè)正處于高速發(fā)展期,據(jù)中國電影產(chǎn)業(yè)《2017-2022年中國電影行業(yè)深度調(diào)研及投資前景預(yù)測報告》數(shù)據(jù)中顯示:國產(chǎn)電影2016年我國共生產(chǎn)故事片772部,動畫片49部,科教片67部,記錄片32部,特種片24部,總計944部,超過前十年峰值,2016年國產(chǎn)電影放映率僅40%,相比美國100%上映率,資源嚴重浪費[1]。電影票房慘淡可能導(dǎo)致前期的巨大投入無法收回,因此電影人必須謹慎考慮每個因素對票房的影響,到底什么類型的電影才能賣得好?這是本文數(shù)據(jù)分析要解決的問題。電影網(wǎng)站上的數(shù)據(jù)非常龐大,抓取到的文本信息甚至需要以TB為單位來存儲,所以在進行大數(shù)據(jù)量的代碼實現(xiàn)之前,要先對小數(shù)據(jù)集進行測試,以驗證算法的可行性。
1聚類概述
聚類顧名思義是將同一類事物或數(shù)據(jù)歸到同一類型中,同一個類中的對象有很大的相似性,不同類之間的對象有很大的差異性。在機器學(xué)習(xí)中,要把大量的數(shù)據(jù)劃分為不同的類型通常采用建模的方法。聚類是搜索類的無事先規(guī)則與分類的標(biāo)準(zhǔn)的學(xué)習(xí)過程。與分類不同,聚類是無規(guī)則的學(xué)習(xí),不依賴預(yù)先定義的類或帶類標(biāo)記的實例,由聚類學(xué)習(xí)算法自動確定標(biāo)記,而分類學(xué)習(xí)的實例或數(shù)據(jù)對象有類別標(biāo)記[2]。聚類分析是一種探索性的分析,不同分析者對于同一組數(shù)據(jù)進行聚類分析,所得到的聚類數(shù)未必一致。
2應(yīng)用背景
本文將從電影網(wǎng)站上爬取到的電影類型匹配到所建數(shù)據(jù)庫中。利用數(shù)據(jù)清洗中的去重,將沒有匹配到任何電影類型信息視為無用文本數(shù)據(jù)將其刪除。最后保留電影名稱,匹配到的類型,詞與詞之間用空格分開。然而這樣的文本向量是無法在分布式文件系統(tǒng)上進行處理的,因此需要通過TF-IDF加權(quán)的方法,將詞文本進行轉(zhuǎn)換,得到可處理的數(shù)據(jù)向量。
TF-IDF是一種統(tǒng)計方法,即一個詞語在在一篇文章中或一個文件集或一個語料庫中出現(xiàn)次數(shù)越多,同時在所有文檔中出現(xiàn)次數(shù)越少,越能夠代表該文章。字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加,但同時會隨著它在語料庫中出現(xiàn)的頻率成反比下降。TF詞頻(termfrequency)是指某一個給定的詞語在該文件中出現(xiàn)的次數(shù)[4]。詞頻公式如圖1所示。
單純使用TF還不足,需要進行權(quán)重的設(shè)計即:一個詞語預(yù)測主題的能力越強則權(quán)重越大,反之權(quán)重越小。IDF逆向文件頻率(inversedocumentfrequency)就是在完成這樣的工作,某一特定詞語的IDF,是由總的文件數(shù)目除以包含該詞語之文件的數(shù)目,再將得到的值用log取對數(shù)得到。逆文檔頻率公式如圖2所示。
在IDF中用一個語料庫(corpus)來模擬語言的使用環(huán)境。如果一個詞很常見,那么分母就越大,逆文檔頻率就越小越接近0。為避免分母為0用加1法即:所有文檔都不包含該詞。TF-IDF公式如圖3所示。
從圖3可得出,TF-IDF與一個詞在文檔中的出現(xiàn)次數(shù)成正比,與該詞在整個語言中的出現(xiàn)次數(shù)成反比,即提取關(guān)鍵詞的算法為計算出文檔的每個詞的TF-IDF值,然后按降序排列,取排在最前面的幾個詞。
3Mahout算法
Mahout算法大致分為聚類、協(xié)同過濾和分類三種。聚類分析是當(dāng)下科學(xué)研究中一個很活躍的領(lǐng)域,常用聚類算法有:canopy聚類,k均值算法(k-means),模糊k均值,層次聚類,LDA聚類等[3]。Mahout算法分析有以下幾種:
3.1K-means聚類
在將電影類型向量轉(zhuǎn)換為HDFS可處理的數(shù)據(jù)后,便可以進行基于文本詞頻與TF-IDF的k-means聚類。
K-means算法是基于劃分的聚類方法,首先選擇用戶指定的參數(shù)個數(shù)K為初始質(zhì)心,然后將事先輸入的n個數(shù)據(jù)對象劃分為k個聚類以便使所獲得的聚類滿足[5]:同一聚類中的對象相似度較高,而不同聚類中的對象相似度較低。聚類相似度是利用各聚類中對象的均值所獲得一個“中心目標(biāo)”來進行計算的。通常采用以下方法來實現(xiàn):①與層次聚類結(jié)合;②穩(wěn)定性方法;③系統(tǒng)演化方法。
K-means算法試圖找到使平凡誤差準(zhǔn)則函數(shù)最小的簇,當(dāng)潛在的簇形狀是凸面的,簇與簇之間區(qū)別較明顯,當(dāng)簇的大小相近時,其聚類結(jié)果較理想。該算法時間復(fù)雜度為O(tKmn),與樣本數(shù)量線性相關(guān),所以,對于處理大數(shù)據(jù)集合,該算法效率高,且伸縮性較好。但該算法除了要事先確定簇數(shù)K和初始聚類中心外,經(jīng)常以局部最優(yōu)結(jié)束,同時對“噪聲”和孤立點敏感[6],并且該方法不適用于發(fā)現(xiàn)非凸面形狀的簇或大小差別很大的簇。
3.2Canopy算法
Canopy主要思想是把聚類分為兩個階段:第一階段,通過使用一個簡單、快捷的距離計算方法把數(shù)據(jù)分為可重疊的子集,稱為“canopy”;第二階段,通過使用一個精準(zhǔn)、嚴密的距離計算方法來計算出現(xiàn)階段中同一個canopy的所有數(shù)據(jù)向量的距離[7]。這種方式和聚類方式不同的地方在于使用了兩種距離計算方式,同時因為只計算了重疊部分的數(shù)據(jù)向量,所以達到了減少計算量的目的。
Canopy算法的優(yōu)勢在于可以通過第一階段的粗糙距離計算方法把數(shù)據(jù)劃入不同的可重疊的子集中,然后只計算在同一個重疊子集中的樣本數(shù)據(jù)向量來減少對于需要距離計算的樣本數(shù)量。
4算法與實現(xiàn)
在影視網(wǎng)站上的數(shù)據(jù)十分龐大,本文從豆瓣網(wǎng)上收集了30條電影信息,其中10條是戲曲類型電影,10條是愛情類型電影,10條是動作類型電影,每一個電影信息都用一個txt文件保存,編碼格式為UTF-8。由于已知這30個測試數(shù)據(jù)集應(yīng)聚成三類,將可直接進行k-means算法的實現(xiàn),也可以進行Canopy結(jié)合K-means的算法實現(xiàn),下面分別呈現(xiàn)兩種方法的代碼與結(jié)果[8]。
4.1k-means實現(xiàn)
、怒h(huán)境準(zhǔn)備
使用的Mahout版本為apache-mahout-distribution-
0.12.2,使用的Hadoop版本為hadoop-2.4.1。
將30個txt文件壓縮后上傳至遠程虛擬機,解壓至一個本地目錄。如/tmp/movie/txt。使用Mahout命令將文本文件轉(zhuǎn)換成SequenceFile,同時會將這么多小文本文件合并成一個Sequence,執(zhí)行成功后,在本地的/tmp/movie/txt-seq目錄下生成了chunk-0文件,該文件格式為SequenceFile,將文本文件轉(zhuǎn)換成SequenceFile,Mahout提供了相應(yīng)API。將轉(zhuǎn)換好的SequenceFile上傳至分布式文件系統(tǒng)上的/tmp/movie/txt-seq/目錄中。
、平馕鯯equenceFile,轉(zhuǎn)換成向量表示
Mahout聚類算法使用向量空間(Vectors)作為數(shù)據(jù),接下來在Hadoop上,使用之前生成的SequenceFile,轉(zhuǎn)換成向量表示。
、沁\行K-Means
使用tf-vectors作為輸入文件,即根據(jù)關(guān)鍵詞出現(xiàn)的頻率來進行聚類。
輸出1,初始隨機選擇的中心點;
輸出2,聚類過程、結(jié)果。
、炔榭淳垲惤Y(jié)果
由于Mahout的clusterdump命令只能在本地運行,因此需要將聚類結(jié)果從HDFS下載到本地,其運行命令如表1所示。
將文件下載到PC端本地并用notepad+查看dump出來的結(jié)果如表2所示。
可以看出,一共有三個TopTerms,即聚成了三類:第一個聚類,文本的形式是詞=>詞頻,在每個聚類中,出現(xiàn)次數(shù)越高的詞排名越靠前;第二個聚類,排名最高的詞匯是“動作類型”詞頻為0.9,說明在K-means聚類下,該聚類收斂的效果非常好;第三個聚類,排名在第四位的是“戲曲類型”電影,說明該聚類是關(guān)于戲曲類型的,但是電影類型并不是詞頻為0.9,說明該聚類中還有其他電影的信息,而對比第一個聚類,發(fā)現(xiàn)第三個聚類中的確有一部分是重合的,說明聚類結(jié)果看似不理想,卻完全符合現(xiàn)實情況[9]。在運行K-means時使用的是tf-vectors,即基于詞頻進行聚類,這是當(dāng)已經(jīng)提取了關(guān)鍵詞后,每一個詞都是重要的,不會存在高頻無用詞,若使用tfidf-vectors,即基于詞頻-逆向文件頻率進行測試,運行命令/結(jié)果幾乎相近。此處略。這說明TF-IDF相比TF加權(quán)方法,更能提取出文本的特征值,從而使聚類效果理想。
4.2Canopy+K-means實現(xiàn)
K-means算法是基于TF與TF-IDF加權(quán)方法的實現(xiàn),Mahout的K-means算法提供了另一種選擇,即如果提供了初始化聚類中心,隨機從輸入向量中生成K個點,采用canopy算法將能得到初始化聚類中心,并且mahout也有相應(yīng)封裝好的jar包,直接從命令行進行操作[10]。
、胚\行Canopy
使用tfidf-vectors進行測試,因為TF-IDF方法更為有效地生成了一個聚類結(jié)果,這個聚類結(jié)果將直接用作初始化聚類中心。
、七\行K-Means
這里只采用tfidf-vectors作為輸入向量,并且在-c后面用canopy聚類結(jié)果。運行命令如表3所示。
、遣榭淳垲惤Y(jié)果
用dump將聚類結(jié)果下來,下載到PC端使用Notepad++查看如表4所示。
以上數(shù)據(jù)顯示Canopy+K-means算法起到很好的聚類結(jié)果,雖然關(guān)鍵詞的排序以及權(quán)重與K-means的結(jié)果有細微不同,這正說明了兩種方法過程的不同,但都收斂到了很好的聚類效果。
5結(jié)束語
本文闡述了K-means算法適合于已知聚類數(shù)的測試數(shù)據(jù);Canopy+K-means在基于TF-IDF加權(quán)技術(shù)下適用于對未知聚類數(shù)的情況進行聚類。兩個方法最后都能有效地將電影類型排序出聚類結(jié)果,可以直觀地看出這一個聚類代表的是哪一種電影類型[11]。每一個聚類中,根據(jù)權(quán)重的排序也可以很直觀地得到與該電影關(guān)聯(lián)度最大的類型。這樣的映射是來源于數(shù)以萬計的大數(shù)據(jù)中電影信息的綜合評估,是客觀的,是符合大數(shù)據(jù)挖掘機器學(xué)習(xí)核心理念的。本文用的是測試數(shù)據(jù)的實現(xiàn),由于實際應(yīng)用中數(shù)據(jù)的復(fù)雜性,多樣性,特別是對于多維數(shù)據(jù)和大型數(shù)據(jù)的情況下,參數(shù)會有變化。大量無關(guān)的屬性使得在所有維中存在類的可能性幾乎為零,同一部電影會出現(xiàn)許多不同的類型,會使電影類型的權(quán)重下降,導(dǎo)致無法在聚類結(jié)果中直觀地看出這一類代表的是哪一類電影,因此需要人為地提高電影類型的權(quán)重,讓電影類型在文本詞向量中重復(fù)若干次,相當(dāng)于提高詞頻,而逆向詞頻頻率不變,以此提高電影類型的TF-IDF權(quán)重。
【基于Mahout 命令的電影聚類分析與實現(xiàn)論文】相關(guān)文章:
基于Web的網(wǎng)絡(luò)考試系統(tǒng)設(shè)計與實現(xiàn)論文07-03
關(guān)于基于C的在線考試系統(tǒng)設(shè)計與實現(xiàn)論文07-04
基于ASP技術(shù)的在線考試系統(tǒng)設(shè)計與實現(xiàn)論文07-03
基于樹莓派的智能家居系統(tǒng)設(shè)計與實現(xiàn)論文07-03
基于GIS的現(xiàn)代物流管理系統(tǒng)設(shè)計與實現(xiàn)的論文07-03
簡析基于MVC模式的高校實驗排課系統(tǒng)設(shè)計與實現(xiàn)論文07-03
淺談基于ZigBee 嵌入式智能家居控制系統(tǒng)的設(shè)計與實現(xiàn)論文07-03
淺談電影的論文07-03
電影蕭紅論文07-05