我尝试使用mahout创建get itemismilarity。问题是我在输出方面几乎没有相似之处。
以下是我的输入数据特征:
第一列是不同用户的数量
第二列是每个用户的偏好计数。例如,我有2.221.760使用只有一个首选项。
2221760 1 688258 2 322497 3 192003 4 122446 5 87033 6 63733 7 49556 8 39090 9 31637 10 25634 11
以下是我的输入设置:
similarityClassname=SIMILARITY_PEARSON_CORRELATION
maxSimilaritiesPerItem=100000
minPrefsPerUser=0
booleanData=false
threshold=0.75
答案 0 :(得分:0)
第1列应为Mahout用户ID,从0到用户数 - 1 第2列应该是Mahout项目ID,从0到项目数量 - 1您不能只计算您想要记录用户显示某些偏好的项目的首选项 第3列是偏好的强度,如评级
ID类似于矩阵或表格中的行号和列号0,0是用户0项目0,该值是评级。
在阅读项目相似度的结果时,您必须将您的ID转换为Mahout ID,然后再将其转换回您的ID。
答案 1 :(得分:0)
没有帮助。我使用了apache pig Rank函数为每个不同的user_id提供1..N id,为每个不同的item_id提供1..M。我确实用数据集提供了ItemSimilarityJob,其中user_id在[1..N],item_id [1..M],首选项:1.0或2.0,输出结果与4 * 10 ^ 6个用户的16 * 10 ^ 6个偏好相同对于7 * 10 ^ 5项目,10个项目只有10 ^ 3个相似性...我做错了什么?输入数据集是否应按项目/用户ID排序? - 谢尔盖7月27日20:46
这是因为Mahout品味实现接受int作为user_ids的输入。如果您提供溢出MAX.int值的任何内容,它将翻转到最小值,这意味着它不会作为唯一用户添加。
如果你的user_id超过MAX.int值,你可以将其输入Mahout。或者您可以使用字母数字ID,然后使用ID-Migrator类进行user_id输入。
答案 2 :(得分:0)
COSINE_SIMILARTY
代替SIMILARITY_PEARSON_CORRELATION
,因为我使用离散偏好
booleanData=true
问题看起来像解决了。谢谢你们!