我有一个非常具体的推荐问题。
假设我有三种类型的值/实体 – 项目、属性、值。共有N个项目,A个属性和B个值。每个项目都有一些属性-值对。例如:
项目#1
2374-23783
8455-5783
744-2438
项目#2
5435-23783
8455-54654
544-9778
…
现在,假设有一个“匿名”项目,比如项目#x,它有3-4个像上面的样本属性值对,我想为一个特定的属性获取推荐。例如:
项目#x
5435-23783
544-9778
744-2438
8455-?? (获取推荐)
直觉上,项目#x中属性8455的推荐值可能是54654。你会发现属性5435和744在项目#2和项目#x中的值是相同的。因此,属性8455的值更可能与项目#2中的8455的值相似。
问题:
-
你认为解决这个问题的最佳模型是什么?我应该使用什么方法?协同过滤 – 但具体怎么做呢?显然,简单地将所有属性-值对倾倒进数据集并获取推荐并不能满足我的需求。
-
你能提供一些具体的实现细节吗?Mahout?Myrrix?机器学习/推荐库?
回答:
看起来你不需要任何机器学习,只需要检索。最直接的方法是创建一个特征向量,每个维度是一个属性。
向量位置和属性:
位置 #0, 属性 2374位置 #1, 属性 8455位置 #2, 属性 744位置 #3, 属性 5435位置 #4, 属性 544
为每个项目填充向量值。
项目 #1 表示为 [23783, 5783, 2438, ?, ?]项目 #2 表示为 [ ?, 54654, ?, 23783, 9778]项目 #x 表示为 [ ?, ?, 2438, 23783, 9778]
项目#x与项目#2的值最相似,而项目#2的位置#1的值是54654。基本上,你是找到与你感兴趣的位置值最匹配的项目。如果你想要多个属性的值,而这些值只能由多个项目建议,那么情况会更有趣,但你还没有提到数据的性质。