Java 在apachemahout中计算偏好值

Java 在apachemahout中计算偏好值,java,machine-learning,mahout,recommendation-engine,mahout-recommender,Java,Machine Learning,Mahout,Recommendation Engine,Mahout Recommender,我正在尝试学习ApacheMahout,这是一个非常新的话题。我想实现基于用户的推荐程序。为此,在互联网上探索之后,我发现了一些如下示例: public static void main(String[] args) { try { int userId = 2; DataModel model = new FileDataModel(new File("data/mydataset.csv"), ";");

我正在尝试学习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  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教程


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

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

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

或者在另一个项目中,我们基于Mahout创建了一个功能齐全的推荐服务器,称为。它是在ApachePredictiono上构建的,UR是一个称为模板的插件。它们一起提供了一个几乎全套的服务器,接收输入并响应查询。要轻松开始,请尝试使整个系统正常工作的。下面显示了一些其他安装方法


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

你能为新的Mahout推荐任何基于java的示例作为参考吗?它运行在Spark/Flink/H2O上,并使用数学表达的Scala DSL。我听说有一些研究生正在研究Java实现,但我不知道是谁或在哪里。我能告诉你的最好的方法是用Scala编写函数,然后导入jar:/你能建议一些链接以Scala recommender开始吗,我对Scala非常陌生..我从Dean Wampler的书中学到了一些东西,只是对它进行了一些黑客攻击。如果你知道Java,它非常简单,只需去掉很多锅炉板。您的通用推荐程序与结合ApachePrediction IO和mahout构建完整推荐程序有何不同?
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