我正在尝试学习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);
        }


我正在使用以下数据集,其中分别包含用户ID,项目ID,首选项值,

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中进行计算?

最佳答案

是的-我认为您的代码段来自Mahout的较旧版本,但是您要使用的是“相关相关事件”推荐器。 CCO推荐人是多模式的(允许用户输入各种内容)。

有CLI驱动程序,但是我想您想编写代码,这里有一个Scala教程here

我认为在本教程中,我会根据标记的流派和喜欢的艺术家来推荐“朋友”,以及您目前的朋友。

关于java - 在Apache Mahout中计算首选项值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48664462/

10-11 10:43