• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Mahout 命令的電影聚類分析與實現

      2017-11-18 08:45葉惠仙黃偉剛
      計算機時代 2017年11期
      關鍵詞:聚類分析電影大數據

      葉惠仙+黃偉剛

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

      關鍵詞: Mahout; 聚類分析; 大數據; 電影

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

      Implementing the clustering analysis of movies with Mahout

      Ye Huixian, Huang Weigang

      (Fujian Agricultural Vocational and Technical College, Fuzhou, Fujian 350007, China)

      Abstract: This paper studies the clustering analysis of movies using mahout, and introduces the clustering algorithm, classification algorithm and recommendation filtering algorithm. At the same time, combining with the characteristics of mahout, shows the principle of two kinds of algorithms respectively, i.e. K-means and Canopy+K-means, and the algorithms are tested and implemented with dozens of data climbed from movie website, both algorithms intuitively show the information of the movies represented by the cluster.

      Key words: Mahout; clustering; big data; movie

      0 引言

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

      1 聚類概述

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

      2 應用背景

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

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

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

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

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

      3 Mahout算法

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

      3.1 K-means聚類

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

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

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

      3.2 Canopy算法

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

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

      4 算法與實現

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

      4.1 k-means實現

      ⑴ 環(huán)境準備

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

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

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

      ⑵ 解析SequenceFile,轉換成向量表示

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

      ⑶ 運行K-Means

      使用tf-vectors作為輸入文件,即根據關鍵詞出現的頻率來進行聚類。

      輸出1,初始隨機選擇的中心點;

      輸出2,聚類過程、結果。

      ⑷ 查看聚類結果

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

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

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

      4.2 Canopy+K-means實現

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

      ⑴ 運行Canopy

      使用tfidf-vectors進行測試,因為TF-IDF方法更為有效地生成了一個聚類結果,這個聚類結果將直接用作初始化聚類中心。

      ⑵ 運行K-Means

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

      ⑶ 查看聚類結果endprint

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

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

      5 結束語

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

      參考文獻(References):

      [1] 袁義龍.基于Mahout的電影推薦引擎的設計與實現[D].北京

      郵電大學碩士學位論文,2014.

      [2] 孫天昊,黎安能,李明,朱慶生.基于Hadoop分布式改進聚類

      協同過濾推薦算法研究[J].計算機工程與應用,2015.15.

      [3] 趙偉,李俊鋒,韓英,張紅濤.Hadoop云平臺下的基于用戶協

      同過濾算法研究[J].計算機測量與控制,2015.6.

      [4] 劉文峰,顧君忠,林欣,陳鵬.基于Hadoop和Mahout的大數

      據管理分析系統[J].計算機應用與軟件,2015.1.

      [5] 路秋瑞.基于Hadoop的大規(guī)模數據排序算法研究[J].信息與

      電腦(理論版),2015.17.

      [6] 戴中華,盛鴻彬,王麗莉.基于Hadoop平臺的大數據分析與

      處理[J].通訊世界,2015.6.

      [7] 張效尉,陳亞峰,秦東霞.基于Hadoop的云存儲系統研究與

      實現[J].商丘師范學院學報,2015.9.

      [8] 黃學峰.基于Hadoop的電影推薦系統研究與實現[D].南京

      師范大學,2015.

      [9] 竇志成,文繼榮.大數據時代的互聯網分析引擎[J].大數據,

      2015.3.

      [10] 路小瑞.基于Hadoop平臺的職位推薦系統的設計與實現[D].

      上海交通大學碩士學位論文,2015.

      [11] 李龍飛.基于Hadoop+Mahout的智能終端云應用推薦引

      擎的研究與實現[D].電子科技大學碩士學位論文,2013.endprint

      猜你喜歡
      聚類分析電影大數據
      農村居民家庭人均生活消費支出分析
      基于省會城市經濟發(fā)展程度的實證分析
      基于聚類分析的互聯網廣告投放研究
      基于大數據背景下的智慧城市建設研究
      “縣級供電企業(yè)生產經營統計一套”表輔助決策模式研究
      湯姆?提克威影片的審美特征
      解讀張藝謀影片的視覺審美
      后現代視域下香港電影的解構與建構
      國產“現象級”影片的跨文化癥候
      永善县| 鄂伦春自治旗| 阿合奇县| 天全县| 常州市| 璧山县| 阳泉市| 开封县| 卓尼县| 二连浩特市| 桂平市| 铜川市| 长岛县| 上饶县| 郓城县| 利川市| 惠来县| 南部县| 石景山区| 轮台县| 深圳市| 揭东县| 翁源县| 镇远县| 含山县| 西城区| 哈尔滨市| 木兰县| 凉城县| 汾西县| 松桃| 类乌齐县| 洛隆县| 新田县| 永嘉县| 府谷县| 武鸣县| 池州市| 宁河县| 泌阳县| 玉树县|