看了几页推荐系统。
1. 基于用户的协同过滤
2. 基于物品的协同过滤
基本的思想倒是很好理解,而且在过程中还会用到一些熟悉的技术,类似逆文档频率之类的:物品过于流行,就需要降低物品的影响或贡献;用户过于活跃,就需要降低用户的影响。进一步讲,UserCF中,需要通过两个用户喜欢的物品的交集来计算他们的相似度,那显然交集中各个物品对相似度的贡献不应该是相同的:流行的物品贡献小,而冷门的贡献要大。在ItermCF中,需要通过计算物品的相似度推断用户用某新物品的喜好,而物品的相似度是通过计算同时喜欢过这两个物品的用户数量来定义的,那么如果有一个超级活跃用户,物品相似度矩阵将非常大。
都是通过idf类似的思想实现的。
但是这两个算法都是只考虑用户的“行为”或表现,不关心物品或用户的内存联系,可能这也是进一步提高的瓶颈。
《推荐系统实践》一书中68页的推倒似乎不正确,在网上看到的一个推倒也和我想的不同。自己先记一下:
关于公式的疑问,现在明白了:分批和增量的区别而已。数据量大时分批的性能就差,所以就搞成增量的。关键是性能不下降太多。
这个论文说的明白:A Guide to Singular Value Decomposition for Collaborative Filtering