SXK课程推荐ItemCF算法设计

概述

SXK中需要向终端用户进行课程或活动推荐

最基本的推荐算法是协同过滤算法,通常又有2种

  • ItemCF - 商品协同过滤(Collaboration Filter)

即对于被推荐的目标用户,先找出该用户偏好的商品,再对其推荐具有相似特征的商品,俗称“物以类聚”

  • UserCF - 用户协同过滤(Collaboration Filter)

即对于被推荐的目标用户,先找出和其行为相似的其他用户,再向其推荐这些相似行为用户偏好的商品,俗称“人以群分”

协同过滤算法的核心是相似度计算,比如ItemCF是计算商品之间的相似度,UserCF是计算用户之间的相似度

两种协同过滤对比

对比项目 UserCF ItemCF
性能 适用于用户较少的场合,如果用户过多,计算用户相似度矩阵的代价较大 适用于物品数明显小于用户数的场合,如果物品很多,计算物品相似度的代价交大
推荐覆盖率 取决于相似用户偏好领域广度 较为单一,只覆盖相似物品
实时性 用户有新行为,不一定需要推荐结果立即变化 用户有新行为,一定会导致推荐结果的实时变化
冷启动 在新用户对少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度是离线计算的
新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给其他用户 新用户只要对一个物品产生行为,就能推荐相关物品给他,但无法在不离线更新物品相似度表的情况下将新物品推荐给用户
推荐理由 很难提供 可以根据用户历史偏好行为归纳推荐理由

由于两种算法各有优劣,单一使用并不是最佳选择,因此在实际落地时,应当考虑混合算法。
例如向每个用户推荐10个物品,先推荐相似物品5个,再从相似偏好用户的其他物品中补充5个。

针对SXK的情况,理论上的正常形态应该是用户数量远远大于课程,因此首先采用itemCF算法,计算课程之间的相似度,并对用户进行推荐

推荐计算流程

基于用户对课程的偏好度的协同过滤推荐算法流程
流程解释

  1. 计算每个课程的用户偏好度

偏好度是用户对于一个课程的各项关联数据的一个相加结果
首先搜集能表达用户与课程之间关系的数据,称为计算因子,包括:

计算因子 权重
单次课程购买 3
课程收藏 2
机构收藏 1
课程评分 1
兴趣标签匹配 1
地理位置 2
后台加权次数 5

计算因子需要乘以权重,权重由系统预先定义。
按照以上计算因子,计算出被推荐用户对每门课程的偏好度,

  1. 偏好度降噪,归一

在计算偏好度的过程中,会出现一些错误值或缺失值,需要把这些异常值去掉,称为降噪。例如,某采购员,所有分类的商品都要大量采购,那么其偏好所有商品,此时其行为不可参考,需要去掉。

归一化的意思是将特征值用统一的标杆对齐。比如同一时间指标,有的用年,有的用秒,需要统一计算单位。

  1. 计算课程之间相似度

计算课程1和课程2之间的欧式距离以表征相似度
欧式距离=偏好度的差的平方的正平方根
假设课程A,课程B评分为, 5, 8
根据n维空间的欧几里得距离公式

那么课程1和课程2之间的相似度为

同上,课程两两计算后,最终可以获得一个对称矩阵如下(数据是乱写的)

课程A 课程B 课程C
课程A 0.3 0.6 0.33
课程B 0.4 0.7 0.22
课程C 0.5 0.4 0.14
  1. 邻居筛选

找出与目标用户最相近的N个课程
有了物品或用户两两之间的相似值,则可以选择每个物品或用户的邻居物品或用户。
如果设定好了邻居个数为X,那么在N-1个item中相似性topX的item为其邻居;如果设定了邻居的最小相似性simy,那么N-1个item中相似性大于simy的为邻居。筛选邻居可以降低矩阵的负责程度和噪音,也可以在最后实现推荐的时候确定推荐物品的个数。

  1. 构建相似矩阵

在步骤计算相似性的最终结果,就是本部分需要的相似矩阵。在某些情况下经过筛选邻居,会将原始的相似性矩阵进行降维,如将矩阵中0只过多的item去掉。
比如在计算时尚女装的推荐时,发现跟钢材工具类物品相似性极低,则在全量的相似矩阵剔除掉钢材工具物品的部分。相当于去掉矩阵中0向量。

  1. 计算推荐结果

接口设计

测试方法

在已知测试数据集合的情况下,验证 均方根误差(RMSE)和预测准确度(MAE)

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧

微信