羅 俊,李勁華
青島大學 數據科學與軟件工程學院,山東 青島 266071
◎大數據與云計算◎
LSHBMRPK-means算法及其應用
羅 俊,李勁華
青島大學 數據科學與軟件工程學院,山東 青島 266071
針對傳統的k-means聚類算法在處理大數據時算法時間復雜度極高和聚類效果不佳的問題,提出了LSHBMRPK-means算法,即基于局部敏感哈希函數的MapReduce并行化的k-means聚類算法;針對推薦系統的可擴展性問題,將LSHBMRPK-means應用于基于聚類的協同過濾算法。此外,針對評分數據的稀疏性問題,使用LFM,即隱語義模型,對缺失值進行填充,進而提出了基于LFM的LSHBMRPK-means聚類算法。實驗結果表明,LSHBMRPK-means聚類算法提高了聚類效率和質量,基于LFM的LSHBMRPK-means協同過濾算法具有較好的可擴展性,同時解決了因評分數據稀疏導致聚類質量不好的問題。
大數據;k-means;局部敏感哈希函數;MapReduce;推薦算法
隨著大數據時代的到來,數據的規模、種類和維度激增,同時要求處理的效率越來越高。單一機器節點的計算能力已不可能滿足大數據的應用需求[1]。為了將算法應用到分布式并行計算平臺,需要將其進行并行化改造。k-means聚類算法是一種基于原型的創建數據對象的單層劃分聚類技術[2]。由于它簡單、高效,特別是在應用于大數據時具有很好的可擴展性,因而廣泛用于商務智能、基因學、信息檢索、心理學和醫學等領域。
海量高維數據的挖掘存在兩大挑戰:數據的規模問題和數據的高維度問題。k-means算法在數據集增大的同時,簇數k值也隨之增大。k-means算法具有獨立可拆分性,可以通過使用MapReduce編程模型[3]實現并行化改造。同時,k-means算法需要多次迭代,若數據集中的所有點都與中心點進行比較,將導致巨大的計算代價,并增加了節點間的通信開銷。為減少數據量,傳統的方法是采樣。但是,采樣的方式會導致聚類結果的準確率不高。局部敏感哈希算法[4]是一種應用于大規模高維數據的技術,它能夠很快搜索到最近鄰的數據。它的基本思想是:在原始數據空間中有若干數據點,將相鄰的數據點進行相同的投影映射后,在投影的目標低維空間中,這些數據點以很高的概率聚集在一起。本文提出了LSHBMRPK-means算法,算法首先通過局部敏感哈希函數對數據集進行分區,選出代表點代表每個分區[5],然后使用MapReduce并行化的k-means算法對代表點集進行聚類。LSHBMRPK-means算法具有很好的可擴展性,同時提高了聚類的效率。
推薦系統的核心思想是將用戶和物品聯系在一起,即幫助用戶找到用戶感興趣的物品,同時將物品推薦給對它有興趣的用戶[6]。傳統的推薦方法主要有基于內容的方法[7]、基于鄰域的方法和混合的方法?,F代的推薦方法有:上下文感知的方法、基于語義的方法、基于跨領域的方法、點到點的方法和跨語言的方法。從廣義上來看,推薦技術屬于數據挖掘與機器學習的范疇,一個好的推薦服務依賴于科學的推薦算法和大量的學習數據。面對大數據問題,現在的推薦算法還需要考慮是否能夠處理海量高維數據,以及是否能夠大規模并行化等問題。
協同過濾算法是推薦系統中經常被使用的技術,它分為:基于鄰域的方法、基于模型的方法以及基于聚類的方法?;卩徲虻姆椒ㄓ址譃榛谖锲返姆椒ê突谟脩舻姆椒ā;谟脩舻姆椒ㄊ紫日业脚c目標用戶有共同興趣的用戶群,然后向目標用戶推薦他們感興趣的但其本身不知道的物品項;基于物品的方法通過在所有的用戶歷史行為中查找與目標用戶興趣度相似的其他物品,然后將它們推薦給目標用戶;基于模型的方法是一種機器學習的方法,它利用目標用戶的興趣度自動對物品進行分類,然后向目標用戶推薦其他可能感興趣的物品。隱語義模型(Latent Factor Model,LFM)[8]是一種典型的基于模型的協同過濾算法,它是基于機器學習的算法,從相關理論知識發展而來。基于聚類的協同過濾算法,通過對評分數據集進行聚類,得到有相似評分的簇集。傳統的基于聚類的協同過濾算法,往往由于評分數據比較稀疏,導致聚類效果較差[9]。本文提出了基于LFM的LSHBMRPK-means協同過濾算法,算法首先利用LFM的方法補全高維稀疏的評分數據集矩陣中的缺失值,從而得到一個完整的評分數據集矩陣,然后利用LSHBMRPK-means算法在沒有缺失值的評分數據集上以用戶為向量進行聚類,預測分析測試集上的用戶的未知評分。該算法能有效解決因評分數據集的數據稀疏導致的推薦結果準確率不高的問題,此外,算法還可以進行離線計算處理,從而提高推薦系統的可擴展性,同時降低線上計算負擔。
k-means算法是一種基于原型的單層劃分聚類技術。算法簡單、高效,被廣泛應用。它首先從所有點中按某種方式選出k個初始質心,其中k是用戶期望的簇個數,然后將每個點分配到距離最近的質心,形成簇集,再重新計算質心。重復分配和更新步驟,直到k個簇的質心不發生變化,算法如算法1所示。
算法1基本的k-means聚類算法
步驟1 Initially choose k centroids to be centroids
步驟2 Repeat
步驟3 Find centroid to which point is closest
步驟4 Adjust the centroids of each cluster
步驟5 Until centroids do not change
在數列、生物學、多媒體以及推薦系統等應用領域,需要處理規模和維度都很大的數據。傳統的基本k-means聚類算法在處理這些海量高維數據時遇到了困難,一方面是由于數據的稀疏性[10],另一方面是因為高維數據的距離計算問題[11]。
Verleysen[12]提出了“維度災難”的概念,Michael Steinbach和他的同事[13]指出“維度災難”是對高維數據進行聚類的主要挑戰。高維數據與低維數據的主要區別點在于高維數據比較稀疏[14],以及高維空間中距離計算的不同?!案呔S災難”主要體現在兩個方面:在高維空間中,點間的距離相差不大,幾乎任意兩個點向量都成直角[15]。
海量高維數據給聚類帶來了數據的規模問題和高維度問題,并給現有的數據挖掘技術帶來了極大的挑戰。k-means聚類算法對低維和高維數據都有很好的支持,但如果數據的規模越來越大,同時k-means算法需要進行多次迭代,數據集中的所有點都與k個質心進行比較將導致巨大的比較計算代價,盡管可以使用并行化的k-means聚類算法應對大數據的規模問題,當數據的維度很大時,每個點與中心點間的距離計算,也將產生很大的計算代價。針對大數據的高維度問題,一方面可以進行維約簡從而降低數據的維度,另一方面可以通過減少聚類簇數k的規模來降低計算代價。
基于排序學習的推薦算法[16],推高了推薦算法的性能和用戶的滿意度,但在處理大數據問題時遇到了困難;并行化的大規模分類數據聚類算法[17],以及啟發式流程挖掘算法[18]能夠處理大數據帶來的挑戰,但不適用于推薦算法。
局部敏感哈希算法是Piotr Indyk等[19-20]在研究依靠可用的數據量線性依賴關系尋找高維相似度模式中提出的一種新方法。它是一種基于概率的在高維空間中搜索最近鄰的方法,基本思想是通過一組哈希函數將數據點進行哈希,使得在新空間中,距離比較近的數據點在原始空間中的相似度也比較高。局部敏感哈希的定義如定義1所示。
定義1一組函數集H={h:S→U}被稱為對于距離度量函數D,(r1,r2,p1,p2)-敏感,若任意v,q∈S滿足下面的條件:
(1)Ifv∈B(q,r1)then PrH[h(q)=h(v)]≥p1;
(2)Ifv?B(q,r2)then PrH[h(q)=h(v)]≤p2。
為了使局部敏感哈希函數的集合有效,其參數必須滿足不等式:p1>p2和r1<r2。
LSHBMRPK-means算法根據滿足局部敏感哈希函數的條件確定最佳的哈希函數集。
海量高維數據面臨兩大挑戰,分別是數據的規模問題和數據的高維度問題。當k-means處理海量高維數據時,簇數k值往往很大,k-means的迭代次數明顯上升,單個數據點與中心點間的距離計算代價也很大。若共有n個數據點,k個中心點,數據的維度為d,k-means的中心點距離計算的代價為o(n×k×d)。為降低比較計算的復雜度,一方面可以降低數據的規模,另一方面可以對數據點進行降維處理。本文采用降低數據的規模的方法。傳統的是采用統計方法對數據點進行采樣,但采樣會影響數據的質量,導致聚類的準確率不高。上一小節提到的局部敏感哈希算法在處理海量高維數據時有很好的效果,因此,將利用局部敏感哈希算法降低數據集的規模,之后,再進行聚類。進而,k-means的迭代次數和聚類簇數k值都會下降,k-means算法的總復雜度也就降低了。
另外,k-means算法對海量高維數據進行聚類時,如果每個點與中心點都進行距離計算再比較,計算量會很大。由于在局部敏感哈希算法中,原始空間中距離很近的點通過哈希函數映射出來的哈希值也是相近的,通過局部敏感哈希算法劃分出來的點屬于同一個分類。從而可以利用局部敏感哈希算法將距離較近的點分到一個類別中,并用一個代表點代表同一分類中的點[5]。通過局部敏感哈希算法生成代表點后,再針對這些含有代表點的數據集,使用MapReduce并行化的k-means聚類算法進行聚類,詳見參考文獻[21]。
本文提出的LSHBMRPK-means算法包含如下兩個主要步驟:
步驟1利用局部敏感哈希函數生成代表點集。
步驟2使用MapReduce并行化的k-means算法對由局部敏感哈希函數生成的代表點集進行聚類操作。
算法流程圖如圖1所示。

圖1LSHBMRPK-means算法執行過程
LSHBMRPK-means算法含有的子算法有:利用局部敏感哈希函數生成代表點集的算法和MapReduce并行化的k-means聚類算法。利用局部敏感哈希函數生成代表點集的算法如算法2所示。
算法2利用局部敏感哈希函數生成代表點集
步驟1 Select m hash functions
步驟2 Set hashArray←h1(point),h2(point),…,hm(point)
步驟3 for each hashValue of hashArray do
步驟4 Re-cluster the bucket,get a cluster and its center
步驟5Output(c1,point lists in the radius d)
步驟6 end for
算法2描述了通過局部敏感哈希算法產生出規模比較小的代表點集的方法。步驟1挑選出m個可用的局部敏感哈希函數,而且m比數據點的維度小很多。步驟2基于每個局部敏感哈希函數計算出各數據點相對于全部的哈希函數的哈希值,這些哈希值是全部數據點通過局部敏感哈希函數進行降維后得到的點。由于降維后,很多距離比較近的原始點降維后哈希值是相近的,所以,步驟3至步驟6中對每個由相同哈希值組成的桶(數據集)進行聚類。具有相同哈希值組的點聚集在一起,代表點的半徑用參數d表示。由于具有相同哈希值組的點距離也都比較近,也還有很少的點可能距離不是很近,因而使用k-means聚類算法對這些點進行聚類,聚類的簇數為1,從而產生代表點代表由相同哈希值組成的桶。進而,得到一個降低規模的代表點集,此代表點集是通過對原始數據集進行局部敏感哈希操作得來的,它能夠有效代表原始數據集。然后使用MapReduce編程模型對基本的k-means聚類算法進行并行化改造,使其能夠處理大數據問題,且算法將具有較好的可擴展性。然后,針對規模較小的數據集使用MapReduce并行化的k-means聚類算法,所需時間比在原數據集上執行MapReduce并行化的k-means算法要少,同時隨著集群規模的增大,在一定范圍內,算法的執行效率也逐漸提高。另外,通過選取代表點的方式能夠防止彼此距離比較近的兩個點同時被當作初始中心點的問題。同時,由于數據規模的減少以及k-means的質心更新次數的降低,能有效降低集群的網絡開銷。
本文將LSHBMRPK-means算法應用到基于聚類的協同過濾算法中,同時利用LFM補全稀疏的評分數據集,提出了基于LFM的LSHBMRPK-means協同過濾算法,算法的具體算法步驟如下:
步驟1利用評分數據集,生成用戶-項目評分矩陣。由于數據量很大,很多評分數據是缺失的,因而得到的用戶-項目評分矩陣是比較稀疏的。
步驟2使用LFM填充稀疏的評分矩陣。利用用戶的歷史評分數據中提供訓練用的用戶-項目評分數據集,計算用戶u會給物品i打幾分。在填補完所有訓練用戶的缺失評分后,得到一個完整的用戶-項目評分矩陣 R′。
步驟3使用LSHBMRPK-means算法聚類分析完整的用戶-項目評分數據集R′。采用LSHBMRPK-means算法以用戶為向量對評分矩陣進行聚類分析,通過聚類,獲得相近的用戶類別:U1,U2,…,Uj,通過多次實驗結果獲得聚類類別的最優個數 j。
步驟4預測用戶評分。一個用戶a使用推薦系統時,通過分析該測試用戶的歷史評分數據來計算用戶a與每個聚類類別中心的距離,隨后把用戶分配到相應的聚類類別Um(m∈[1,j])中去。
通過搜索測試用戶的聚類類別Um來計算與它相似的其他用戶。這種方式,不僅使推薦系統算法具備了可擴展性,同時也極大地提高了計算效率。
用戶a與b之間的相似度Sim(a,b)用公式(1)表示。

通過在目標用戶a所在的聚類簇Um中查找它的最近鄰集合來預測用戶評分,提高算法的執行效率和可擴展性。然后使用公式(2)計算用戶的未知評分項。

本算法的流程圖如圖2所示。

圖2 基于LFM的LSHBMRPK-means協同過濾算法流程圖
實驗環境中Hadoop集群共有三個節點,有一個主節點,兩個從節點。
實驗集群是由搭建在ESXI 5.5上的三臺Linux虛擬機組成,各節點所使用的Hadoop版本均為2.7.1。各節點的配置信息均為,CPU:10個2.13 GHz主頻的單元,內存:40 GB,磁盤:300 GB。
本文采用GroupLens小組提供的MovieLens數據集(http://grouplens.org/datasets/movielens/20m/.)對推薦算法進行測評。實驗選用的數據集包含了138 493個用戶對27 278部電影的評分數據,總的評分數據達20 000 263條。該數據集是公開的,具有較高的可靠性。評分等級由0.5~5.0,增量是0.5,表示用戶對電影的喜歡程度越來越高。
數據集由4個文件組成:links.csv、movies.csv、ratings.csv和tags.csv。所有的評分數據都在ratings.csv文件中,文件格式為:userId、movieId、ratings、timestamp。Movies.csv收集了movieId、title和genres信息。
實驗內容包括:LSHBMRPK-means算法和基于LFM的LSHBMRPK-means協同過濾算法。針對LSHBMRPK-means算法,選擇的評價指標為聚類簇的個數、算法執行時間和局部敏感哈希函數的有效性;針對基于LFM的LSHBMRPK-means協同過濾算法,選擇的評估指標有:聚類的簇數與推薦性能的關系。推薦系統的離線實驗只需收集用戶的歷史評分數據,不需要搭建系統,也無需用戶參與。離線實驗可以很方便地對很多推薦算法進行測試。本實驗步驟設計如下:
步驟1將所有的評分數據隨機均勻的分成M(M=10)份,取其中一份作測試數據集,M-1份訓練數據。
步驟2用訓練數據集生成稀疏的用戶-項目評分矩陣。
步驟3使用LFM補全用戶-項目評分矩陣,得到完整的評分數據。
步驟4使用LSHBMRPK-means算法對完整的用戶-項目評分數據進行聚類。
步驟5將目標用戶與各聚類中心進行比較,找出目標用戶的所屬分類。
步驟6在相似度較高的各簇中查找最近鄰居,生成推薦。
步驟7對推薦結果進行分析和測評。
確定正確的簇的個數。將誤差的平方和SSE(公式(3))作為度量聚類質量的函數。

其中x代表對象,K是簇的個數,Ci表示第i個簇,ci是簇Ci的質心。dist是兩個對象之間的歐幾里得距離。SSE的值越小,表明聚類效果就越好。但簇個數不能過大,同時也不能過小,因而選擇合適的簇個數對聚類的結果很關鍵。通過選取不同的初始簇個數,計算出相應的誤差平方和,得到簇個數的SSE曲線,如圖3所示。

圖3 簇個數的SSE曲線
圖3 中,橫坐標表示簇的個數,縱坐標是對應的誤差平方和。從圖可以看出,當簇個數為160時,SSE曲線下降的比其他點要多些,之后隨著簇個數的增加,SSE的值變化減少。因此本實驗的簇數選為160。
分別在不同集群規模環境下對LSHBMRPK-means算法進行測試,并對實驗結果進行分析。測試MapReduce并行化的算法的有效性,和節點數對并行化算法的影響。
對同一數據集,不同節點數對應的算法執行時間如圖4所示。

圖4 不同節點數與執行時間測試結果
從圖4看到不同的節點數對應的算法執行時間。測試結果可以看出,多個節點環境相比于單個節點環境,算法的執行效率得到了極大提高。在集群環境下,隨著節點數的不斷增加,LSHBMRPK-means算法生成聚類結果的時間也會減少。此外,實驗結果說明LSHBMRPK-means算法有很好的擴展性和加速比。
通過局部敏感哈希函數生成的代表點,相比于原始的數據集,規模要減少很多,同時,代表點集的數據質量比較高,能夠很好地代表原始數據集,在降低數據規模的同時,也能提高聚類的質量。本實驗內容是將基于局部敏感哈希函數的MapReduce并行化的k-means聚類算法與未經過局部敏感哈希函數處理的MapReduce并行化的k-means聚類算法的性能進行比較,通過分析兩者的執行時間,以測試局部敏感哈希函數的有效性。
對同一數據集和相同節點數,基于局部敏感哈希函數的MapReduce并行化的k-means聚類算法與沒有經過局部敏感哈希函數處理的MapReduce并行化的k-means聚類算法的執行時間進行比較,測試結果如圖5所示。

圖5 算法執行時間測試結果
從兩者的測試結果可以看出,由于局部敏感哈希降低了數據的規模,基于局部敏感哈希的MapReduce并行化k-means聚類算法在處理海量高維數據時具有很好的執行效率,同時也說明了通過局部敏感哈希函數生成的代表點集能夠有效的代表原始數據集。
使用LFM對評分矩陣進行填充補全后,使用LSHBMRPK-means算法對評分數據以用戶為向量進行聚類操作。通過實驗,記錄了推薦性能與聚類個數的關系如圖6所示。

圖6 推薦性能與聚類個數關系圖
圖6 中,橫坐標表示聚類個數,縱坐標是其對應的平均絕對誤差(MAE)。從聚類個數與MAE的關系曲線可以看出,隨著聚類個數的增長,MAE先減少,后又上升,在聚類個數為140左右時,MAE達到最低點,此時,推薦質量最高。
本文針對基本的k-means聚類算法在處理大數據時的不足,提出了LSHBMRPK-means算法。實驗證明LSHBMRPK-means算法具有較好的可擴展性,且局部敏感哈希函數能夠有效降低數據的規模,提高計算效率。并將LSHBMRPK-means算法應用到基于聚類的推薦算法中,解決推薦算法的可擴展性問題。同時針對評分數據的稀疏性問題,本文使用LFM方法對評分數據集中的缺失值進行填充。通過實驗證明基于LFM的LSHBMRPK-means協同過濾算法具有較好的可擴展性,同時解決了因評分數據稀疏導致推薦準確率不高的問題。
[1]孟小峰,慈祥.大數據管理:概念,技術與挑戰[J].計算機研究與發展,2013,50(1):146-169.
[2]Tan P N,Steinbach M,Kumar V.數據挖掘導論[M].北京:人民郵電出版社,2006.
[3]Dean J,Ghemawat S.MapReduce:simplified data processing on large clusters[J].Communications of the ACM,2008,51(1):107-113.
[4]Datar M,Immorlica N,Indyk P,et al.Locality-sensitive hashing scheme based on p-stable distributions[C]//Proceedings of the Twentieth Annual Symposium on Computational Geometry.ACM,2004:253-262.
[5]李秋虹.基于MapReduce的大規模數據挖掘技術研究[D].上海:復旦大學,2013.
[6]項亮.推薦系統實戰[M].北京:人民郵電出版社,2012:1-2.
[7]Balabanovic M,Shoham Y.Learning information retrieval agents:Experiments with automated web browsing[C]//On-line Working Notes of the AAAI Spring Symposium Series on Information Gathering from Distributed,Heterogeneous Environments,1995:13-18.
[8]Golub G H,Reinsch C.Singular value decomposition and least squares solutions[J].Numerische Mathematik,1970,14(5):403-420.
[9]夏培勇.個性化推薦技術中的協同過濾算法研究[D].山東青島:中國海洋大學,2011.
[10]Aggarwal C C,Yu P S.Finding generalized projected clusters in high dimensional spaces[C]//ACM Sigmod International Conference on Management of Data,2000,29(2):70-81.
[11]Aggarwal C C,Hinneburg A,Keim D A.On the surprising behavior of distance metrics in high dimensional space[M].Berlin Heidelberg:Springer,2001.
[12]Verleysen M.Learning high-dimensional data[J].Nato Science Series Sub Series III Computer and Systems Sciences,2003,186:141-162.
[13]Steinbach M,Ert?z L,Kumar V.The challenges of clustering high dimensional data[M]//New directions in statistical physics.Berlin Heidelberg:Springer,2004:273-309.
[14]Donoho D L.High-dimensional data analysis:The curses and blessings of dimensionality[J].AMS Math Challenges Lecture,2000:1-32.
[15]Rajaraman A,Ullman J D.Mining of massive datasets[M].Cambridge:Cambridge University Press,2012.
[16]黃震華,張佳雯,田春岐,等.基于排序學習的推薦算法研究綜述[J].軟件學報,2016,27(3):691-713.
[17]丁祥武,郭濤,王梅,等.一種大規模分類數據聚類算法及其并行實現[J].計算機研究與發展,2016,53(5).
[18]魯法明,曾慶田,段華,等.一種并行化的啟發式流程挖掘算法[J].軟件學報,2015,26(3):533-549.
[19]Har-Peled S,Indyk P,Motwani R.Approximate nearest neighbor:Towards removing the curse of dimensionality[J].Theory of Computing,2012,8(1):321-350.
[20]Indyk P,Motwani R.Approximate nearest neighbors:Towards removing the curse of dimensionality[C]//Proceedings of the Thirtieth Annual ACM Symposium on Theory of Computing.ACM,1998:604-613.
[21]Zhao Weizhong,Ma Huifang,He Qing.Parallel k-means clustering based on mapreduce[C]//International Conference on Cloud Computing,2009:674-679.
LUO Jun,LI Jinhua
College of Data Science and Software Engineering,Qingdao University,Qingdao,Shandong 266071,China
LSHBMRPK-means algorithm and its application.Computer Engineering and Applications.Computer Engineering and Applications,2017,53(21):62-67.
To deal with the problems that time complexity is extremely high and the result of clustering ispoor when basic k-means algorithm is used to handle on big data issues,the paper proposes LSHBMRPK-means algorithm,locality sensitive hashing-based MapReduce parallelized k-means algorithm.Due to the scalability problem of recommendation system,the paper applies LSHBMRPK-means algorithm to cluster-based collaborative filtering algorithm.In addition,to handle on the issue of sparsity in the rating dataset,the paper uses the method of LFM to fill in the sparse rating dataset,and proposes LFM-based LSHBMRPK-means collaborative filtering algorithm.Primary experiments show that LSHBMRPK-means can improve the efficiency and quality of clustering,the proposed algorithm combined with the filtering algorithm has a good scalability,and at the same time it has solved the problem of poor clustering quality caused by the sparse rating dataset.
big data;k-means;locality sensitive hashing function;MapReduce;recommendation algorithm
A
TP311
10.3778/j.issn.1002-8331.1605-0227
羅?。?989—),男,碩士研究生,研究領域為軟件開發方法與技術;李勁華(1963—),通訊作者,男,博士,教授,研究領域為軟件工程、軟件理論、數據科學,E-mail:lijh@qdu.edu.cn。
2016-05-18
2016-10-11
1002-8331(2017)21-0062-06
CNKI網絡優先出版:2016-12-02,http://www.cnki.net/kcms/detail/11.2127.TP.20161202.1503.030.html