这个学习过程带给我的教训是,千万不要直接在浏览器检索一个关键词,找到一篇有代码的blog就开始自学。
先上结论:collaborative filtering有两种。举个例子理解,他的目的就是 预测一个rating matrix当中缺失的值。
- Memory-Based/content based
没有用到什么machine learning或是deep learning的知识。核心思想是“相似性度量”。又可以分为item-based和user-based两种。
具体教程:https://blog.csdn.net/u012050154/article/details/52268057
item-based:衡量物品相似性;user-based:衡量用户相似性。原理很简单,代码也很简单,但是写论文的话是不能用的。。我刚开始以为这就是CF。 - Model-Based
早晨忽然想看一下吴恩达讲的collaborative filtering,发现他讲的为什么和我之前的认知不一样!!
这种方法会涉及到user和item各自的feature表示,矩阵分解,还有各种machine learning知识:gradient descent更新optimization function参数之类的。
一个用到tensorflow的collaborative filtering tutorial:https://towardsdatascience.com/building-a-collaborative-filtering-recommender-system-with-tensorflow-82e63d27b420
刚看了看好像并没有用到matrix factorization
Stanford的一个tutorial,比较还原:
https://github.com/rj425/ML-Coursera/blob/master/Exercise-8/ex8.ipynb
还有一篇是tensorflow 用到gradient descent了:
https://github.com/suyixin12123/Attribute_Relational_collaborative_filtering/blob/abc34fe93cdf0d7a645692ebaa95f95be5161783/RCF.py