Content-Based Recommender System是基于产品(商品、网页)的内容、属性、关键字,以及目标用户的喜好、行为,这两部分数据来联合计算出,该为目标用户推荐其可能最感兴趣的产品。
有几个点值得注意:
a、并不太关注其他用户的喜欢、行为或评分等,仅仅关注目标用户;
b、适合于新产品的冷启动,但不适合新用户的冷启动;
c、像电影、音乐类系统,有可能推荐给用户毫无新意的产品,从而缺乏对用户深层需求的挖掘;
d、对于新闻类产品,则可能会抓住客户持续的爱好并进行内容提供。
1、预处理和特征抓取(Preprocessing and Feature Extraction)
a、特征抓取(Feature Extraction):通常将特征抓取为词库(bag of words),对于网页,则需要根据页面布局,选取出主要区块进行抓取;
b、数据清洗(Feature Representation and Cleaning):去除无用词(Stop-Words Removal),合并相同词的不同形式(Stemming),phrases取词(Phrase Extraction)
c、特征选取及赋权(Feature Selection and Feature Weighting): Unsupervised algorithm and Supervised Algorithm
这里用到了TF-IDF,是一种Unsupervised Learning,基本思想是,给予在本文内频次高&在语料库中频次低的词更高的权重,但未考虑到用户喜好。
具体参见wiki:https://zh.wikipedia.org/wiki/Tf-idf
2、获取用户喜好(Content-Based Learning of User Profiles)
a、我们取出目标用户已经打分的items,构建一个Matrix DL, 其中除了存放step1中抓取的所有特征外,还存放了用户对于这些items的打分
b、我们取出用户未打分的items,构建一个Matrix DU,其中除了step1中抓取的特征外,空出用户的打分,下一步要来进行预测。
3、过滤和推荐(Filtering and Recommendations)
a、对于每一个DU中的items,要遍历DL,去计算每个DL_item与其相似性,相似性计算公式如下:
b、为每个DU中的item,选出相似度最高的K个items;
c、计算K个items的均值,也可以按照相似性作为权重,来合成目标item的得分,最终计算完成后,从DU中选出得分最高的p个items推荐给目标用户。
ps:因为程序复杂度高,且类似新闻系统,很有可能要求运算时间,所以,在step.a遍历DL前,可以进行clustering,选出subset再计算相似性并比对
Cosine Similarity:https://en.wikipedia.org/wiki/Cosine_similarity
KNN:https://www.coursera.org/learn/python-machine-learning/lecture/I1cfu/k-nearest-neighbors-classification-and-regression