基于Mahout 命令的電影聚類(lèi)分析與實(shí)現論文

時(shí)間:2022-07-03 03:12:52 電影 我要投稿
  • 相關(guān)推薦

基于Mahout 命令的電影聚類(lèi)分析與實(shí)現論文

  摘要:研究使用mahout命令進(jìn)行電影聚類(lèi)分析,介紹了聚類(lèi)算法、分類(lèi)算法及推薦過(guò)濾算法等。同時(shí)結合mahout的特點(diǎn),分別呈現兩種算法即K-means與Canopy+K-means的原理,并采用從電影網(wǎng)站中爬取的幾十條數據對算法進(jìn)行測試與實(shí)現,兩種算法最終都直觀(guān)地得出此聚類(lèi)所代表的電影信息。

基于Mahout 命令的電影聚類(lèi)分析與實(shí)現論文

  關(guān)鍵詞:Mahout;聚類(lèi)分析;大數據;電影

  中圖分類(lèi)號:TP393文獻標志碼:A文章編號:1006-8228(2017)11-54-04

  0引言

  互聯(lián)網(wǎng)娛樂(lè )在大數據浪潮中迎來(lái)了新的挑戰,如何在各種網(wǎng)站海量的視頻中找到感興趣的內容就成了新的難題。中國電影產(chǎn)業(yè)正處于高速發(fā)展期,據中國電影產(chǎn)業(yè)《2017-2022年中國電影行業(yè)深度調研及投資前景預測報告》數據中顯示:國產(chǎn)電影2016年我國共生產(chǎn)故事片772部,動(dòng)畫(huà)片49部,科教片67部,記錄片32部,特種片24部,總計944部,超過(guò)前十年峰值,2016年國產(chǎn)電影放映率僅40%,相比美國100%上映率,資源嚴重浪費[1]。電影票房慘淡可能導致前期的巨大投入無(wú)法收回,因此電影人必須謹慎考慮每個(gè)因素對票房的影響,到底什么類(lèi)型的電影才能賣(mài)得好?這是本文數據分析要解決的問(wèn)題。電影網(wǎng)站上的數據非常龐大,抓取到的文本信息甚至需要以TB為單位來(lái)存儲,所以在進(jìn)行大數據量的代碼實(shí)現之前,要先對小數據集進(jìn)行測試,以驗證算法的可行性。

  1聚類(lèi)概述

  聚類(lèi)顧名思義是將同一類(lèi)事物或數據歸到同一類(lèi)型中,同一個(gè)類(lèi)中的對象有很大的相似性,不同類(lèi)之間的對象有很大的差異性。在機器學(xué)習中,要把大量的數據劃分為不同的類(lèi)型通常采用建模的方法。聚類(lèi)是搜索類(lèi)的無(wú)事先規則與分類(lèi)的標準的學(xué)習過(guò)程。與分類(lèi)不同,聚類(lèi)是無(wú)規則的學(xué)習,不依賴(lài)預先定義的類(lèi)或帶類(lèi)標記的實(shí)例,由聚類(lèi)學(xué)習算法自動(dòng)確定標記,而分類(lèi)學(xué)習的實(shí)例或數據對象有類(lèi)別標記[2]。聚類(lèi)分析是一種探索性的分析,不同分析者對于同一組數據進(jìn)行聚類(lèi)分析,所得到的聚類(lèi)數未必一致。

  2應用背景

  本文將從電影網(wǎng)站上爬取到的電影類(lèi)型匹配到所建數據庫中。利用數據清洗中的去重,將沒(méi)有匹配到任何電影類(lèi)型信息視為無(wú)用文本數據將其刪除。最后保留電影名稱(chēng),匹配到的類(lèi)型,詞與詞之間用空格分開(kāi)。然而這樣的文本向量是無(wú)法在分布式文件系統上進(jìn)行處理的,因此需要通過(guò)TF-IDF加權的方法,將詞文本進(jìn)行轉換,得到可處理的數據向量。

  TF-IDF是一種統計方法,即一個(gè)詞語(yǔ)在在一篇文章中或一個(gè)文件集或一個(gè)語(yǔ)料庫中出現次數越多,同時(shí)在所有文檔中出現次數越少,越能夠代表該文章。字詞的重要性隨著(zhù)它在文件中出現的次數成正比增加,但同時(shí)會(huì )隨著(zhù)它在語(yǔ)料庫中出現的頻率成反比下降。TF詞頻(termfrequency)是指某一個(gè)給定的詞語(yǔ)在該文件中出現的次數[4]。詞頻公式如圖1所示。

  單純使用TF還不足,需要進(jìn)行權重的設計即:一個(gè)詞語(yǔ)預測主題的能力越強則權重越大,反之權重越小。IDF逆向文件頻率(inversedocumentfrequency)就是在完成這樣的工作,某一特定詞語(yǔ)的IDF,是由總的文件數目除以包含該詞語(yǔ)之文件的數目,再將得到的值用log取對數得到。逆文檔頻率公式如圖2所示。

  在IDF中用一個(gè)語(yǔ)料庫(corpus)來(lái)模擬語(yǔ)言的使用環(huán)境。如果一個(gè)詞很常見(jiàn),那么分母就越大,逆文檔頻率就越小越接近0。為避免分母為0用加1法即:所有文檔都不包含該詞。TF-IDF公式如圖3所示。

  從圖3可得出,TF-IDF與一個(gè)詞在文檔中的出現次數成正比,與該詞在整個(gè)語(yǔ)言中的出現次數成反比,即提取關(guān)鍵詞的算法為計算出文檔的每個(gè)詞的TF-IDF值,然后按降序排列,取排在最前面的幾個(gè)詞。

  3Mahout算法

  Mahout算法大致分為聚類(lèi)、協(xié)同過(guò)濾和分類(lèi)三種。聚類(lèi)分析是當下科學(xué)研究中一個(gè)很活躍的領(lǐng)域,常用聚類(lèi)算法有:canopy聚類(lèi),k均值算法(k-means),模糊k均值,層次聚類(lèi),LDA聚類(lèi)等[3]。Mahout算法分析有以下幾種:

  3.1K-means聚類(lèi)

  在將電影類(lèi)型向量轉換為HDFS可處理的數據后,便可以進(jìn)行基于文本詞頻與TF-IDF的k-means聚類(lèi)。

  K-means算法是基于劃分的聚類(lèi)方法,首先選擇用戶(hù)指定的參數個(gè)數K為初始質(zhì)心,然后將事先輸入的n個(gè)數據對象劃分為k個(gè)聚類(lèi)以便使所獲得的聚類(lèi)滿(mǎn)足[5]:同一聚類(lèi)中的對象相似度較高,而不同聚類(lèi)中的對象相似度較低。聚類(lèi)相似度是利用各聚類(lèi)中對象的均值所獲得一個(gè)“中心目標”來(lái)進(jìn)行計算的。通常采用以下方法來(lái)實(shí)現:①與層次聚類(lèi)結合;②穩定性方法;③系統演化方法。

  K-means算法試圖找到使平凡誤差準則函數最小的簇,當潛在的簇形狀是凸面的,簇與簇之間區別較明顯,當簇的大小相近時(shí),其聚類(lèi)結果較理想。該算法時(shí)間復雜度為O(tKmn),與樣本數量線(xiàn)性相關(guān),所以,對于處理大數據集合,該算法效率高,且伸縮性較好。但該算法除了要事先確定簇數K和初始聚類(lèi)中心外,經(jīng)常以局部最優(yōu)結束,同時(shí)對“噪聲”和孤立點(diǎn)敏感[6],并且該方法不適用于發(fā)現非凸面形狀的簇或大小差別很大的簇。

  3.2Canopy算法

  Canopy主要思想是把聚類(lèi)分為兩個(gè)階段:第一階段,通過(guò)使用一個(gè)簡(jiǎn)單、快捷的距離計算方法把數據分為可重疊的子集,稱(chēng)為“canopy”;第二階段,通過(guò)使用一個(gè)精準、嚴密的距離計算方法來(lái)計算出現階段中同一個(gè)canopy的所有數據向量的距離[7]。這種方式和聚類(lèi)方式不同的地方在于使用了兩種距離計算方式,同時(shí)因為只計算了重疊部分的數據向量,所以達到了減少計算量的目的。

  Canopy算法的優(yōu)勢在于可以通過(guò)第一階段的粗糙距離計算方法把數據劃入不同的可重疊的子集中,然后只計算在同一個(gè)重疊子集中的樣本數據向量來(lái)減少對于需要距離計算的樣本數量。

  4算法與實(shí)現

  在影視網(wǎng)站上的數據十分龐大,本文從豆瓣網(wǎng)上收集了30條電影信息,其中10條是戲曲類(lèi)型電影,10條是愛(ài)情類(lèi)型電影,10條是動(dòng)作類(lèi)型電影,每一個(gè)電影信息都用一個(gè)txt文件保存,編碼格式為UTF-8。由于已知這30個(gè)測試數據集應聚成三類(lèi),將可直接進(jìn)行k-means算法的實(shí)現,也可以進(jìn)行Canopy結合K-means的算法實(shí)現,下面分別呈現兩種方法的代碼與結果[8]。

  4.1k-means實(shí)現

 、怒h(huán)境準備

  使用的Mahout版本為apache-mahout-distribution-

  0.12.2,使用的Hadoop版本為hadoop-2.4.1。

  將30個(gè)txt文件壓縮后上傳至遠程虛擬機,解壓至一個(gè)本地目錄。如/tmp/movie/txt。使用Mahout命令將文本文件轉換成SequenceFile,同時(shí)會(huì )將這么多小文本文件合并成一個(gè)Sequence,執行成功后,在本地的/tmp/movie/txt-seq目錄下生成了chunk-0文件,該文件格式為SequenceFile,將文本文件轉換成SequenceFile,Mahout提供了相應API。將轉換好的SequenceFile上傳至分布式文件系統上的/tmp/movie/txt-seq/目錄中。

 、平馕鯯equenceFile,轉換成向量表示

  Mahout聚類(lèi)算法使用向量空間(Vectors)作為數據,接下來(lái)在Hadoop上,使用之前生成的SequenceFile,轉換成向量表示。

 、沁\行K-Means

  使用tf-vectors作為輸入文件,即根據關(guān)鍵詞出現的頻率來(lái)進(jìn)行聚類(lèi)。

  輸出1,初始隨機選擇的中心點(diǎn);

  輸出2,聚類(lèi)過(guò)程、結果。

 、炔榭淳垲(lèi)結果

  由于Mahout的clusterdump命令只能在本地運行,因此需要將聚類(lèi)結果從HDFS下載到本地,其運行命令如表1所示。

  將文件下載到PC端本地并用notepad+查看dump出來(lái)的結果如表2所示。

  可以看出,一共有三個(gè)TopTerms,即聚成了三類(lèi):第一個(gè)聚類(lèi),文本的形式是詞=>詞頻,在每個(gè)聚類(lèi)中,出現次數越高的詞排名越靠前;第二個(gè)聚類(lèi),排名最高的詞匯是“動(dòng)作類(lèi)型”詞頻為0.9,說(shuō)明在K-means聚類(lèi)下,該聚類(lèi)收斂的效果非常好;第三個(gè)聚類(lèi),排名在第四位的是“戲曲類(lèi)型”電影,說(shuō)明該聚類(lèi)是關(guān)于戲曲類(lèi)型的,但是電影類(lèi)型并不是詞頻為0.9,說(shuō)明該聚類(lèi)中還有其他電影的信息,而對比第一個(gè)聚類(lèi),發(fā)現第三個(gè)聚類(lèi)中的確有一部分是重合的,說(shuō)明聚類(lèi)結果看似不理想,卻完全符合現實(shí)情況[9]。在運行K-means時(shí)使用的是tf-vectors,即基于詞頻進(jìn)行聚類(lèi),這是當已經(jīng)提取了關(guān)鍵詞后,每一個(gè)詞都是重要的,不會(huì )存在高頻無(wú)用詞,若使用tfidf-vectors,即基于詞頻-逆向文件頻率進(jìn)行測試,運行命令/結果幾乎相近。此處略。這說(shuō)明TF-IDF相比TF加權方法,更能提取出文本的特征值,從而使聚類(lèi)效果理想。

  4.2Canopy+K-means實(shí)現

  K-means算法是基于TF與TF-IDF加權方法的實(shí)現,Mahout的K-means算法提供了另一種選擇,即如果提供了初始化聚類(lèi)中心,隨機從輸入向量中生成K個(gè)點(diǎn),采用canopy算法將能得到初始化聚類(lèi)中心,并且mahout也有相應封裝好的jar包,直接從命令行進(jìn)行操作[10]。

 、胚\行Canopy

  使用tfidf-vectors進(jìn)行測試,因為T(mén)F-IDF方法更為有效地生成了一個(gè)聚類(lèi)結果,這個(gè)聚類(lèi)結果將直接用作初始化聚類(lèi)中心。

 、七\行K-Means

  這里只采用tfidf-vectors作為輸入向量,并且在-c后面用canopy聚類(lèi)結果。運行命令如表3所示。

 、遣榭淳垲(lèi)結果

  用dump將聚類(lèi)結果下來(lái),下載到PC端使用Notepad++查看如表4所示。

  以上數據顯示Canopy+K-means算法起到很好的聚類(lèi)結果,雖然關(guān)鍵詞的排序以及權重與K-means的結果有細微不同,這正說(shuō)明了兩種方法過(guò)程的不同,但都收斂到了很好的聚類(lèi)效果。

  5結束語(yǔ)

  本文闡述了K-means算法適合于已知聚類(lèi)數的測試數據;Canopy+K-means在基于TF-IDF加權技術(shù)下適用于對未知聚類(lèi)數的情況進(jìn)行聚類(lèi)。兩個(gè)方法最后都能有效地將電影類(lèi)型排序出聚類(lèi)結果,可以直觀(guān)地看出這一個(gè)聚類(lèi)代表的是哪一種電影類(lèi)型[11]。每一個(gè)聚類(lèi)中,根據權重的排序也可以很直觀(guān)地得到與該電影關(guān)聯(lián)度最大的類(lèi)型。這樣的映射是來(lái)源于數以萬(wàn)計的大數據中電影信息的綜合評估,是客觀(guān)的,是符合大數據挖掘機器學(xué)習核心理念的。本文用的是測試數據的實(shí)現,由于實(shí)際應用中數據的復雜性,多樣性,特別是對于多維數據和大型數據的情況下,參數會(huì )有變化。大量無(wú)關(guān)的屬性使得在所有維中存在類(lèi)的可能性幾乎為零,同一部電影會(huì )出現許多不同的類(lèi)型,會(huì )使電影類(lèi)型的權重下降,導致無(wú)法在聚類(lèi)結果中直觀(guān)地看出這一類(lèi)代表的是哪一類(lèi)電影,因此需要人為地提高電影類(lèi)型的權重,讓電影類(lèi)型在文本詞向量中重復若干次,相當于提高詞頻,而逆向詞頻頻率不變,以此提高電影類(lèi)型的TF-IDF權重。

【基于Mahout 命令的電影聚類(lèi)分析與實(shí)現論文】相關(guān)文章:

基于Web的網(wǎng)絡(luò )考試系統設計與實(shí)現論文07-03

關(guān)于基于C的在線(xiàn)考試系統設計與實(shí)現論文07-04

基于A(yíng)SP技術(shù)的在線(xiàn)考試系統設計與實(shí)現論文07-03

基于樹(shù)莓派的智能家居系統設計與實(shí)現論文07-03

基于GIS的現代物流管理系統設計與實(shí)現的論文07-03

簡(jiǎn)析基于MVC模式的高校實(shí)驗排課系統設計與實(shí)現論文07-03

淺談基于ZigBee 嵌入式智能家居控制系統的設計與實(shí)現論文07-03

淺談電影的論文07-03

電影蕭紅論文07-05

基于學(xué)生立場(chǎng)的設計教學(xué)的論文07-05

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆