2011-11-20 56 views
5

Im相当多的新的数据挖掘和推荐系统,现在正试图建立用户某种REC系统具有这样的参数:结合不同的相似之处建立一个最终相​​似

  • 城市
  • 教育
  • interest

为了计算它们之间的相似度,我们要应用余弦相似度和离散相似度。 例如:

  • 城市:如果x = y,则d(X,Y)= 0。否则,d(X,Y)= 1
  • 教育:在这里,我将使用余弦相似性词语出现在部门或学士学位的名称
  • 兴趣:会有硬编码感兴趣的用户数可以选择和余弦相似度将基于两个向量这样计算:

1 0 0 1 0 0 ... n 
1 1 1 0 1 0 ... n 

其中1表示存在的利益和n是所有利益的总数。

我的问题是: 如何以适当的顺序组合这3种相似性?我的意思是总结他们听起来不是很聪明,是吗?我也想听听关于我的“新手相似系统”的评论,哈哈。

+0

有很多方法,你到目前为止阅读过很多文献吗? –

回答

3

有没有难以及快速的答案,因为这里的答案很大程度上取决于您的输入和问题域。机器学习的很多工作都是准备你的输入的艺术(而不是科学),出于这个原因。我可以给你一些一般想法来思考。你有两个问题:从每个项目中做出有意义的相似性,然后将它们合并。

这个城市的相似度听起来很合理,但实际上取决于你的域名。在同一个城市中是否意味着一切,而在邻近城市中意味着什么呢?例如,在同样规模的城市中是否可以算作任何东西?在相同的状态?如果他们做你的相似性应该反映。

教育:我理解你为什么会使用余弦相似度,但这不会解决真正的问题,这是处理不同的令牌,意味着同样的事情。你需要“eng”和“engineering”匹配,“ba”和“bachelors”等类似的东西。一旦你准备这些令牌,它可能会给出好的结果。兴趣:我不认为余弦在这里是最好的选择,尝试一个简单的tanimoto系数相似性(只是交叉大小的交集)。

你不能总结它们,因为我假设你仍然想要一个范围[0,1]的值。你可以平均他们。这就使得这些假设都可以直接比较,如果你愿意的话,它们是相同的“单位”。他们不在这里;例如它不像是概率。

它可能仍然可以在实践中确定它们的平均值,或许还有权值。例如,在这里同一座城市与拥有完全相同的利益一样重要。这是真的还是应该不那么重要?

你可以尝试和测试不同的变化和权重,希望你有一些测试历史数据的方案。我会向您指出我们的项目Mahout,因为它有推荐和评估的完整框架。

然而,所有这些解决方案都是拙劣的和启发式的。我想你可能想要采用更正式的方法来进行特征编码和相似之处。如果你愿意购买一本书并且喜欢Mahout,Mahout in Action在关于如何选择和编码特征的聚类章节中有很好的覆盖面,然后如何在它们之间做出一个相似性。

+0

谢谢!对一般想法的真实覆盖范围有很大帮助。 我会考虑更多关于位置相似性的内容,并且我完全理解你对教育单词匹配的想法,我希望我将来也能够这样做:) – Leg0

+0

那么,如何推荐我来平均所有这些相似之处?例如,如果它们的重要性按降序排列,我只是无法想象它。 – Leg0

+0

没有订购的想法;你可以根据你构成的权重计算相似度的加权平均值。 –

0

这是机器学习中的常用技巧。

城市:如果x = y,则d(X,Y)= 0。否则,d(X,Y)= 1。

我认为这意味着你用一对的-K编码。那很好。

教育:在这里,我将用余弦相似性的话出现在部门或学士学位的名称

你也可以使用一个编码这里,产生的载体之一的-K大小| V |其中V是词汇表,即训练数据中的所有单词。

如果您现在对兴趣数进行归一化,使其始终位于[0,1]范围内,则可以在最终向量之间使用普通的L1(曼哈顿)或L2(欧几里德)距离度量。后者对应于信息检索的余弦相似性度量。

试用L1和L2来决定哪个最好。

+0

谢谢,但并没有真正得到“one-of-K coding”短语 – Leg0

+0

@ Leg0:在评论框中解释有点困难。看看[我的这个问题](http://stackoverflow.com/questions/8020403/1-of-k-coding-in-octave)为例。 –