我正在使用Mahout构建一个基于用户的推荐系统,该系统使用布尔数据进行操作.
我使用GenericBooleanPrefUserBasedRecommender,NearestNUserNeighborhood现在试图决定最合适的用户相似度函数.
有人建议使用LogLikelihoodSimilarity或TanimotoCoefficientSimilarity.我试过这两种情况,并在两种情况下得到[主观评估]有意义的结果.但是,LogLikehood对同一数据集的RMSE评级更好.在这两种情况下,"无推荐"的数量相似.
任何人都可以推荐哪种相似功能最适合这种情况?
我想将基于Hadoop的Mahout推荐器与Apache Hive结合起来.所以我生成的建议书直接存储在我的Hive Tables中.任何人都知道类似的教程吗?
我正在尝试使用Native Bayes Classifier来检测欺诈交易.我在excel表中有大约5000的样本数据,这是我将用于训练分类器的数据,我有大约1000的测试数据,我将在其上应用测试分类器.
我的问题是,我不知道如何训练分类器.在将训练数据传递到训练分类器之前,是否需要将训练数据转换为某种特定格式.训练分类器将如何知道哪个是我的目标值以及哪个是其特征.
有人可以帮帮我吗?
所以你好Mahout社区!
关于加快推荐计算,我有几个问题.在我的服务器上,我安装了没有Hadoop的Mahout.jRuby也用于推荐脚本.在数据库中,我有3k用户和100k项(连接表中的270k项).因此,当用户请求建议时,简单脚本开始工作:
首先,它使用PGPoolingDataSource如下方式建立数据库连接:
connection = org.postgresql.ds.PGPoolingDataSource.new()
connection.setDataSourceName("db_name");
connection.setServerName("localhost")
connection.setPortNumber(5432)
connection.setDatabaseName("db_name")
connection.setUser("mahout")
connection.setPassword("password")
connection.setMaxConnections(100)
connection
Run Code Online (Sandbox Code Playgroud)
我收到这个警告:
WARNING: You are not using ConnectionPoolDataSource. Make sure your DataSource pools connections to the database itself, or database performance will be severely reduced.
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决?
之后我创建了建议:
model = PostgreSQLJDBCDataModel.new(
connection,
'stars',
'user_id',
'repo_id',
'preference',
'created_at'
)
similarity = TanimotoCoefficientSimilarity.new(model)
neighborhood = NearestNUserNeighborhood.new(5, similarity, model)
recommender = GenericBooleanPrefUserBasedRecommender.new(model, neighborhood, similarity)
recommendations = recommender.recommend user_id, 30
Run Code Online (Sandbox Code Playgroud)
目前,为一个用户生成推荐需要大约5-10秒.问题是如何更快地提出建议(200ms会很好)?
我正面临使用solr的排名问题而且我被困了.
给定一个电子商务网站,对于查询"ipad",我获得:
这是一个问题,因为我们想要排名第一的主要产品(或产品本身)和tf/idf排名第一的配件由于描述,如"ipad案例兼容ipad,ipad2,ipad3,ipad视网膜,ipad mini等".
此外,使用类别我们无法确定是附件还是产品.
我想知道使用自动分类是否有帮助.另一种改善这种排名的解决方案(如Named Entity Recognition)将不胜感激.
我在这个网站上运行初学者Mahout推荐人教程.我到达了运行jetty以启动reccomender的步骤:
mvn jetty:run
Run Code Online (Sandbox Code Playgroud)
Jetty似乎开始了,但无法找到grouple的示例jar.IE我得到这个例外:
javax.servlet.ServletException:java.lang.IllegalStateException:java.lang.ClassNotFoundException:org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommender
在做了一些研究后,我发现了几个 问题,没有明确解决这个问题.或者列出了解决方案,但没有给出反馈意见.我尝试将maven的内存从建议的1024 MB增加到2048 MB,但这似乎没有改变任何东西.
我是推荐系统的新手.我正在努力学习Mahout,到目前为止我认为我掌握了它.
但是,当我尝试使用Mahout in Action(清单2.4,第21页)中的示例计算Precision&Recall时,我遇到了一个相当奇怪的问题,为了更方便,我在这里复制粘贴主体:
RandomUtils.useTestSeed();
DataModel model = new FileDataModel (new File("intro.csv"));
RecommenderIRStatsEvaluator evaluator =
new GenericRecommenderIRStatsEvaluator ();
RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model)
throws TasteException {
UserSimilarity similarity = new PearsonCorrelationSimilarity (model);
UserNeighborhood neighborhood =
new NearestNUserNeighborhood (2, similarity, model);
return
new GenericUserBasedRecommender (model, neighborhood, similarity);
}
};
IRStatistics stats = evaluator.evaluate(
recommenderBuilder, null, model, null, 2,
GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD,
1.0);
System.out.println(stats.getPrecision());
System.out.println(stats.getRecall());
Run Code Online (Sandbox Code Playgroud)
当我尝试使用书中的小数据集执行上述操作时,一切都应该如此.但是,当我尝试使用Movielens 1M或10M计算Precision&Recall时,结果非常低......例如,Precision和Recall @ 2等于:P:0.00573和R:0.005882
我没有想法,所以如果有人有或有过类似的问题,我会很高兴听到有解决方案......
我想知道分布式mahout推荐器作业如何org.apache.mahout.cf.taste.hadoop.item.RecommenderJob处理csv文件,其中存在重复和三重用户,项目条目但具有不同的首选项值.例如,如果我有一个包含类似条目的.csv文件
1,1,0.7
1,2,0.7
1,2,0.3
1,3,0.7
1,3,-0.7
Mahout的数据模型将如何处理这个问题?它会为给定用户,项目条目(例如,对于用户项目1,2,偏好将是(0.7 + 0.3))总结偏好值,或者是否对值进行平均(例如,对于用户项目1,2,偏好是(0.7 + 0.3)/ 2)或者它是否默认为最后一个用户,它检测到的项目条目(例如,对于用户1,2,优先级值设置为0.3).
我问这个问题是因为我正在考虑基于多个偏好指标的推荐(项目视图,喜欢,不喜欢,保存到购物车等).如果数据模型将偏好值视为线性权重(例如,项目视图加上保存到愿望列表具有比项目视图更高的偏好分数)将是有帮助的.如果datamodel已经通过求和来处理这个问题,它将为我节省额外map-reduce的杂项,以根据多个指标对总分进行排序和计算.任何人都可以在mahout上提供任何澄清.csv datamodel在这方面的工作org.apache.mahout.cf.taste.hadoop.item.RecommenderJob将非常感激.谢谢.
我的数据在CSV文件中.我想读取HDFS中的CSV文件.
任何人都可以帮我代码?
我是hadoop的新手.提前致谢.
也许我的问题很复杂,但我想知道StandardNaiveBayesClassifier和ComplementaryNaiveBayesClassifier算法之间的主要区别Mahout.哪一个在较少量的训练数据上表现较好,或者是数据相关问题?哪一个更适合情绪分析?还有一些其他的aspecs ......
先感谢您!