最近我碰到了一个难题,想了很久还没有最好的方案,希望能得到大家一些建议。 是这样的,
我库里记录了很多用户 (千万级) 的访问 URL 的记录,例如 user_id, click_url 1, www.dangdang.com 2, www.360buy.com 2, www.51buy.com 4, sina.com 1, www.amazon.com 。 。 。 我想通过这些用户点击数据能得出结论:如某些 URL 之间有相似接近。这样我可以给用户做推荐,就是您可能也喜欢某个网站。
谢谢大家能讨论一下..给点建议 ;-)
这个就是推荐系统了。 可以看看这个。 https://www.ruby-toolbox.com/categories/Recommendation_Engines
不过千万级,不知道那些能不能处理得了。
推荐你一本书 http://book.douban.com/subject/10769749/
作者我见过本人,在上海举办的第一届推荐系统大会上有过主题分享,而我刚刚好就是那次大会的主持人,获益匪浅。这个作者深入研究了所有知名的关于推荐系统的论文,结合自己的实践,在推荐系统领域算是独树一帜了,有时间的话,我也会好好拜读一下此书。
可以去搜一下 user based 或 item based CF 最好找找相关论文,这里有一篇http://www.stat.osu.edu/~dmsl/Sarwar_2001.pdf 虽然是 01 年的,不过算法是很基本、常用的
#5 楼 @lgn21st 说到推荐算法的书,有本洋书 Programming Collective Intelligence(即 #2 楼 @lidashuang 提到的那本)也值得推荐。你提到的那本我看过介绍,可惜在国外买不到。今天去图灵看了下有电子版的了,立入看到底写得如何。
可以参考 Netflix 之前比赛的算法,如果按你的情况,可以将 不同 url 按访问次数用户组成一个 Matrix,rating 相当于访问次数,其它则是 url,组成一个 matrix,这样就和 Netflix 的 Matrix 差不多,然后用 SVD 分拆,省略部分 column 后,用一个新的用户,对其作 cross product 运算,计算夹角大小,夹角最小的,就是对应口味最相近的用户,找到相近用户后,取其用户的网址就是推荐网址
user_id, url, rating 1, www.google.com, 113 1, www.gmail.com, 110 2, www.ruby-china.com 119 2, www.stackoverflow.com 120
Ruby 版代码在这里
http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/
补充一下楼主,linalg 这个库一直在 Mac 下装不了,如果你成功装了,麻烦告之步骤,谢谢