• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      羅新

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

      0 引言

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

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

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

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

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

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

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

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

      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,其表達的信息如表1所示。

      表1 日志字段信息

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

      2 用戶推薦算法

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

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

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

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

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

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

      Step5:對第四步產(chǎn)生的推薦矩陣與第三步的輸出矩陣進行對比,對那些用戶已經(jīng)評分的Item,在對應的矩陣位置0,然后再對Item按分值按從高到低進行排序,就可以為用戶生成對應的推薦產(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ù)形勢任務的需要,結(jié)合轄區(qū)地理位置和氣候條件,密切關注轄區(qū)社會動態(tài),按照“組織健全,訓練有素,規(guī)模適當,反應迅速”的要求,建立民兵應急隊伍,提升應急分隊“平時服務、急時應急、戰(zhàn)時應戰(zhàn)”的能力。針對“人員分散集中難、外出務工在位少、崗位職責協(xié)調(diào)難”等現(xiàn)實問題,按照“專業(yè)對口、因地制宜、就地取材、就近支援”的原則,及時調(diào)整優(yōu)化結(jié)構(gòu),確保配齊建強應急隊伍。

      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 實驗設計與分析

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

      表2 算法各個階段的運行狀況

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

      4 結(jié)語

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

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

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

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

      猜你喜歡
      日志矩陣算法
      一名老黨員的工作日志
      華人時刊(2021年13期)2021-11-27 09:19:02
      扶貧日志
      心聲歌刊(2020年4期)2020-09-07 06:37:14
      基于MapReduce的改進Eclat算法
      Travellng thg World Full—time for Rree
      進位加法的兩種算法
      游學日志
      初等行變換與初等列變換并用求逆矩陣
      一種改進的整周模糊度去相關算法
      矩陣
      南都周刊(2015年4期)2015-09-10 07:22:44
      矩陣
      南都周刊(2015年3期)2015-09-10 07:22:44
      广宁县| 保定市| 宣威市| 开阳县| 安泽县| 西丰县| 乌拉特中旗| 谷城县| 来安县| 雷山县| 合水县| 鄂托克旗| 武夷山市| 莲花县| 修水县| 宁城县| 玉屏| 吴忠市| 彩票| 永靖县| 连州市| 淮北市| 崇礼县| 酒泉市| 吴桥县| 北京市| 阳西县| 陈巴尔虎旗| 阳朔县| SHOW| 陆丰市| 乡宁县| 邵东县| 图片| 泗水县| 岚皋县| 克东县| 镇康县| 松溪县| 荣成市| 韶山市|