计算Apache Mahout中的首选项值

时间:2018-02-07 12:59:23

标签: java machine-learning mahout recommendation-engine mahout-recommender

我正在尝试学习Apache mahout,这是一个非常新的主题。我想实现基于用户的推荐器。为此,在互联网上探索后,我发现了一些如下的样本,

public static void main(String[] args) {
        try {
            int userId = 2;

            DataModel model = new FileDataModel(new File("data/mydataset.csv"), ";");
            UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);

            List<RecommendedItem> recommendations = recommender.recommend(userId, 3);
            for (RecommendedItem recommendation : recommendations) {
                logger.log(Level.INFO, "Item Id recommended : " + recommendation.getItemID() + " Ratings : "
                        + recommendation.getValue() + " For UserId : " + userId);
            }
        } catch (Exception e) {
            logger.log(Level.SEVERE, "Exception in main() ::", e);
        }

我正在使用以下数据集,其中分别包含userid,itemid,preference value,

1,10,1.0
1,11,2.0
1,12,5.0
1,13,5.0
1,14,5.0
1,15,4.0
1,16,5.0
1,17,1.0
1,18,5.0
2,10,1.0
2,11,2.0
2,15,5.0
2,16,4.5
2,17,1.0
2,18,5.0
3,11,2.5
3,12,4.5
3,13,4.0
3,14,3.0
3,15,3.5
3,16,4.5
3,17,4.0
3,18,5.0
4,10,5.0
4,11,5.0
4,12,5.0
4,13,0.0
4,14,2.0
4,15,3.0
4,16,1.0
4,17,4.0
4,18,1.0

在这种情况下,它工作正常,但我的主要问题是我有不同的数据集,没有偏好值,其中包含一些基于我想要计算偏好值的数据。以下是我的新数据集

userid  itemid  likes   shares  comments
1        4       1      20      3
2        6       18     20      12
3        12      10     2       20
4        7       0      20      13
5        9       0      2       1
6        5       5      3       2
7        3       9      7       0
8        1       15     0       0

我的问题是我如何基于其他一些列来计算特定记录的偏好值,例如喜欢,分享,评论等。无论如何要在mahout中计算这个?

2 个答案:

答案 0 :(得分:2)

是的 - 我认为您的代码段来自较早版本的Mahout,但您想要使用的是Correlated Co Occurrence推荐器。 CCO推荐器是多模式的(允许用户进行各种输入)。

有CLI驱动程序,但我猜你想要编码,有一个Scala教程here

在教程中我认为它推荐的朋友&#39;基于标记的流派和艺术家喜欢的,以及您当前的朋友。

答案 1 :(得分:2)

正如@rawkintrevo所说,Mahout已经从旧的“品味”推荐者转移到了很快就会被Mahout弃用。

您可以在Mahout here中使用CCO算法构建自己的系统。它允许您使用来自不同用户行为的数据,如“喜欢,分享,评论”。所以我们称之为多模式。

或者在另一个项目中,我们创建了一个基于Mahout的全功能推荐服务器,称为Universal Recommender。它基于Apache PredicitonIO,其中UR是一个名为Template的插件。它们共同提供了一个几乎完整的服务器,可以接收输入并响应查询。要轻松入门,请尝试使整个系统正常工作的AWS AMI。其他一些安装方法显示为here

这是所有Apache许可的OSS,但Mahout不再能真正提供生产就绪的环境,Mahout做算法,但你需要一个系统围绕它。建立自己的或尝试基于PredictionIO的。由于一切都是OSS,您可以根据需要进行调整。