1.lambda架构
非实时/离线(offline):训练模型。
实时/在线(online):用模型计算推荐列表。在特征文件中寻找某特征对应的权重。
2.案例一:商品推荐
2.1基于物品的协同过滤
基于物品的协同过滤(itembaseCF):思想的本质是依据特征来寻找用户喜好规律,即和用户喜欢/购买的东西类似的东西,就是用户也可能喜欢的东西(需要推荐的)。
第一步,(用户反馈),先了解某个用户喜好什么;
第二步,(召回),找出哪些物品和该用户喜好的物品是相似的/相关的;
第三步,(排序推荐),将召回的物品打分排序,按分数做推荐。
【问题1】怎样衡量用户喜好?
通过用户反馈/用户历史行为来暗示用户喜好,用户反馈包括显式反馈和隐式反馈,隐式反馈信息更准确的反应了用户喜好(例如:实际浏览过、下载过、购买过)。
【问题2】如何理解物品之间的“相似度”?
相似不仅指物品之间属性/特征等类似,也指物品之间相关程度高,例如:总是同时出现,参考“啤酒和尿不湿”的例子。可以认为两个物品之间一起出现的次数越多,就具有更大的相关性。
2.2同现矩阵
【问题3】如何对物品进行评分推荐?
首先统计物品同现的次数,用以衡量物品之间的相关性,形成同现矩阵(对称矩阵);
根据用户反馈信息,得到用户对部分商品的评分(评分的结果是总体稀疏的,即大部分商品都没有评分),例如:拿到用户显式的打分分值、将用户隐式下载过/购买过的物品的打分设置为1。
对于一个用户没有评过分的新物品item1,和它相关的物品是item2,如果用户对item2有很好的反馈,打分很高,item1和item2的相关度也高,那么item1就是应该被推荐给用户的。所以,待推荐物品的最终得分就依赖于相关度以及用户评分这两个因素,推荐结果=同现矩阵X评分矩阵。
此时,推荐任务的本质就是将原本稀疏的评分矩阵,转为稠密的评分矩阵,这样才能依据结果排序并推荐。
2.3冷启动问题
对于新用户,没有用户历史行为数据,也就没有对应的评分矩阵可以用来计算打分结果。
此时可只使用物品/商品基本特征做推荐,解决冷启动问题。商品的基本特征权重代表了商品的热度/受欢迎程度,是由所有用户行为分析得出的。
计算某个商品的n个特征对应的权重总和,根据分数高低,推荐给新用户。
【问题4】考虑了冷启动问题,最终如何做推荐?
考虑冷启动问题,应该整合以下两部分结果来做打分排序和推荐:
基于商品相似度打分的结果(体现了用户偏好) + 商品基本特征权重结果(体现了商品自身热度)。
2.4特征选择、模型构建、模型使用
推荐的目的:希望用户购买/下载系统推荐给他的商品。
- 根据任务的目的,同时考虑推荐打分的依据,这是有监督的机器学习,训练集的标签(label)应该为已购买/已下载,样本特征应该是相关的商品组合以及商品基本属性特征。
假设一共有件商品,同现矩阵的大小是,理论上,商品组合的数量是,但基于训练数据,实际商品组合只有组(),没有出现的组合次数为0;
理论上,用户评分的矩阵应该是,但实际用户对很多商品都没有评分,分值设为0。