上下文:时间(季节、节日、工作日/周末、上班时间/下班时间)、地点(在厕所还是在办公室、在哪个商圈/小区)、跟谁在一起(同学、同事、情侣、父母、子女)、心情怎么样(女性情绪化更严重)
1. 用户的兴趣是随时间evolve的,最近的行为最能反映当下的兴趣(短期画像 VS 长期画像)
2. 物品的生命周期:特别是新闻,过后就死;电影中的精品可以经久不衰;
3. 季节效应:冬天喝汤夏天喝冷饮;圣诞节购物,情人节买花买巧克力;
A.
推荐系统的实时性:亚马逊,我空刷新得不到列表更新,我收藏/评价/购买了东西,列表就会更新;需要平衡用户的近期行为和长期行为,列表更新既能反应近期兴趣,又要保证兴趣预测的延续性;
B.
推荐算法的时间多样性:用户不同时间进来,推荐的东西尽量不太相同;
一周里最热门的100个物品,每天推的10个物品里,有7个是无放回采样的这100个物品,这样的效果,比纯推热门和纯随机推都要好。
1. 用户有了行为,要及时调整推荐结果;2. 即使用户没有行为,也要周期性更新推荐结果;
3种增加时间多样性的方法:
1. 推荐结果保持一定随机性;
2. 对前几天已经推给用户的物品们,进行适当降权;
3. 每次用不同的召回算法;
C. 时间敏感的推荐算法:
1. 最近最热门:某物品i,所有被用户访问的降权次数之和,就是i的近期热门度;降权的一次访问=; T是当前时刻,t是物品i被访问的时刻;
2. 带时间上下文的ItemCF:
a. 物品和物品相关性计算,分子里的(item_i, user, item_j),考虑这个user买i和买j的时间间隔,间隔越大加权越小;
b. 计算该物品i推荐给用户u的分数,以前是把<和i最相似的K个物品>和<u购买过的物品>求交集,对交集的所有物品j, 加和sim(i,j); 加入时间上下文,则加和所有j的<sim(i,j)*u购买j距离当前时间的降权>, 这样强调u最近购买的物品,找和这些物品相似的物品们来推荐;
3. 带时间上下文的UserCF:
a. 用户和用户的相关性计算,分子里的(user_i, item, user_j),考虑user_i和user_j购买这个物品的时间差;
b. user_j购买这个物品i距离当前时刻近不近,进行降权;
D. 基于位置的推荐算法:
2条规律:1. 兴趣本地化(不同国家/城市/商圈的人,兴趣有差异);2. 活动本地化(大家的活动范围普遍比较近,即只关心附近的POI)
1. 如果只有用户的位置信息:对区域建立树结构(可用行政区划,也可用GeoHash按经纬度划分区块),每个区块内的用户,建立Item-Item相似度,为了鲁棒性,可对叶子到根上的所有节点进行加权;
2. 如果只有物品的位置信息:先用通用ItemCF计算出用户u和物品i的相关度,再用物品i和u之前打分过的物品之间的平均距离得到惩罚值,相关度-惩罚值
3. 如果用户位置和物品位置都有,则综合以上两方面,推荐满足这个区域的人群兴趣,且离这个用户较近的物品们;