張贏宇,鄧立國(guó)
(沈陽(yáng)師范大學(xué)教育技術(shù)學(xué)院,沈陽(yáng) 110034)
基于Hadoop與Mahout云數(shù)據(jù)挖掘推薦研究
張贏宇,鄧立國(guó)
(沈陽(yáng)師范大學(xué)教育技術(shù)學(xué)院,沈陽(yáng)110034)
濰坊教育學(xué)院青年計(jì)劃(No.201102js)
中國(guó)2015年的“雙十一”又一次震驚了世界,阿里公司當(dāng)日系統(tǒng)交易額峰值達(dá)到每秒鐘14萬(wàn)筆,并且支付峰值達(dá)到每秒8.59萬(wàn)筆。與2009年首屆“雙十一”相比,訂單峰值增長(zhǎng)了350倍,支付峰值增長(zhǎng)了430倍。大數(shù)據(jù)正在人們經(jīng)濟(jì)生活中扮演越來(lái)越重要的角色?!吨泄仓醒腙P(guān)于制定國(guó)民經(jīng)濟(jì)和社會(huì)發(fā)展第十三個(gè)五年規(guī)劃的建議》提出,實(shí)施國(guó)家大數(shù)據(jù)戰(zhàn)略,推進(jìn)數(shù)據(jù)資源開(kāi)放共享。利用互聯(lián)網(wǎng)手段提升資源配置效率正成為經(jīng)濟(jì)發(fā)展的“標(biāo)配”。信息技術(shù)與經(jīng)濟(jì)社會(huì)的交匯融合引發(fā)了數(shù)據(jù)迅猛增長(zhǎng),數(shù)據(jù)已成為國(guó)家基礎(chǔ)性戰(zhàn)略資源,大數(shù)據(jù)正日益對(duì)全球生產(chǎn)、流通、分配、消費(fèi)活動(dòng)以及經(jīng)濟(jì)運(yùn)行機(jī)制、社會(huì)生活方式和國(guó)家治理能力產(chǎn)生重要影響[1]。
除了數(shù)據(jù)量的增長(zhǎng)之外,結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)和處理,用戶需求種類的多樣化等問(wèn)題也為當(dāng)今IT領(lǐng)域提出了更高的要求,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)技術(shù)已經(jīng)無(wú)法滿足社會(huì)的需求[2]。而Hadoop軟件框架的發(fā)展與工具的應(yīng)用越來(lái)越成熟,實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的存儲(chǔ)與計(jì)算,成就了新一代的大數(shù)據(jù)云平臺(tái)[3]。將海量的數(shù)據(jù)存儲(chǔ)在云端只是解決了數(shù)據(jù)的存儲(chǔ)問(wèn)題,如何滿足用戶的需求,將云數(shù)據(jù)轉(zhuǎn)化為對(duì)用戶有價(jià)值的信息并推薦給用戶才是關(guān)鍵。
在大數(shù)據(jù)時(shí)代,政治、經(jīng)濟(jì)、商業(yè)、教育等領(lǐng)域的決策行為將更加依托于數(shù)據(jù)存儲(chǔ)、計(jì)算與挖掘。針對(duì)特定應(yīng)用領(lǐng)域的大規(guī)模結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),由于大量的數(shù)據(jù)和復(fù)雜的數(shù)據(jù)結(jié)構(gòu)導(dǎo)致系統(tǒng)服務(wù)器響應(yīng)時(shí)間過(guò)長(zhǎng),需求信息不精確等問(wèn)題為用戶帶來(lái)了極大的不便[4]。因此根據(jù)需要研究基于云數(shù)據(jù)的數(shù)據(jù)挖掘和推薦系統(tǒng),以更加精確、快速的方式在特定領(lǐng)域中對(duì)大量結(jié)構(gòu)與非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行挖掘,并為企事業(yè)和個(gè)人用戶提供服務(wù)支持。
1.1云數(shù)據(jù)挖掘推薦系統(tǒng)
現(xiàn)如今,云數(shù)據(jù)挖掘推薦系統(tǒng)的研究已經(jīng)受到了國(guó)內(nèi)外眾多行業(yè)領(lǐng)域的關(guān)注。云數(shù)據(jù)挖掘推薦系統(tǒng)由分布式文件系統(tǒng)、并行分布式計(jì)算和分布式數(shù)據(jù)庫(kù)三大部分構(gòu)成。其中分布式文件系統(tǒng)HDFS為海量數(shù)據(jù)提供了存儲(chǔ)服務(wù);分布式計(jì)算MapReduce為數(shù)據(jù)提供了計(jì)算;分布式數(shù)據(jù)庫(kù)為系統(tǒng)提供了高效的、并發(fā)的結(jié)構(gòu)化數(shù)據(jù)服務(wù)[5]。
●分布式文件系統(tǒng)
HDFS是Hadoop項(xiàng)目的核心子項(xiàng)目,Hadoop分布式文件系統(tǒng) (Hadoop Distributed File System,HDFS)是分布式計(jì)算中數(shù)據(jù)存儲(chǔ)管理的基礎(chǔ),是基于流數(shù)據(jù)模式訪問(wèn)和處理超大文件的需求而開(kāi)發(fā)的,可以運(yùn)行于廉價(jià)的服務(wù)器上[6]。為超大數(shù)據(jù)集(Large Data Set)的應(yīng)用處理帶來(lái)了很多便利。HDFS是一個(gè)主/從體系結(jié)構(gòu),擁有一個(gè)NameNode和一些DataNode。NameNode節(jié)點(diǎn)管理文件系統(tǒng)的元數(shù)據(jù),DataNode節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)基礎(chǔ)數(shù)據(jù)。在邏輯空間上,用戶感覺(jué)到的數(shù)據(jù)是一個(gè)文件存儲(chǔ),但在物理空間上,則是將大文件分解成為一個(gè)個(gè)數(shù)據(jù)塊進(jìn)行存儲(chǔ)(默認(rèn)64MB),提高容錯(cuò)性,在進(jìn)行I/O操作時(shí)可以并行操作,使系統(tǒng)具有高吞吐量的特點(diǎn)。不僅如此,可擴(kuò)展性和可靠性也是HDFS的特點(diǎn)。
●分布式計(jì)算MapReduce
MapReduce是由Google公司提出的一種分布式計(jì)算模型,最初主要應(yīng)用于搜索領(lǐng)域,解決大規(guī)模數(shù)據(jù)的計(jì)算問(wèn)題。它的核心設(shè)計(jì)理念是移動(dòng)計(jì)算,而不是移動(dòng)數(shù)據(jù)。MapReduce計(jì)算框架是通過(guò)鍵/值(key/value)對(duì)數(shù)據(jù)進(jìn)行操作處理的,可以看作先進(jìn)行Map操作:(K1,V1)→List(K2,V2),然后進(jìn)行Reduce操作:(K2,List(V2))→(K3,V3)[7]。用戶只需要實(shí)現(xiàn)Map和Reduce兩個(gè)函數(shù),然后MapReduce會(huì)對(duì)任務(wù)劃分,即可實(shí)現(xiàn)分布式并行計(jì)算,非常簡(jiǎn)單。
●分布式數(shù)據(jù)庫(kù)HBase
HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目,作為一個(gè)分布式的、非結(jié)構(gòu)化的、面向列的數(shù)據(jù)庫(kù),該技術(shù)最初源于Google論文Bigtable。HBase在Hadoop之上提供了類似Bigtable的能力。HBase和其他的非關(guān)系數(shù)據(jù)庫(kù)不同,第一,它是非常適和作為對(duì)非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行存儲(chǔ)的數(shù)據(jù)庫(kù);另外,HBase是面向列的,而不是面向行的模式。HBase具有高可靠性、高效性、高可伸縮性等特點(diǎn),根據(jù)HBase技術(shù)這些特點(diǎn),開(kāi)發(fā)者可以在廉價(jià)的PC Server上快速搭建大規(guī)模的結(jié)構(gòu)化存儲(chǔ)平臺(tái)。
1.2基于Hadoop與Mahout的云數(shù)據(jù)挖掘推薦研究
利用數(shù)據(jù)挖掘來(lái)進(jìn)行數(shù)據(jù)分析的常用方法主要有分類、回歸分析、聚類、關(guān)聯(lián)規(guī)則等,它們分別從不同的角度對(duì)數(shù)據(jù)進(jìn)行挖掘[8]。Mahout主要目標(biāo)是創(chuàng)建一些可伸縮、可擴(kuò)展的機(jī)器學(xué)習(xí)算法,Mahout包含許多實(shí)現(xiàn),包括集群、分類、CP和進(jìn)化程序等。不僅這樣,利用Hadoop庫(kù),Mahout可以有效地應(yīng)用擴(kuò)展到云平臺(tái)中[9]。
Mahout算法框架提供了很多推薦器供開(kāi)發(fā)者使用,基于用戶推薦、基于項(xiàng)目推薦等,還有一種Slope one推薦策略,當(dāng)數(shù)據(jù)量較大時(shí),計(jì)算量會(huì)很大,導(dǎo)致推薦效率較差。因此Mahout提供了一種更加輕量級(jí)的推薦策略Slope One(Daniel Lemire和Anna Maclachlan在2005年提出的基于評(píng)分協(xié)同過(guò)濾推薦引擎的改進(jìn)方法)。Slope One的核心優(yōu)勢(shì)是,對(duì)大規(guī)模數(shù)據(jù)依然能保證良好的計(jì)算速度和推薦效果。
假設(shè)系統(tǒng)對(duì)物品A,物品B和物品C的平均評(píng)分分別是2,5和5(如圖1)。
圖1
基于Slope One的方法會(huì)的到以下規(guī)律。
●用戶對(duì)物品B的評(píng)分=用戶對(duì)物品A的評(píng)分+1
●用戶對(duì)物品B的評(píng)分=物品C的評(píng)分。
基于以上規(guī)律,可以對(duì)用戶A和用戶B的打分進(jìn)行預(yù)測(cè)。
●用戶A,給物品A打4分,可以推測(cè)對(duì)物品B的評(píng)分是5,對(duì)物品C的打分也是5。
用戶B,給物品A打2分,給物品C打分5,根據(jù)第一條規(guī)律,可以判斷他對(duì)物品B的評(píng)分是3,而根據(jù)第二條規(guī)律,判斷評(píng)分是5,可以對(duì)各種規(guī)則得到的推斷進(jìn)行取平均值,所得出的判斷是4。
這就是Slope One推薦的基本原理,將用戶評(píng)分之間的關(guān)系看做簡(jiǎn)單的線性關(guān)系,Y=mX+b,當(dāng)m=1時(shí)就是Slope One。
代碼如下:
Packpage mahout;
Public static void recommenderModelEvaluation(DataModel)
Throws TasteException{
RecommenderEvaluator evaluator=new AverageAbsolute-Difference recommenderEvaluator();
RandomUtils.useTestSeed();
RecommenderBuilder builder=new RecommenderBuilder (){
Long diffStorageNb=100000;
Public Recommender buildRecommender(DataModel dm) throws TasteException{
DiffSorage diffStorage=new MemoryDiff-Storage(dm,
Weighting.WEIGHTED,diffStorageNb);
ReturnnewSlopeOneRecommender(dm,Weighting. WEIGHTED,diffStorage);
}
};
}
Public static void main(String[]args)
throws IOException,TasteException{
DataModel model=new FileDataModel(new File(“data/dating/ratings.dat”));
RecommendermModelEvaluation(model);
}
本文提出了基于Hadoop和Mahout云數(shù)據(jù)挖掘推薦相關(guān)研究,通過(guò)并行化的架構(gòu)和并行化的算法,處理并分析龐大的數(shù)據(jù)集,同時(shí)利用Mahout工具中的Slope one推薦策略分析解決了傳統(tǒng)數(shù)據(jù)管理無(wú)法對(duì)云端數(shù)據(jù)進(jìn)行深度挖掘與推薦的問(wèn)題,讓云數(shù)據(jù)轉(zhuǎn)化成真正對(duì)用戶有價(jià)值的信息和知識(shí),并使其在特定的領(lǐng)域得以實(shí)現(xiàn)和驗(yàn)證。
[1]周寶曜,劉偉,范承工主編.大數(shù)據(jù):戰(zhàn)略 技術(shù) 實(shí)踐.電子工業(yè)出版社,2013.
[2]張雨佳,蘇中濱.半結(jié)構(gòu)化數(shù)據(jù)的動(dòng)態(tài)樹(shù)存儲(chǔ)模型研究[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(5):86-90.
[3]韓晶.大數(shù)據(jù)服務(wù)若干關(guān)鍵技術(shù)研究[D].北京:北京郵電大學(xué),2013.
[4]謝華成,陳向東.面向云存儲(chǔ)的非結(jié)構(gòu)化數(shù)據(jù)存?。跩].計(jì)算機(jī)應(yīng)用,2012,32(7):1924-1928,1942.
[5](美)拉姆.Hadoop實(shí)戰(zhàn)[M].韓冀中譯,北京:人民郵電出版社,2011:3-4.
[6]陳璐基.基于云計(jì)算的海量數(shù)據(jù)存儲(chǔ)技術(shù)的研究及應(yīng)用[D].湖北武漢科技大學(xué),2011,4.
[7]朱玉全,楊鶴標(biāo),孫蕾.數(shù)據(jù)挖掘技術(shù)[M].南京:東南大學(xué)出版社,2006.
[8]李偉衛(wèi),趙航,張陽(yáng)等.基于MapReduce的海量數(shù)據(jù)挖掘技術(shù)研究[J].Computer Engineering and Applications,2013,49(20).
[9]Apache Software Foundation.Mahout[EB/OL].(2013-10-16).[2013-11-06].http://mahout.apache.org/.
Cloud Data;Hadoop;Mahout;Data Mining;Recommendation Strategy
Research on Cloud Data Mining Recommend Based on Hadoop and Mahout
ZHANG Ying-yu,DENG Li-guo
(College of Education Technology,Shenyang Normal University,Shenyang 110034)
張贏宇(1989-),男,遼寧丹東人,研究生,研究方向?yàn)樽顑?yōu)化理論、云計(jì)算鄧立國(guó)(1971-),男,遼寧沈陽(yáng)人,副教授,碩士,碩士研究生導(dǎo)師
2015-11-26
2015-12-23
隨著社會(huì)信息化時(shí)代的到來(lái),數(shù)據(jù)成為IT領(lǐng)域發(fā)展最重要的決定性因素。任何事都必須用數(shù)據(jù)來(lái)說(shuō)話。大數(shù)據(jù)浪潮洶涌來(lái)襲。將海量的數(shù)據(jù)資源存儲(chǔ)在云端,形成整合統(tǒng)一便于管理的云數(shù)據(jù),從而方便用戶高效、精確地獲取使用信息。云數(shù)據(jù)的核心并不在于數(shù)據(jù)量的大小,而是我們能否成功挖掘出云數(shù)據(jù)的價(jià)值。因此,提出一種基于Hadoop和Mahout的云數(shù)據(jù)挖掘推薦研究。通過(guò)并行化的架構(gòu)和并行化的算法,處理并分析龐大的數(shù)據(jù)集,解決傳統(tǒng)數(shù)據(jù)管理無(wú)法對(duì)云端數(shù)據(jù)進(jìn)行深度挖掘的問(wèn)題,讓云數(shù)據(jù)轉(zhuǎn)化成真正對(duì)用戶有價(jià)值的信息和知識(shí),并使其在特定的領(lǐng)域得以實(shí)現(xiàn)和驗(yàn)證。
云數(shù)據(jù);Hadoop;Mahout;數(shù)據(jù)挖掘;推薦策略
With the advent of social informatization,the data become the most important decisive factor in IT field.Everything must use numbers to talk.Big data wave comes.To store vast amounts of data resources in the cloud,forming manageable cloud data,thus it is easy to efficient and accurate use information.The core of the cloud data is not the size of the amount of data,but whether we can succeed to dig value of cloud data.Therefore,proposes a cloud based on Hadoop and Mahout recommended data mining research.Through parallel architecture and parallel algorithm,it processes and analyzes large data sets,solves the traditional data management on the depth of the cloud data mining problems,which lets cloud data translate into a truly valuable information and knowledge to the customer,and makes it implemented and validated in a particular area.