国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Spark的用戶(hù)行為分析系統(tǒng)框架研究

2018-02-26 08:11◆殷樂(lè)遠(yuǎn)
關(guān)鍵詞:日志數(shù)據(jù)挖掘預(yù)處理

◆殷 樂(lè) 姚 遠(yuǎn) 劉 辰

?

基于Spark的用戶(hù)行為分析系統(tǒng)框架研究

◆殷 樂(lè) 姚 遠(yuǎn) 劉 辰

(信息工程大學(xué)四院 河南 450001)

網(wǎng)絡(luò)日志包含了大量有價(jià)值的信息,對(duì)分析用戶(hù)上網(wǎng)行為模式提供有力數(shù)據(jù)保障。而隨著互聯(lián)網(wǎng)及應(yīng)用程序規(guī)模的不斷擴(kuò)大,各種日志信息同時(shí)也呈數(shù)量級(jí)的增長(zhǎng),一般使用單臺(tái)機(jī)器處理的用戶(hù)行為分析系統(tǒng)早已無(wú)法滿(mǎn)足當(dāng)前需求。Spark作為一個(gè)專(zhuān)為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的分布式計(jì)算引擎,具有易用性、通用性和更快的速度等優(yōu)勢(shì)。本文介紹了現(xiàn)有常用的數(shù)據(jù)挖掘技術(shù)及Spark機(jī)器學(xué)習(xí)庫(kù)MLlib中的相關(guān)算法,設(shè)計(jì)了一個(gè)基于Spark平臺(tái)并使用多種MLlib挖掘算法的用戶(hù)行為分析系統(tǒng)融合框架,包括日志采集、日志預(yù)處理、用戶(hù)聚類(lèi)、關(guān)聯(lián)規(guī)則、序列模式、可視化、任務(wù)管理等模塊。

Spark;MLlib;數(shù)據(jù)挖掘;用戶(hù)行為分析

0 引言

用戶(hù)行為分析是指在獲得網(wǎng)站訪(fǎng)問(wèn)日志數(shù)據(jù)的情況下,對(duì)有關(guān)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、分析,從中發(fā)現(xiàn)用戶(hù)訪(fǎng)問(wèn)網(wǎng)站的行為規(guī)律??梢詫⑦@些行為規(guī)律與網(wǎng)絡(luò)營(yíng)銷(xiāo)策略等相結(jié)合,為后續(xù)的主動(dòng)推薦服務(wù)提供依據(jù),以滿(mǎn)足用戶(hù)個(gè)性化需求,或者應(yīng)用于入侵檢測(cè)系統(tǒng)[2]中,建立系統(tǒng)訪(fǎng)問(wèn)的正常行為模型,凡是不符合這個(gè)模型的行為將被斷定為入侵,或者將所有可能發(fā)生的不利的、不可接受的行為進(jìn)行歸納并建立模型,凡是訪(fǎng)問(wèn)者符合這個(gè)模型的行為將被斷定為入侵。

用戶(hù)行為分析需要數(shù)據(jù)挖掘技術(shù)做支撐,而Spark平臺(tái)包含強(qiáng)大的機(jī)器學(xué)習(xí)庫(kù)MLlib,具備用戶(hù)行為分析所需的各種數(shù)據(jù)挖掘技術(shù),另外Spark平臺(tái)本身具有分布式高效的計(jì)算能力和日志處理能力[1],非常適合用于構(gòu)建功能全面的用戶(hù)行為分析系統(tǒng)。

1 數(shù)據(jù)挖掘技術(shù)

數(shù)據(jù)挖掘[3](Data Mining)是目前人工智能和數(shù)據(jù)庫(kù)領(lǐng)域研究的熱點(diǎn)問(wèn)題,所謂數(shù)據(jù)挖掘是指從數(shù)據(jù)庫(kù)的大量數(shù)據(jù)中揭示出隱含的、先前未知的并有潛在價(jià)值的信息的非平凡過(guò)程。數(shù)據(jù)挖掘常用方法主要包括分類(lèi)、回歸分析、聚類(lèi)、關(guān)聯(lián)規(guī)則、序列模式和偏差分析等。下面介紹幾種常用的數(shù)據(jù)挖掘技術(shù)。

1.1分類(lèi)

分類(lèi)就是在數(shù)據(jù)中找出一個(gè)類(lèi)別的概念描述,這個(gè)概念代表了這類(lèi)數(shù)據(jù)的內(nèi)涵描述,然后根據(jù)這種描述建立模型。分類(lèi)是數(shù)據(jù)挖掘的基本任務(wù),總體來(lái)說(shuō)并不復(fù)雜,但它是完成其它任務(wù)的基礎(chǔ),只有先對(duì)數(shù)據(jù)進(jìn)行分類(lèi)才能夠有效地完成聚類(lèi)、關(guān)聯(lián)等任務(wù)。常用的分類(lèi)方法主要包括統(tǒng)計(jì)方法、機(jī)器學(xué)習(xí)方法、神經(jīng)網(wǎng)絡(luò)方法等。其中統(tǒng)計(jì)方法包括貝葉斯法和非參數(shù)法,機(jī)器學(xué)習(xí)方法包括決策樹(shù)法和規(guī)則歸納法,神經(jīng)網(wǎng)絡(luò)法主要是以BP 算法為主。

1.2聚類(lèi)

聚類(lèi)就是把具有相似性的數(shù)據(jù)歸納成若干類(lèi)別,相同類(lèi)別的數(shù)據(jù)相似,不同類(lèi)別的數(shù)據(jù)相異,聚類(lèi)分析可以在分類(lèi)的基礎(chǔ)上進(jìn)一步建立宏觀的概念,進(jìn)而發(fā)現(xiàn)數(shù)據(jù)的分布模式以及數(shù)據(jù)屬性之間的相互關(guān)系。聚類(lèi)總體來(lái)說(shuō)可以分成4類(lèi):劃分的方法、層次的方法、網(wǎng)格的方法、模型的方法。

1.3關(guān)聯(lián)規(guī)則

當(dāng)兩個(gè)或者兩個(gè)以上變量的取值直接存在某種規(guī)律性時(shí),我們就可以稱(chēng)之為關(guān)聯(lián)。在數(shù)據(jù)庫(kù)中,關(guān)聯(lián)并不是隱藏的信息,而是可被發(fā)現(xiàn)的信息。數(shù)據(jù)挖掘進(jìn)行關(guān)聯(lián)分析的主要目的是發(fā)現(xiàn)給定事件或記錄中經(jīng)常一起發(fā)生的項(xiàng)目,并由此識(shí)別有可能重復(fù)發(fā)生的模式。關(guān)聯(lián)分析方法主要包括Apriori算法和FP-growth算法等。

1.4序列模式

序列模式和關(guān)聯(lián)規(guī)則類(lèi)似,只是把關(guān)聯(lián)規(guī)則中一起發(fā)生的項(xiàng)目間關(guān)系擴(kuò)展成一段時(shí)間的項(xiàng)目集間的關(guān)系,所以序列模式經(jīng)常被看作由時(shí)間變量連起來(lái)的關(guān)聯(lián)規(guī)則。序列模式挖掘的主要目的是分析長(zhǎng)時(shí)間的相關(guān)記錄,進(jìn)而發(fā)現(xiàn)經(jīng)常發(fā)生的順序模式。

圖1 Spark框架及生態(tài)

2 Spark平臺(tái)及MLlib相關(guān)介紹

2.1 Spark平臺(tái)

Spark是UC Berkeley AMP lab所開(kāi)發(fā)的類(lèi)Hadoop MapReduce的開(kāi)源集群計(jì)算框架,建立在Hadoop分布式文件系統(tǒng)(HDFS)的上層。Spark通過(guò)構(gòu)建彈性分布式數(shù)據(jù)集(RDD,Resilient Distributed DataSet)提供內(nèi)存集群計(jì)算,將Job處理過(guò)程中的中間輸出和結(jié)果保存在內(nèi)存中,從而減少HDFS讀寫(xiě)次數(shù),大幅提升處理效率,使它非常適合機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘等需要迭代的算法。Spark 主要有三個(gè)特點(diǎn):

(1)高級(jí) API 剝離了對(duì)集群本身的關(guān)注,開(kāi)發(fā)者可以專(zhuān)注于計(jì)算本身。

(2)Spark支持交互式計(jì)算和復(fù)雜算法[4]。

(3)Spark 是通用引擎,可用它來(lái)完成 SQL 查詢(xún)、文本處理、機(jī)器學(xué)習(xí)等各種各樣的運(yùn)算。

Spark架構(gòu)包括Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX等功能模塊。其中Spark Core包含Spark的基本功能,尤其是定義RDD的API、操作以及這兩者上的動(dòng)作(Action),其他Spark的庫(kù)都是構(gòu)建在RDD和Spark Core之上的;Spark SQL提供通過(guò)Apache Hive的SQL變體Hive查詢(xún)語(yǔ)言(HiveQL)與Spark進(jìn)行交互的API,每個(gè)數(shù)據(jù)庫(kù)表被當(dāng)做一個(gè)RDD,Spark SQL查詢(xún)被轉(zhuǎn)換為Spark操作;Spark Streaming對(duì)實(shí)時(shí)數(shù)據(jù)流進(jìn)行處理和控制,允許程序能夠像普通RDD一樣處理實(shí)時(shí)數(shù)據(jù);MLlib是一個(gè)常用機(jī)器學(xué)習(xí)算法庫(kù),其算法都是基于對(duì)RDD的操作,并且該庫(kù)的學(xué)習(xí)算法可以擴(kuò)展;GraphX是控制圖、并行圖操作和計(jì)算的一組算法和工具的集合,其擴(kuò)展了RDD API,包含控制圖、創(chuàng)建子圖、訪(fǎng)問(wèn)路徑上所有頂點(diǎn)的操作。

2.2 Spark機(jī)器學(xué)習(xí)庫(kù)

MLlib(Machine Learnig lib)構(gòu)建在Spark之上,一個(gè)專(zhuān)門(mén)針對(duì)大量數(shù)據(jù)處理的通用的、快速的引擎,是一個(gè)可以擴(kuò)展的機(jī)器學(xué)習(xí)庫(kù),由通用的學(xué)習(xí)算法和工具類(lèi)組成,包括分類(lèi)、回歸、聚類(lèi)、協(xié)同過(guò)濾、降維和調(diào)優(yōu)等部分。MLlib基于RDD,天生就可以與Spark SQL、GraphX、Spark Streaming無(wú)縫集成,從圖2可以看出MLlib主要包含三個(gè)部分:

(1)底層基礎(chǔ):包括Spark的運(yùn)行庫(kù)、矩陣庫(kù)和向量庫(kù);

(2)算法庫(kù):包含廣義線(xiàn)性模型、推薦系統(tǒng)、聚類(lèi)、決策樹(shù)和評(píng)估的算法;

(3)實(shí)用程序:包括測(cè)試數(shù)據(jù)的生成、外部數(shù)據(jù)的讀入等功能。

圖2 Spark機(jī)器學(xué)習(xí)庫(kù)框架

3 用戶(hù)行為分析系統(tǒng)框架設(shè)計(jì)

基于以上相關(guān)技術(shù)的研究,充分考慮用戶(hù)行為特點(diǎn),針對(duì)不同類(lèi)型的用戶(hù)行為分析功能分別設(shè)計(jì)算法模塊,根據(jù)不同分析算法完成相應(yīng)的數(shù)據(jù)預(yù)處理工作,對(duì)日志數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗并以算法可識(shí)別的格式作為算法輸入,經(jīng)過(guò)挖掘算法模塊處理得到用戶(hù) 行為信息,再通過(guò)可視化模塊清晰再現(xiàn),故該系統(tǒng)框架設(shè)計(jì)[5]包括日志采集模塊、預(yù)處理模塊、用戶(hù)聚類(lèi)模塊、關(guān)聯(lián)規(guī)則模塊、序列挖掘模塊、可視化模塊和系統(tǒng)管理模塊等。

3.1日志采集模塊

日志采集模塊通過(guò)采集網(wǎng)絡(luò)環(huán)境中的各種日志數(shù)據(jù)源,包括HDFS和外部數(shù)據(jù),并完成數(shù)據(jù)的一致性、完整性檢查,對(duì)丟失的數(shù)據(jù)進(jìn)行填補(bǔ),消除不必要的數(shù)據(jù)等工作。由于日志數(shù)據(jù)來(lái)源種類(lèi)多樣和分布式異構(gòu),采集到的日志數(shù)據(jù)并不能直接用于算法處理模塊,需要進(jìn)行相應(yīng)的預(yù)處理。

3.2預(yù)處理模塊

數(shù)據(jù)預(yù)處理[6]對(duì)于數(shù)據(jù)挖掘非常重要。在日志中存在許多對(duì)于數(shù)據(jù)挖掘無(wú)用的屬性和數(shù)據(jù),而對(duì)數(shù)據(jù)挖掘算法而言,由于數(shù)據(jù)挖掘算法通常只能處理固定格式的數(shù)據(jù),不正確的輸入數(shù)據(jù)可能導(dǎo)致錯(cuò)誤或者不準(zhǔn)確的挖掘結(jié)果,所以需要針對(duì)不同機(jī)器學(xué)習(xí)算法進(jìn)行相應(yīng)格式的預(yù)處理工作,以符合后續(xù)算法模塊的輸入要求。

3.3用戶(hù)聚類(lèi)模塊

用戶(hù)聚類(lèi)[7]模塊可以根據(jù)用戶(hù)操作行為對(duì)用戶(hù)進(jìn)行聚類(lèi),通過(guò)分析用戶(hù)操作日志,發(fā)掘用戶(hù)群體的訪(fǎng)問(wèn)模式,用以調(diào)整站點(diǎn)結(jié)構(gòu)、提供個(gè)性化服務(wù)并開(kāi)展適當(dāng)?shù)耐茝V活動(dòng),為用戶(hù)推薦提供了良好的解決方案。運(yùn)用MLlib中的聚類(lèi)算法,例如K-means,可以直接處理從數(shù)據(jù)預(yù)處理模塊得到的規(guī)范化輸入數(shù)據(jù),最終結(jié)果傳輸給可視化模塊或者其他上層應(yīng)用。

3.4關(guān)聯(lián)規(guī)則模塊

關(guān)聯(lián)規(guī)則[8]模塊可以通過(guò)對(duì)日志數(shù)據(jù)的挖掘,得出用戶(hù)頻繁訪(fǎng)問(wèn)路徑間的關(guān)聯(lián)規(guī)則,以獲取用戶(hù)潛在的興趣和行為模式,來(lái)為用戶(hù)提供個(gè)性化、智能化的信息服務(wù),并為網(wǎng)站結(jié)構(gòu)的優(yōu)化提供指導(dǎo)性建議,達(dá)到提高網(wǎng)站點(diǎn)擊量或企業(yè)營(yíng)銷(xiāo)利潤(rùn)。該模塊可以采用MLlib中的Apriori算法對(duì)預(yù)處理過(guò)的日志數(shù)據(jù)進(jìn)行關(guān)聯(lián)規(guī)則分析,結(jié)果通過(guò)可視化模塊展示或者提交其他上層應(yīng)用。

3.5 序列挖掘模塊

序列挖掘[9]模塊通過(guò)對(duì)日志數(shù)據(jù)中用戶(hù)訪(fǎng)問(wèn)記錄的深入分析,找到用戶(hù)經(jīng)常訪(fǎng)問(wèn)的頁(yè)面或者某種資源的模式,從而有效改善頁(yè)面組織形式和站點(diǎn)架構(gòu),提高網(wǎng)站的整體性能,以更好地滿(mǎn)足用戶(hù)訪(fǎng)問(wèn)需求來(lái)提升用戶(hù)體驗(yàn)。與關(guān)聯(lián)規(guī)則不同的是,序列挖掘更注重事務(wù)間的順序。較新版本的Spark加入序列模式挖掘算法PrefixSpan,可以對(duì)預(yù)處理過(guò)的日志數(shù)據(jù)進(jìn)行高效的序列模式挖掘。

圖3用戶(hù)行為分析系統(tǒng)框架

3.6可視化模塊

經(jīng)過(guò)上述算法模塊處理后,會(huì)得到分析還原的用戶(hù)行為信息,再采用網(wǎng)頁(yè)的形式展示查詢(xún)后返回的結(jié)果數(shù)據(jù),對(duì)并每個(gè)搜索分析得到的結(jié)果進(jìn)行直觀化圖表展現(xiàn),網(wǎng)表展示內(nèi)容包括:用戶(hù)聚類(lèi)結(jié)果、用戶(hù)行為關(guān)聯(lián)結(jié)果、訪(fǎng)問(wèn)軌跡模式等。算法模塊處理結(jié)果可以采用XMl形式提交參數(shù)給該模塊進(jìn)行展示。

3.7系統(tǒng)管理模塊

該模塊主要對(duì)各個(gè)Spark集群任務(wù)進(jìn)行管理調(diào)度,包括系統(tǒng)配置的管理、任務(wù)配置管理、任務(wù)狀態(tài)監(jiān)控、任務(wù)調(diào)度管理等,保證系統(tǒng)任務(wù)的穩(wěn)定運(yùn)行。

3.8其他上層應(yīng)用及擴(kuò)展

由于MLlib具有良好的算法可擴(kuò)展性,開(kāi)發(fā)者可以基于Spark生態(tài)系統(tǒng)添加自定義挖掘算法,并用于相應(yīng)的挖掘分析模塊。另外,本系統(tǒng)可以作為很好的挖掘平臺(tái),通過(guò)挖掘算法得到的結(jié)果還可以作為其他上層應(yīng)用的數(shù)據(jù)輸入,例如主動(dòng)推薦和入侵檢測(cè)等。

4 結(jié)束語(yǔ)

本文總結(jié)了當(dāng)前常用的數(shù)據(jù)挖掘技術(shù)和Spark平臺(tái)框架及其生態(tài),并通過(guò)研究Spark機(jī)器學(xué)習(xí)庫(kù)MLlib中的相關(guān)挖掘算法,融合現(xiàn)有各類(lèi)用戶(hù)行為分析平臺(tái),構(gòu)建了一個(gè)基于Spark平臺(tái)的多功能可擴(kuò)展的用戶(hù)行為分析系統(tǒng)框架,可以提供給該領(lǐng)域研究人員進(jìn)行系統(tǒng)研發(fā)做參照。

[1]IliasMavridis,HelenKaratza.Performance evaluation of cloud-based log file analysis with Apache Hadoop and Apache Spark[J]. The Journal of Systems & Software,2017.

[2]左曉軍,董立勉,曲武.基于Spark框架的分布式入侵檢測(cè)方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2015.

[3]王雅軒,頊聰.數(shù)據(jù)挖掘技術(shù)的綜述[J].電子技術(shù)與軟件工程,2015.

[4]寧永恒.基于Spark的若干數(shù)據(jù)挖掘技術(shù)研究[D].中國(guó)計(jì)量學(xué)院,2015.

[5]基于Hadoop的Web日志的分析平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 付偉.北京郵電大學(xué),2015.

[6]陸麗娜,楊怡玲,管旭東,魏恒義.Web日志挖掘中的數(shù)據(jù)預(yù)處理的研究[J].計(jì)算機(jī)工程,2000.

[7]馬家駿.基于Web日志挖掘的聚類(lèi)算法研究及應(yīng)用[D].北京工業(yè)大學(xué),2016.

[8]李綱,李春雅,胡蓉,海嵐.關(guān)聯(lián)規(guī)則在Web日志挖掘中的研究與應(yīng)用[J].信息資源管理學(xué)報(bào),2015.

[9]王合清.基于序列模式的Web日志挖掘及其應(yīng)用[D].華南理工大學(xué),2014.

猜你喜歡
日志數(shù)據(jù)挖掘預(yù)處理
求解奇異線(xiàn)性系統(tǒng)的右預(yù)處理MINRES 方法
一名老黨員的工作日志
探討人工智能與數(shù)據(jù)挖掘發(fā)展趨勢(shì)
高COD二噻烷生產(chǎn)廢水預(yù)處理研究
扶貧日志
數(shù)據(jù)挖掘技術(shù)在打擊倒賣(mài)OBU逃費(fèi)中的應(yīng)用淺析
雅皮的心情日志
游學(xué)日志
基于預(yù)處理MUSIC算法的分布式陣列DOA估計(jì)
一種基于Hadoop的大數(shù)據(jù)挖掘云服務(wù)及應(yīng)用