mahout in Action2.2-給用戶推薦圖書(1)-直觀分析和代碼

jopen 8年前發布 | 31K 次閱讀 推薦引擎

</div>

This chapter covers

? What recommenders are, within Mahout

? A first look at a recommender in action

? Evaluating the accuracy and quality of

recommender engines

? Evaluating a recommender on a real

data set: GroupLens
</div>


1.mahout in Action2.2第一個例子


Running a first recommender engine


數據:

第一個數字是用戶ID 第二個是書的ID,第三個是用戶對書的評分,1-5 越高,表示用戶越喜歡

1,101,5.0

1,102,3.0

1,103,2.5


2,101,2.0

2,102,2.5

2,103,5.0

2,104,2.0


3,101,2.5

3,104,4.0

3,105,4.5

3,107,5.0


4,101,5.0

4,103,3.0

4,104,4.5

4,106,4.0


5,101,4.0

5,102,3.0

5,103,2.0

5,104,4.0

5,105,3.5

5,106,4.0
</div>


1-5 用戶對不同書的喜好程度如下圖所示:



直覺上看這個圖,用戶1和用戶5喜好很相似,都喜歡101,對102,103只是喜歡那么一點點。可以說非常相似。1和4其次,也很相似,都很喜歡101,不怎么喜歡103。

1和2的喜好貌似完全相反,1喜歡101,而2不喜歡。等等。。。


那么。考察用戶1,我們推薦什么書給他呢?


101 102 103他已經知道了,在剩下的書中,我們選取哪幾個呢?直覺告訴我們,1和4,5號用戶很相似,因此,我們應該用4.5的喜好推測1的喜好,進行推薦。那么4,5都很喜歡104,106,我們就應該推薦這兩本書給1.


人的內心是這么思考的,代碼怎么表示出來呢?




 
  publicstaticvoid main(String[] args)throwsException{

File modelFile =null;

if(args.length >0)

modelFile =newFile(args[0]);

if(modelFile ==null||!modelFile.exists())

modelFile =newFile("intro.csv");加載文件

if(!modelFile.exists()){

System.err.println("Please, specify name of file, or put file 'input.csv' into current directory!");

System.exit(1);

}

DataModel model =newFileDataModel(modelFile);

 

UserSimilarity similarity =newPearsonCorrelationSimilarity(model);

UserNeighborhood neighborhood =

newNearestNUserNeighborhood(2, similarity, model);

 

Recommender recommender =newGenericUserBasedRecommender(

model, neighborhood, similarity);

 

List<RecommendedItem> recommendations =

recommender.recommend(1,1);推薦,對于用戶1 推薦一個

 

for(RecommendedItem recommendation : recommendations){

System.out.println(recommendation);

}

 

} </pre></div>





程序輸出:


RecommendedItem [item:104, value:4.257081]


結果說明 推薦104 因為相應的評分為4.25


下一章節講述怎么評價這個結果,這個和我們做生物研究實驗一樣,就是檢驗自己的結果的可信性。如果檢驗可信度高,就可以認為我們的理論是正確的。我們生物經常用到的是T檢驗,K檢驗等等,都是經典的理論。




Charles 于2015-12-17 Phnom Penh




</span></div>

版權說明:

本文由Charles Dong原創,本人支持開源以及免費有益的傳播,反對商業化謀利。

CSDN博客:http://blog.csdn.net/mrcharles
</div>

個人站:http://blog.xingbod.cn

EMAIL:charles@xingbod.cn
</div>


來自: http://blog.csdn.net//mrcharles/article/details/50357259

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!