【发布时间】:2012-07-15 04:43:33
【问题描述】:
我知道这不是特定于编码的问题,但这是最适合提出此类问题的地方。所以请多多包涵。
假设我有一本像下面这样的字典,列出了每个人的十个喜欢的项目
likes={
"rajat":{"music","x-men","programming","hindi","english","himesh","lil wayne","rap","travelling","coding"},
"steve":{"travelling","pop","hanging out","friends","facebook","tv","skating","religion","english","chocolate"},
"toby":{"programming","pop","rap","gardens","flowers","birthday","tv","summer","youtube","eminem"},
"ravi":{"skating","opera","sony","apple","iphone","music","winter","mango shake","heart","microsoft"},
"katy":{"music","pics","guitar","glamour","paris","fun","lip sticks","cute guys","rap","winter"},
"paul":{"office","women","dress","casuals","action movies","fun","public speaking","microsoft","developer"},
"sheila":{"heart","beach","summer","laptops","youtube","movies","hindi","english","cute guys","love"},
"saif":{"women","beach","laptops","movies","himesh","world","earth","rap","fun","eminem"}
"mark":{"pilgrimage","programming","house","world","books","country music","bob","tom hanks","beauty","tigers"},
"stuart":{"rap","smart girls","music","wrestling","brock lesnar","country music","public speaking","women","coding","iphone"},
"grover":{"skating","mountaineering","racing","athletics","sports","adidas","nike","women","apple","pop"},
"anita":{"heart","sunidhi","hindi","love","love songs","cooking","adidas","beach","travelling","flowers"},
"kelly":{"travelling","comedy","tv","facebook","youtube","cooking","horror","movies","dublin","animals"},
"dino":{"women","games","xbox","x-men","assassin's creed","pop","rap","opera","need for speed","jeans"},
"priya":{"heart","mountaineering","sky diving","sony","apple","pop","perfumes","luxury","eminem","lil wayne"},
"brenda":{"cute guys","xbox","shower","beach","summer","english","french","country music","office","birds"}
}
我如何确定具有相似喜好的人。或者也许两个人最相似。此外,如果您可以为我指出基于用户或基于项目的过滤的适当示例或教程,这将很有帮助。
【问题讨论】:
-
编程集体智能的Chapter 2 非常全面地介绍了这一点。示例代码在 Python 中,这是另一个优点。
-
我知道这本书,但它已经很老了(2007 年出版)而且网络已经发生了很大变化。所以我认为这本书的大多数示例都不会在今天起作用。跨度>
-
基本技术仍然有效,应该适用于您提供的示例数据。如果您正在寻找更复杂/可扩展的东西,那么您可能想在您的问题中提及这一点。还可能值得一提的是您尝试过或考虑过的事情。
-
@RajatSaxena 推荐系统是数学。数学不会过时。本书中的算法在今天和五年前一样有效。 (当然,现在可能有更好的算法,但你还是应该从基本的开始)。
-
@ShawnChin Shawn Chin 给了你答案。书中的案例研究可能不起作用,但算法是常青树:)。应用相同的基于距离的算法,但是如果你有大数据而不是使用分布式计算的东西,就是这样。这是一个很容易解决的问题(考虑到 100 GB 的规模),除非您要与 Netflix 价格竞争。