Mahout中主要核心的三大算法为推荐,聚类及分类算法,今天就最基本的推荐算法做总结,推荐中常用的两个推荐算法是”user_based”和”item_based”,前者主要通过和你兴趣相似的人来发现新的你感兴趣的东西,而后者则是发现一些和你所喜欢的事物相似的事物。此外,还有一种基于“contend_based”的推荐算法,它是根据事物所拥有的元数据出现进行事物的推荐,例如,如果你喜欢的电影是斯皮尔伯格导影的,那么你可以向你的朋友推荐他拍摄的其他影片,推荐的理由就是基于电影的一个属性——导演,这个就是基于内容的推荐。
下面将使用mahout来做一个小的推荐案例以供学习:
1.构建数据集
这里选取的常用的偏好来描述用户与项目之间的关联程度,一个偏好包含有用户ID,项目ID和偏好值,例如,用户对影片的评分值,评分值越大,代表用户对该影片的喜爱越好。
可以采用文本文件来保存该内容,如intro.csv:
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
2.建立简易推荐器
下面利用mathou提供的基本类包mahout-examples-0.10.0-job.jar来构建java代码程序,我们要实现的是根据用户的基本情况向User1推荐合适的影片,代码如下:
package com.recommeder.lg.example;
import org.apache.mahout.cf.taste.impl.model.file.*;
import org.apache.mahout.cf.taste.impl.neighborhood.*;
import org.apache.mahout.cf.taste.impl.recommender.*;
import org.apache.mahout.cf.taste