有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Apache Mahout中的java计算首选项值

我正在尝试学习ApacheMahout,这是一个非常新的话题。我想实现基于用户的推荐程序。为此,在互联网上探索之后,我发现了一些如下示例:

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值

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) 个答案

  1. # 1 楼答案

    正如@rawkintrevo所说,Mahout已经从较老的“品味”推荐者转移,很快就会被Mahout淘汰

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

    或者在另一个项目中,我们基于Mahout创建了一个功能齐全的推荐服务器,名为Universal Recommender。它建立在ApachePredictiono上,UR是一个名为模板的插件。它们一起提供了一个几乎全套的服务器,可以接收输入并响应查询。要轻松开始,请尝试整个系统都能工作的AWS AMI。其他一些安装方法如here所示

    这都是Apache许可的OSS,但Mahout不再能够真正提供一个生产就绪的环境,Mahout提供算法,但你需要一个围绕它的系统。创建自己的或尝试基于PredictionIO的。因为一切都是开放源码软件,你可以根据需要进行调整

  2. # 2 楼答案

    是的,我认为你的代码片段来自Mahout的旧版本,但你想使用的是相关的共现推荐程序。CCO推荐程序是多模式的(允许用户有各种输入)

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

    在本教程中,我认为它推荐了基于类型标记和艺术家“喜欢”的“朋友”,以及您当前的朋友