亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Spark與詞語相關度的KNN文本分類算法

        2018-03-20 09:14:15于蘋蘋倪建成韋錦濤姚彬修
        計算機技術與發(fā)展 2018年3期
        關鍵詞:分類文本

        于蘋蘋,倪建成,韋錦濤,曹 博,姚彬修

        (1.曲阜師范大學 信息科學與工程學院,山東 日照 276826;2.曲阜師范大學 軟件學院,山東 曲阜 273100)

        0 引 言

        隨著Internet技術以及社交媒體的發(fā)展,文本信息規(guī)模越來越大,如何高效地在海量文本信息中挖掘出有價值的信息成為當前的研究熱點[1]。文本分類技術作為文本處理的關鍵技術,在提高信息檢索、利用等方面應用廣泛。當前,使用較多的分類算法有樸素貝葉斯、支持向量機(support vector machine,SVM)、K-最近鄰(K-nearest neighbor,KNN)等[2]。由于KNN分類算法具有穩(wěn)定性強、準確率高等優(yōu)點,在數(shù)據挖掘領域得到了廣泛應用[3]。

        近年來,國內外學者對KNN分類算法的準確率和分類效率進行了深入研究。在準確率上,文獻[4]在傳統(tǒng)KNN文本分類算法的基礎上提出了一種基于關聯(lián)分析的KNN改進算法,能夠較好地確定K值,降低時間復雜度。文獻[5]提出了一種基于KNN文本分類的偽裝入侵檢測方法,使得有區(qū)分性的命令權重增大,有利于更準確地表示用戶的行為特征。在時間效率方面,Deng等[6]使用K-means方法對大規(guī)模訓練集進行聚類裁剪,從而減少相似度的計算,提高分類效率。同時,有研究者將KNN算法應用于分布式平臺,進一步提高分類效率。如文獻[7]將SVM分類算法與KNN分類算法相結合,利用Hadoop云計算平臺實現(xiàn)算法并行化。Anchalia等[8-9]依托MapReduce框架實現(xiàn)了KNN分類算法的并行化,縮短了分類時間。MapReduce框架[9]利用并行分布式計算模型對數(shù)據進行處理,是有效處理大數(shù)據集的關鍵所在。但研究人員在實驗中發(fā)現(xiàn)MapReduce在Hadoop[10]中具有限制性[11]:MapReduce在執(zhí)行過程中,每輪作業(yè)都需要重新啟動,開銷過大;同時,通過磁盤對數(shù)據進行I/O操作,執(zhí)行效率較低。而Spark框架[12]改善了以上問題,它通過建立彈性分布式數(shù)據集,在內存中對數(shù)據進行存取操作,加快了數(shù)據處理速度。

        分類算法中的距離機制直接影響分類效果。傳統(tǒng)KNN的距離機制僅通過詞頻計算兩樣本間的相似度,而在實際分類過程中,文本詞語間具有一定相關性。同時,在大數(shù)據環(huán)境中,數(shù)據集不斷增大,KNN分類算法的計算復雜度不斷增加,導致運行時間增多。

        因此,文中在KNN相似度計算過程中引入詞語相關度進行特征項加權,同時在Spark框架下實現(xiàn)KNN文本分類算法的并行化,以提高分類的準確度。

        1 相關技術

        1.1 KNN文本分類算法

        KNN分類算法的核心原理為:通過相應距離機制計算待測樣本與已知樣本的相似度,找出與待測樣本相似度最大的K個最近鄰樣本,利用決策函數(shù)判斷K個樣本中大多數(shù)屬于哪個類別,則待分類樣本也屬于這個類別,并具有這個類別上樣本的特性。

        余弦相似度計算公式如下:

        (1)

        其中,wik表示Di文本中第k個特征的權重。

        通過相似度計算得到K個相似度最大的樣本即K個最近鄰,并利用式(2)計算權重判斷最終歸類。

        (2)

        1.2 詞語間相關度

        一個詞條對于文檔的主題是否具有代表性與該詞條所在一定范圍內其他詞語在文檔中的出現(xiàn)頻率(同現(xiàn)頻率)是相關的[13],詞語間相關度指兩個詞語同時出現(xiàn)在一定語言范圍內的概率大小。

        計算方法如下:

        (1)依據文本預處理后特征空間基向量所包含的詞條個數(shù)定義一個N×N維的詞語相關度矩陣,其中N為特征空間中的基向量數(shù)目,基向量的一個詞條對應矩陣中的一維數(shù)據,矩陣內各對應值初始為0。

        (2)計算全部段落范圍內同時出現(xiàn)的詞條對得到段落同現(xiàn)頻率。在同一段落中,如果詞條Ti和詞條Tj同時出現(xiàn),則詞語相關度矩陣中的對應值加一。

        (3)直到所有文檔的所有段落都學習后停止。

        在得到對應的同現(xiàn)頻率后,即可計算相應的詞語相關度,詞條Ti和詞條Tj基于段落同時出現(xiàn)頻率的相關度RPij計算為:

        (3)

        其中,PFi和PFj表示詞條Ti和Tj在文檔dj中所有段落范圍內的出現(xiàn)頻率。

        1.3 Spark框架

        Spark是由UCBerkeley開發(fā)的一種基于內存的計算框架。Spark框架由兩個主要部分組成:彈性分布式數(shù)據集和并行運算。RDD是Spark框架計算中重要的概念,是Spark框架的核心和基礎。

        RDD是Spark框架的核心,是各個集群節(jié)點中數(shù)據共享的一種有效抽象。Spark所執(zhí)行的數(shù)據處理是基于RDD進行的。RDD是可并行的數(shù)據結構,同時允許用戶將數(shù)據存儲在內存中,方便用戶對數(shù)據的重復調用,減少了磁盤I/O的負載。RDD是不可變的集合,不能在原有RDD上實現(xiàn)內容的修改,只能創(chuàng)建一個新的RDD:

        (1)通過對文件共享系統(tǒng)(HBase、HDFS、Hive)的讀取得到RDD;

        (2)通過驅動程序中用作并行計算的Scala集合創(chuàng)建;

        (3)通過對已存在的RDD執(zhí)行轉換操作新建一個RDD;

        (4)通過持久化操作進而轉變現(xiàn)有的RDD。

        并行運算包括轉換(transform)和動作(action)。轉換操作只依據原有的RDD定義一個新的RDD,而不對它進行直接計算;動作是對某個值立即進行計算,并返回結果給驅動程序[14]。

        對RDD的控制還可利用緩存和分區(qū)操作。將RDD緩存在內存中,便于下次計算時的重復利用,減少了磁盤開銷。RDD可根據key來指定分區(qū)順序,將數(shù)據劃分到不同分區(qū)中。

        2 Spark框架下基于詞語相關度的KNN算法

        為了提高文本分類效率,分類算法的并行化處理是當前的一大趨勢,但通過研究發(fā)現(xiàn),在KNN文本分類的一般并行化過程中會降低分類準確率。因此文中在訓練樣本與待測樣本的相似度計算過程中引入詞語相關度,提高分類準確度并在Spark計算框架下實現(xiàn)并行化,降低運算時間。

        2.1 基于詞語相關度的相似度計算

        通常情況下,傳統(tǒng)KNN相似度計算方法單純使用TF-IDF[15]計算相關度,忽略了文本數(shù)據本身詞語間的關系,易導致文本內容表達的不完整,影響文本分類的準確率[16]。因此,定義合適的距離機制是分類準確的前提。文中在KNN分類算法相似度距離計算中引入詞語相關度概念。

        基于詞語相關度的權值通過該詞條詞頻與該詞條在一定語言范圍內其他詞的平均相關度的乘積而得到,選用段落范圍內詞語相關度。詞條Ti基于段落同現(xiàn)頻率的詞語相關度的加權值公式如下所示:

        (4)

        其中,K表示該文檔中除詞條Ti外其他詞條的個數(shù)。

        式(4)含義為:基于詞語相關度的權重等于原有的TF*IDF乘以平均相關度。通過該方法計算的平均相關度結果較小,不利于區(qū)分,所以添加區(qū)分系數(shù)ρ。則新的相似度計算公式為:

        (5)

        2.2 Spark框架下基于詞語相關度的KNN算法

        對傳統(tǒng)KNN文本分類算法的并行化處理會提高分類的效率,但并行化處理通常會降低分類的準確度。因此,文中在Spark框架下實現(xiàn)KNN算法并行化的同時引入詞語相關度對特征項進行加權處理,提高文本分類的準確度和分類效率。

        2.2.1 預處理并行化

        首先采用中科院分詞軟件ICTCLAS2015對數(shù)據集進行分詞、去除停用詞等預處理。去停詞結果以形式給出,并利用2.1中提出的基于詞語相關度的TF-IDF對向量進行計算,得到相應權重。在文本預處理之前,將訓練集與測試集提交到HDFS中并轉化為RDD對象,分發(fā)給每個節(jié)點,Map函數(shù)通過靜態(tài)方法UseDistributedCache()實現(xiàn)對緩存數(shù)據的調用。

        2.2.2 分類并行化

        在KNN算法并行化過程中,以MapReduce模型為基礎,采用Spark計算框架來實現(xiàn)算法的并行化。首先將訓練集D與測試集Ti在HDFS中讀取出來并建立RDD對象,然后將訓練集分割到相應分片中,并將數(shù)據集進行緩存以備重復利用,通過分區(qū)處理每個Map都將對相近數(shù)量的訓練集進行處理。

        文中并行化算法為了使分類準確,對每個測試樣本指定一個textID作為key值,然后利用RangePartitioner函數(shù)將測試集分成不同的子集Ti,進而通過轉換操作filterByRange函數(shù)將測試集Ti讀取進每一個Map任務中。算法1描述了此過程。

        算法1:Spark框架下基于詞語相關度的KNN算法。

        輸入:訓練集D,測試集T,K

        輸出:分類結果

        (1)將訓練集在HDFS中讀取并作為RDD對象讀取進Map中;

        (2)將測試集在HDFS中讀取并作為RDD對象;

        (3)對訓練集和測試集進行規(guī)范化處理,并緩存;

        (4)Map過程:

        使用式(5)計算測試樣本與訓練樣本的距離,并得到每個Map中最小的K個近鄰;

        將最小的K個近鄰建立成類別-距離組成的CD向量,并將CD定義進value值中;

        將結果發(fā)布給Reduce。

        (5)Reduce過程:

        在Map中讀取結果;

        更新距離CDnew向量。對于每個測試樣本,從最近的鄰居開始逐一比較每個鄰居的距離值,如果Map任務轉發(fā)來的距離小于當前值,則使用該值更新Reduce過程中相應位置的類和距離;否則,繼續(xù)與下一個值比較;

        通過判定公式計算最后分類;

        輸出結果。

        步驟(1)、(2)將訓練集與測試集在HDFS中讀取出來并建立為RDD對象,然后對訓練集D進行分片,同時設置K值。為了使分類準確,將測試集作為RDD讀取但是不與訓練集一起分片,而是根據key值讀取進每個map中比較每一個測試樣本和所有的訓練集。

        由于使用余弦相似度來計算樣本間的相似度,將兩個數(shù)據集在步驟(3)中進行規(guī)范化處理。同時,將數(shù)據集進行緩存以備重復利用。

        在Map過程中,首先利用式(5)計算測試樣本與每個分片中訓練樣本的相似度距離。通過相似度計算,在每個Map任務中都將得到最近的K個鄰居,將這K個鄰居的類別與相應的相似度距離保存為:CD,并將CD定義進value值中,即,同時根據相似度距離進行升序排列,如圖1所示。每進行一次Map任務處理,就啟動一次Reduce任務,并將中間結果轉發(fā)到Reduce任務中。

        每完成一次Map任務,Reduce就將CDnew中的距離值與來自Map中CD的對應距離值進行比較,直到得到最終K個近鄰。所有的值更新完畢后,CDnew將包含所有待測樣本的K個最近鄰的類和距離。最后,執(zhí)行KNN算法的判定函數(shù)確定測試集的所屬類別,并將結果作為Reduce階段的最終結果輸出。對于每個測試樣本,Reduce過程將采用ReduceByKey根據之前描述的函數(shù)聚集value。

        圖1給出了KNN分類并行化處理流程。

        圖1 Spark框架下KNN算法并行化過程

        3 實 驗

        3.1 實驗環(huán)境與數(shù)據集

        在Hadoop平臺上部署了Spark計算框架,通過Vcenter創(chuàng)建了6臺虛擬機,其中包含1個Master節(jié)點和5個Slave節(jié)點。虛擬機中操作系統(tǒng)均為Ubuntu 14.04.3-Server-amd64版本,Hadoop版本為2.6.0,Spark版本為1.4.0,Java開發(fā)包版本為jdk1.7.0_79,程序開發(fā)工具為Eclipse Mars.1 Release (4.5.1)。其中Master節(jié)點擔任NameNode角色,主要負責管理與調用并維護著所有文件的元數(shù)據,Slave節(jié)點擔任DataNode角色,根據NameNode的調用檢索和處理數(shù)據。

        數(shù)據集采用Sogou實驗室提供的分類語料庫,選擇語料庫中整理過的搜狐新聞網站新聞語料以及對應的分類信息。實驗中采用的文本為教育、互聯(lián)網、財經、軍事、旅游、體育、文化、健康、招聘等20大類,每個類別中有2 000篇文本,共40 000篇文檔。逐個在每個類別中隨機選取500篇文本組成訓練集。為了確保實驗的充分性和有效性,將剩余文本劃分為不同大小,組成不同規(guī)模的測試集,如表1所示。

        表1 測試集

        3.2 評價指標

        選用分類方法中常用的準確率(Pr)和查全率(Re)。準確率用于表示分類的正確性,即檢測出分類文檔中正確分類的文檔所占的比率;查全率表示分類的完整性,即所有應分類的文檔中被正確分類的文檔所占的比率,公式如下:

        (6)

        (7)

        同時為了綜合評價分類效果,使用F1值:

        (8)

        選用加速比對Spark并行化框架進行評價:

        (9)

        3.3 實驗結果與分析

        實驗首先基于詞語相關度對KNN算法的影響進行驗證。以準確率、查全率以及F1值為指標,在單一節(jié)點上對比基于詞語相關度算法、距離加權KNN算法以及傳統(tǒng)KNN算法的性能,如表2所示。

        表2 三種算法性能比較

        由表2可知,在串行狀態(tài)下,基于詞語相關度的算法較傳統(tǒng)KNN算法在準確率上提高了2.5~4.9個百分點。而與距離加權KNN算法相比,在小數(shù)據集上兩者分類準確率基本相似,但在較大數(shù)據集上,基于詞語相關度的KNN算法的準確率隨數(shù)據集的增大而逐漸提高。在查全率方面,文中算法較傳統(tǒng)KNN算法與距離加權都有所提高,平均查全率提高了1.3和0.34個百分點。在綜合指標F1中,可以看出文中算法分類效果更佳,較傳統(tǒng)KNN算法與加權KNN算法平均值各提高了2.35和0.24個百分點。因此,在串行狀態(tài)下,基于詞語相關度算法可以有效提高KNN文本算法的分類效果。

        為了驗證文中算法是否能夠有效彌補并行化過程中分區(qū)操作帶來的分類準確率下降的缺陷,對傳統(tǒng)KNN算法、基于Spark框架的傳統(tǒng)KNN算法(3個節(jié)點)以及Spark框架下基于詞語相關度優(yōu)化的KNN算法(3個節(jié)點)在不同測試集下進行了比較,結果如表3所示。

        表3 并行化算法性能比較

        由表3可知,在運行時間方面,Spark框架下基于詞語相關度的KNN算法運行時間較傳統(tǒng)KNN算法縮短了5%~26%,與Spark框架下的傳統(tǒng)KNN算法運行時間基本一致。表明Spark框架下的并行化KNN文本分類算法能夠實現(xiàn)大規(guī)模文本數(shù)據的分類。而在準確率上,Spark框架下的傳統(tǒng)KNN算法的準確度較串行狀態(tài)傳統(tǒng)KNN算法平均降低了2.1%,這是由于通常情況下的并行化算法要對數(shù)據集進行分區(qū)操作,會降低分類的準確度。而Spark框架下基于詞語相關度的KNN文本分類算法較串行狀態(tài)下的傳統(tǒng)KNN分類算法準確率平均提高了1.56個百分點,較Spark框架下的傳統(tǒng)KNN算法提高了3.68個百分點。這是由于使用詞語相關度對相似度進行了優(yōu)化,彌補了由并行化導致的準確度的影響。因此,文中利用詞語相關度建立的距離機制有效改善了通常情況下并行化分區(qū)操作對準確度的影響。

        在4個節(jié)點的情況下,Spark框架與Hadoop平臺中算法在5個不同規(guī)模數(shù)據集的運行時間如圖2所示。

        圖2 兩種架構運行時間比較

        由圖2可知,Hadoop在處理小數(shù)據集合時,運行時間較長,這是由于Hadoop平臺處理過程中磁盤I/O計算時花費時間較多,在處理小樣本時較為明顯。而Spark框架將數(shù)據存儲在內存中不需要磁盤I/O,因此在各規(guī)模數(shù)據集下運行時間平緩增長并優(yōu)于Hadoop。

        加速比主要用于衡量一個系統(tǒng)的擴展性能。當采用D4數(shù)據集時,Spark和Hadoop在不同節(jié)點下的加速比比較如圖3所示。

        圖3 兩種架構加速比比較

        由圖3可知,加速比在Spark框架下隨節(jié)點增加呈線性增長趨勢,由此可知隨著節(jié)點的增加能更好地提高分類處理效率,這說明Spark框架在處理KNN分類算法上具有較好的加速比。并且由此可知,節(jié)點數(shù)不斷增加時Spark的加速比優(yōu)勢將會更為凸顯。因此,Spark優(yōu)于Hadoop平臺具有較好的加速比,能夠高效地實現(xiàn)大數(shù)據集的處理。

        4 結束語

        針對KNN分類算法在當前大數(shù)據環(huán)境下的分類問題,結合詞語相關度對常用的KNN分類相似度進行優(yōu)化,并在Spark框架下實現(xiàn)算法的并行化,提高分類效率。實驗結果表明,文中提出的并行化算法在保證分類準確率的情況下,較傳統(tǒng)KNN算法在時間效率上有明顯提高。但該算法沒有考慮相似度中其他屬性值的影響,分類效果仍有可提高的空間。

        [1] 王小林,陸駱勇,邰偉鵬.基于信息熵的新的詞語相似度算法研究[J].計算機技術與發(fā)展,2015,25(9):119-122.

        [2] 蘇金樹,張博鋒,徐 昕.基于機器學習的文本分類技術研究進展[J].軟件學報,2006,17(9):1848-1859.

        [3] 王邦軍,李凡長,張 莉,等.基于改進協(xié)方差特征的李-KNN分類算法[J].模式識別與人工智能,2014,27(2):173-178.

        [4] 范恒亮,成衛(wèi)青.一種基于關聯(lián)分析的KNN文本分類方法[J].計算機技術與發(fā)展,2014,24(6):71-74.

        [5] 王秀利.基于K最近鄰文本分類的偽裝入侵檢測[J].小型微型計算機系統(tǒng),2014,35(12):2650-2654.

        [6] ZHANG L,ZHANG C J,XU Q Y,et al.Weigted-KNN and its application on UCI[C]//Proceedings of the 2015 IEEE international conference on information and automation.[s.l.]:IEEE,2015:1748-1750.

        [7] 李正杰,黃 剛.基于Hadoop平臺的SVM_KNN分類算法的研究[J].計算機技術與發(fā)展,2016,26(3):75-79.

        [8] LU S P,TONG W Q,CHEN Z J.Implementation of the KNN algorithm based on Hadoop[C]//2015 international conference on smart and sustainable city and big data.Shanghai,China:IET,2015:123-126.

        [9] ANCHALIA P P,ROY K.The k-Nearest neighbor algorithm using MapReduce paradigm[C]//Proceedings of the 2014 5th international conference on ISMS.[s.l.]:IEEE,2014:513-518.

        [10] DEAN J,GHEMAWAT S.MapReduce:simplified data processing on large clusters[J].Communications of ACM,2008,51(1):107-113.

        [11] GHEMAWAT S.The Google file system[J].ACM SIGOPS Operating Systems Review,2003,37(5):29-43.

        [12] GROLINGER K,HAYES M,HIGASHINO W A,et al.Challenges for MapReduce in big data[C]//Proceedings of the IEEE world congress on services.Anchorage,AK:IEEE,2014:182-189.

        [13] ZAHARIA M,CHOWDHURY M,DAS T,et al.Resilient distributed datasets: a fault-tolerant abstraction for in-memory cluster computing[C]//Proceedings of the 9th USENIX conference on networked systems design and implementation.Berkeley:USENIX Association,2012:141-146.

        [14] 樓華鋒.面向文本聚類的語義加權研究[D].上海:上海交通大學,2010.

        [15] ZAHARIA M,CHOWDHURY M,FRANKLIN M J,et al.Spark:cluster computing with working sets[C]//USENIX conference on hot topics in cloud computing.Boston,MA:USENIX Association,2010:1765-1773.

        [16] 梁喜濤,顧 磊.中文分詞與詞性標注研究[J].計算機技術與發(fā)展,2015,25(2):175-180.

        猜你喜歡
        分類文本
        分類算一算
        垃圾分類的困惑你有嗎
        大眾健康(2021年6期)2021-06-08 19:30:06
        初中群文閱讀的文本選擇及組織
        甘肅教育(2020年8期)2020-06-11 06:10:02
        在808DA上文本顯示的改善
        分類討論求坐標
        基于doc2vec和TF-IDF的相似文本識別
        電子制作(2018年18期)2018-11-14 01:48:06
        數(shù)據分析中的分類討論
        教你一招:數(shù)的分類
        文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學隱喻
        論《柳毅傳》對前代文本的繼承與轉化
        人間(2015年20期)2016-01-04 12:47:10
        亚洲av成人无码网站…| 国产内射一级一片内射高清视频1 成人av一区二区三区四区 | 亚洲开心婷婷中文字幕| 日本丰满熟妇hd| 99ri国产在线观看| 中文少妇一区二区三区| 国产人妖网站在线视频| 天下第二社区在线视频| 538在线啪在线观看| 亚洲精品国产av一区二区| 亚洲中文字幕久久精品色老板| 夫妇交换性三中文字幕| 久久天天躁夜夜躁狠狠躁2022| 国产精品日韩中文字幕| 久久99热只有频精品8国语| 亚洲av日韩av在线观看| 欧美自拍丝袜亚洲| 日韩一二三四区免费观看| av在线观看免费天堂| 男男啪啪激烈高潮cc漫画免费| 国产极品美女高潮抽搐免费网站 | 邻居少妇张开腿让我爽视频| 亚洲中文无码av永久| 亚洲一线二线三线写真 | 天天射综合网天天插天天干| 国产成人精品无码一区二区老年人 | 美利坚日韩av手机在线| 国产精品熟女视频一区二区| 麻豆国产巨作AV剧情老师| 亚洲一区二区三区在线激情| 欧美肥妇毛多水多bbxx水蜜桃| 少妇寂寞难耐被黑人中出| 国产AV秘 无码一区二区三区 | 成人国产自拍在线播放| av日韩一区二区三区四区| 国产综合久久久久| 午夜影院91| 日本中文字幕精品久久| 亚洲av不卡一区二区三区| 亚洲av无码成人网站www| 国产91九色免费视频|