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

        ?

        基于Hadoop的陶瓷信息網(wǎng)個性化推薦平臺的設(shè)計

        2018-01-15 01:42:51羅新
        現(xiàn)代計算機(jī) 2017年34期
        關(guān)鍵詞:日志矩陣算法

        羅新

        (韓山師范學(xué)院計算機(jī)與信息工程學(xué)院,潮州521041)

        0 引言

        隨著網(wǎng)絡(luò)信息量的不斷增長,人們從互聯(lián)網(wǎng)獲取自己感興趣信息變得越來越困難。于是各種個性化推薦系統(tǒng)相繼產(chǎn)生。但是對于傳統(tǒng)的運(yùn)行于單機(jī)模式的推薦算法,在面臨海量用戶數(shù)據(jù)的時候,在可行性、效率上都變得越來越不適應(yīng)。所以必須開發(fā)出能對大數(shù)據(jù)進(jìn)行并行計算處理的個性化推薦平臺[1-2]。

        Hadoop[3]作為開源的并行計算機(jī)平臺,提供了HDFS和MapReduce兩大核心功能。HDFS是分布式存儲系統(tǒng),可以冗余存儲海量的數(shù)據(jù)。而MapReduce則是構(gòu)建在HDFS上的分布式并行計算架構(gòu)。

        本文在開發(fā)的陶瓷信息網(wǎng)站的基礎(chǔ)上,根據(jù)用戶對網(wǎng)站的訪問日志,對產(chǎn)品的關(guān)注度、評分,以及發(fā)布的產(chǎn)品供需等信息,對它們進(jìn)行預(yù)處理后,得到一個用戶對產(chǎn)品的興趣度文件,然后在Hadoop平臺上運(yùn)行推薦算法進(jìn)行計算,最后得出一個產(chǎn)品推薦列表。

        1 網(wǎng)站數(shù)據(jù)處理

        陶瓷信息聚合平臺網(wǎng)站是一個前端采用BootStrap框架,應(yīng)用HTML5、AJAX、jQuery等相關(guān)技術(shù),后臺采用Struts+Hiberate+Spring框架技術(shù)的網(wǎng)站。系統(tǒng)的功能包括:用戶注冊與管理,陶瓷產(chǎn)品的上架與展示,供求信息的發(fā)布,各類信息的搜索等功能。網(wǎng)站的布局如圖1所示。

        圖1 陶瓷信息聚合平臺網(wǎng)站界面

        為了獲取用戶對產(chǎn)品的興趣度文件,可以對幾種數(shù)據(jù)源進(jìn)行處理。一種是用戶訪問日志文件,另一種是保存在數(shù)據(jù)庫中的用戶對產(chǎn)品的評分、用戶發(fā)布的供需信息等。

        為了更深入的了解網(wǎng)站訪客的使用習(xí)慣,可以對網(wǎng)站的訪問日志進(jìn)行分析。例如下面一條是Tomcat服務(wù)器上記錄的訪問日志的信息。

        127.0.0.1--[01/Nov/2017:13:37:09+0800]"GET/cz_ceramics/images/product/no-photo.jpg HTTP/1.1"200 77537 http://localhost:8080/cz_ceramics/chances_findAll.action?page=1 Mozilla/5.0(Windows NT 6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100 Safari/537.36,其表達(dá)的信息如表1所示。

        表1 日志字段信息

        通過日志分析,可以統(tǒng)計出一個用戶的對某個產(chǎn)品頁面的訪問頻度。而用戶對某種產(chǎn)品的評分或者是否進(jìn)行了評論,可以從另一個側(cè)面反映了用戶對該產(chǎn)品的興趣度。用戶如果對某件產(chǎn)品發(fā)布了供貨或者需求信息,這足以證明用戶對該產(chǎn)品具有高興趣度。最后綜合這三個方面,給每一個維度一個權(quán)值,綜合計算出一個用戶對某件產(chǎn)品的興趣度。興趣度的值由0至5,以0.5相隔,即分為11個等級。用戶興趣度文件是由格式為行組成。用戶名及產(chǎn)品名都用一個唯一的數(shù)值ID進(jìn)行替代。

        2 用戶推薦算法

        在Hadoop平臺根據(jù)用戶興趣度文件計算推薦列表,需要進(jìn)行如下五步。

        Step1:生成用戶興趣度向量,它的格式是,……>,它表示對于某一個產(chǎn)品,所有用戶對它的評分。

        Step2:計算產(chǎn)品與產(chǎn)品之間的相似度。根據(jù)第一步的輸出的評分矩陣,對Item與Item之間相似度進(jìn)行計算。這里我們采用余弦相似度計算公式,公式如下:

        Itemi表示所有用戶對ID為i的產(chǎn)品的評分向量,其形式為。通過運(yùn)算,最后得出Item的相似度矩陣。

        Step3:對第一步生成的用戶興趣度矩陣進(jìn)行轉(zhuǎn)置,得到矩陣的行向量的形式為,……>。

        Step4:用第二步輸出的Item相似度矩陣乘以第三步輸出的用戶興趣度矩陣。就可以得到用戶對于那些并未評分產(chǎn)品的推薦度。原理就是用戶已經(jīng)對某些產(chǎn)品進(jìn)行評分,而其它沒有評分的項目可以根據(jù)與那些已經(jīng)評分的產(chǎn)品的相似度,得到一個推薦的分值。

        Step5:對第四步產(chǎn)生的推薦矩陣與第三步的輸出矩陣進(jìn)行對比,對那些用戶已經(jīng)評分的Item,在對應(yīng)的矩陣位置0,然后再對Item按分值按從高到低進(jìn)行排序,就可以為用戶生成對應(yīng)的推薦產(chǎn)品Top n列表。

        以上的每一步都可以用一個MapReduce作業(yè)來實現(xiàn)。例如第一步的輸入是一個用戶評分文件,Map/Reduce的流程可表示如下:

        Map:

        Reduce:

        下面是第二步實現(xiàn)的Map過程的核心代碼:try

        {

        String row_matrix1=value.toString().split(" ")[0];

        String[]column_value_array_matrix1=value.toString().split(" ")[1].split(",");

        double denominator1=0;

        for(String column_value:column_value_array_matrix1)

        {

        String score=column_value.split("_")[1];

        denominator1+=Double.valueOf(score)*Double.valueOf(score);

        }

        denominator1=Math.sqrt(denominator1);

        for(String line:cacheList)

        {

        String row_matrix2=line.toString().split(" ")[0];

        String[]column_value_array_matrix2=line.toString().split(" ")[1].split(",");

        for(String column_value:column_value_array_matrix2)

        {

        String score=column_value.split("_")[1];

        denominator2+=Double.valueOf(score)*Double.valueOf(score);

        }

        denominator2=Math.sqrt(denominator2);

        double numerator=0;

        for(String column_value_matrix1:column_value_array_matrix1)

        {

        根據(jù)形勢任務(wù)的需要,結(jié)合轄區(qū)地理位置和氣候條件,密切關(guān)注轄區(qū)社會動態(tài),按照“組織健全,訓(xùn)練有素,規(guī)模適當(dāng),反應(yīng)迅速”的要求,建立民兵應(yīng)急隊伍,提升應(yīng)急分隊“平時服務(wù)、急時應(yīng)急、戰(zhàn)時應(yīng)戰(zhàn)”的能力。針對“人員分散集中難、外出務(wù)工在位少、崗位職責(zé)協(xié)調(diào)難”等現(xiàn)實問題,按照“專業(yè)對口、因地制宜、就地取材、就近支援”的原則,及時調(diào)整優(yōu)化結(jié)構(gòu),確保配齊建強(qiáng)應(yīng)急隊伍。

        String column_matrix1=column_value_matrix1.split("_")[0];

        Stringvalue_matrix1=column_value_matrix1.split("_")[1];

        for(String column_value_matrix2:column_value_array_matrix2)

        {

        if(column_value_matrix2.startsWith(column_matrix1+"_"))

        {

        String value_matrix2=column_value_matrix2.split("_")[1];

        numerator+=Double.valueOf(value_matrix1)*Double.valueOf(value_matrix2);

        }

        }

        }

        double cos=numerator/(denominator1*denominator2);

        if(cos==0)

        {

        continue;

        }

        outKey.set(row_matrix1);

        outValue.set(row_matrix2+"_"+df.format(cos));context.write(outKey,outValue);

        在主函數(shù)中,首先把第一步的輸出添加到HDFS的cache上,然后在Mapper類的setup方法中,把cache文件上的數(shù)據(jù)讀入到ArrayList類型變量cacheList中。而第二步的Job的Map過程的Input文件也是第一步的輸出。通過計算兩個矩陣每一行之間的余弦相似度,最終得到Item相似度矩陣。

        3 實驗設(shè)計與分析

        為了證明推薦算法的可行性,我們架設(shè)了一個具有1個NameNode,5個DataNode的Hadoop完全分布式平臺。其中DataNode的硬件配置為Intel Core i7 4790,內(nèi)存5G。Hadoop平臺版本為2.5.4。經(jīng)過數(shù)據(jù)預(yù)處理后,生成用戶興趣度文件,其行格式為。在Linux下用shuf命令截取4.29M大小的數(shù)據(jù)集,里面有30萬條用戶評分記錄,不同的item總數(shù)為11589個,不同的user總數(shù)為89649個,用戶評分次數(shù)的平均值為3.35次。表2是算法各個階段的Job的輸出文件大小,運(yùn)行時間。

        表2 算法各個階段的運(yùn)行狀況

        通過分析表2的數(shù)據(jù),我們可以看出對于一個較小的輸入數(shù)據(jù)集,算法最終會都會產(chǎn)生一個較大的數(shù)據(jù)輸出。尤其是在Step4中,是計算用戶對各個Item的興趣度,它的輸入是Step2及Step3的輸出,這是相當(dāng)于兩個維度分別為[89649,11589]的矩陣相乘,所以輸入數(shù)據(jù)集大小為22.6M,輸出卻為1.4G。從運(yùn)行過程來看,小數(shù)據(jù)集并且算法運(yùn)算密集度大的作業(yè)運(yùn)行在Hadoop平臺上并無優(yōu)勢。因為涉及到數(shù)據(jù)分片、容器分配的問題,Hadoop平臺運(yùn)行小數(shù)據(jù)集,并不能發(fā)揮集群的最佳性能。對于Step5的運(yùn)算,它把Step1和Step4的輸出作來輸入,對用戶的興趣度進(jìn)行篩選,去除用戶已經(jīng)評分過的項目,剩下的就是用戶以前沒有評分過的Item的推薦度。因為Step5運(yùn)算的輸入是較大的數(shù)據(jù)集(1.4G),這時Hadoop平臺會對數(shù)據(jù)自動分片,一共創(chuàng)建11個Container。通過觀察各個數(shù)據(jù)結(jié)點(diǎn)CPU、內(nèi)存、文件I/O的占用率,可以看到集群運(yùn)算能力的利用率得到了很大的提高。這說明應(yīng)用Hadoop平臺運(yùn)行推薦算法處理大數(shù)據(jù)集是具有可行性的,而且能發(fā)揮性能上優(yōu)勢。

        4 結(jié)語

        本文在開發(fā)的陶瓷信息網(wǎng)站的基礎(chǔ)上,通過用戶訪問日志、用戶發(fā)布的相關(guān)信息的基礎(chǔ)上,整理出用戶對產(chǎn)品的興趣度文件,然后在Hadoop平臺上運(yùn)行推薦算法,得到為用戶推薦的產(chǎn)品列表。為了更好利用Hadoop平臺進(jìn)行推薦算法的運(yùn)算,應(yīng)該在Hadoop平臺參數(shù)調(diào)優(yōu),推薦算法的改進(jìn)等方面進(jìn)行加強(qiáng),這是下一步的努力方向。

        [1]肖強(qiáng),朱慶華.Hadoop環(huán)境下的分布式協(xié)同過濾算法設(shè)計與實現(xiàn)[J].現(xiàn)代圖書情報技術(shù),2013(1):83-89.

        [2]魏曉航.大數(shù)據(jù)平臺下的互聯(lián)網(wǎng)廣告點(diǎn)擊率預(yù)估模型[J].計算機(jī)工程與設(shè)計,2017,38(9):2504-2508.

        [3]Tom White.Hadoop權(quán)威指南[M].華東師范大學(xué)數(shù)據(jù)科學(xué)與工程學(xué)院.譯.北京:清華大學(xué)出版社

        猜你喜歡
        日志矩陣算法
        一名老黨員的工作日志
        華人時刊(2021年13期)2021-11-27 09:19:02
        扶貧日志
        心聲歌刊(2020年4期)2020-09-07 06:37:14
        基于MapReduce的改進(jìn)Eclat算法
        Travellng thg World Full—time for Rree
        進(jìn)位加法的兩種算法
        游學(xué)日志
        初等行變換與初等列變換并用求逆矩陣
        一種改進(jìn)的整周模糊度去相關(guān)算法
        矩陣
        南都周刊(2015年4期)2015-09-10 07:22:44
        矩陣
        南都周刊(2015年3期)2015-09-10 07:22:44
        av资源吧首页在线观看| 久久久www成人免费无遮挡大片| 国产三级精品三级国产| 青青草久热手机在线视频观看| 免费一区二区三区女优视频| 精品国产麻豆免费人成网站 | 无码国内精品人妻少妇蜜桃视频| 天堂а√在线中文在线新版| 亚洲国产cao| 女同在线视频一区二区| 野花香社区在线视频观看播放| 人妻忍着娇喘被中进中出视频| 亚洲欧美国产日产综合不卡| 亚洲一区二区三区18| 久久精品国产亚洲av无码偷窥 | 色欲av一区二区久久精品| 少妇勾引视频网站在线观看| 国产极品少妇一区二区| a级毛片100部免费看| 色系免费一区二区三区| 国产亚洲3p一区二区| 粗大的内捧猛烈进出小视频 | 精品久久久久久成人av| 黑人性受xxxx黑人xyx性爽| 97自拍视频国产在线观看| 精品一区二区三区芒果| 婷婷五月综合丁香在线| 国产激情一区二区三区成人免费| 少妇被粗大猛进进出出男女片 | 亚洲中文字幕剧情类别| 亚洲av无码国产精品色软件下戴| 四虎成人精品无码永久在线 | 国产亚洲精品色婷婷97久久久| 亚洲日本一区二区一本一道| 久久久久亚洲av成人网址| h视频在线观看视频在线| 国产精品国产精品国产专区不卡| 欧性猛交ⅹxxx乱大交| 中文字幕成人精品久久不卡| 少妇高潮太爽了在线看| 国产无遮挡又黄又爽又色|