crab:
yum install python-dev python-numpy python-numpy-dev python-setuptools python-numpy-dev python-scipy libatlas-dev g++
pip install -U scikits.learn -i https://pypi.tuna.tsinghua.edu.cn/simple/
git clone https://github.com/muricoca/crab.git
python setup.py install
Model: user item喜好矩阵 (稀疏表示,没有语义信息,可以考虑使用word2vec)
uid:{itemid:preference}
Similarity: 基于user还是item,进行协同过滤
recommender:过滤的方式,比如knn
基本上是不太靠谱的实现(过于简单)
word2vec-recommender:
用item的上下文来描述一个user,这样词汇表是item的集合,doc就是user的表示,用word2vec 训练后,可以表达语义上的相似性。
word2vec:本质是把word,连同所属的上下文环境(context),进行了降维处理,使得降维后的向量,不仅数据用向量的多个维度进行存储,同时能够表达word在语义上的相似性。
推荐引擎:本质是利用item或user喜好的相似性,对user进行合适的推荐。
word2vec在推荐上的应用设想:需要找到word的对应物,以及符合事实的语义上的word的集合(语料库corpus)。
例子:1、item embeding:
1》记录一个用户每天浏览的item集合,
2》把这个集合作为语句进行处理
3》一段时间间隔后,针对单个user的所有语句进行训练
4》针对某个user的item的相似性,体现在word2vec的相似性上。
以上设想成立的条件:某个人的喜好在某个时间段内是稳定的;user自己有喜好但是可能连自己都说不清楚;user的浏览真实的表达了其喜好,即选择看的东西是自己喜欢的。
2、user embeding
1》某个item在促销时,记录一天内购买过的user序列
2》统计所有item的购买user序列
3》通过item的向量相似性推荐item
3、已有很多user的选择后,新用户可以进行聚类