推荐系统 - 如何计算当前推荐算法的效益

引言

在以前的《推荐系统 - 商品推荐(新人心得)》文章中,咱们已经知道了推荐系统的重要性,以及简单的实现推荐系统。如今咱们还须要注意一个问题:当前的推荐算法的效益如何呢?若是咱们推荐的东西,客户基本不感兴趣,那咱们这推荐系统,至关因而无用的。算法

 

如何计算当前推荐算法的效益

  1. 监听每次推荐给用户的商品
  2. 推荐的商品列表中增长反馈性按钮

 

监听每次推荐给用户的商品

  1. 用户点击推荐商品;
  2. 用户购买推荐商品;
  3. 用户观看推荐商品的时间。

 

/* 推荐记录表 */
CREATE TABLE `goods_recommend` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` int(11) NOT NULL COMMENT '推送给的用户ID', `score` int(11) NOT NULL COMMENT '这次推荐打分', `create_time` int(11) NOT NULL COMMENT '推荐时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐记录表'; /* 推荐商品点击记录表 */
CREATE TABLE `goods_click` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `recommend_id` int(11) NOT NULL COMMENT '推荐ID', `goods_id` int(11) NOT NULL COMMENT '商品ID', `num` int(11) NOT NULL COMMENT '点击次数(防止点击同一件商品屡次,生成多条记录)', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐商品点击记录表'; /* 推荐商品购买记录表 */
CREATE TABLE `goods_buy` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `recommend_id` int(11) NOT NULL COMMENT '推荐ID', `goods_id` int(11) NOT NULL COMMENT '商品ID', `num` int(11) NOT NULL COMMENT '购买数量', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐商品购买记录表'; /* 推荐商品浏览时间表 */
CREATE TABLE `goods_read` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `recommend_id` int(11) NOT NULL COMMENT '推荐ID', `goods_id` int(11) NOT NULL COMMENT '商品ID', `second` int(11) NOT NULL COMMENT '停留多少秒', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐商品浏览时间表';

 

推荐的商品列表中增长反馈性按钮

  1. 每一个商品增长评价按钮,获取用户对于某个推荐商品的评价:1-5分;
  2. 推荐商品列表增长换一批按钮,经过这个按钮的点击预判用户的满意程度。
/* 推荐商品的打分记录表 */
CREATE TABLE `goods_score` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `recommend_id` int(11) NOT NULL COMMENT '推荐ID', `goods_id` int(11) NOT NULL COMMENT '商品ID', `score` int(11) NOT NULL COMMENT '分数', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐商品的打分记录表'; /* 推荐商品是否喜欢记录表 */
CREATE TABLE `goods_like` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `recommend_id` int(11) NOT NULL COMMENT '推荐ID', `is_like` int(11) NOT NULL COMMENT '是否切换(若是切换,表明用户对于此次的推荐不怎么满意)', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐商品是否喜欢记录表';

 

统计数据

上面咱们就已经获取到了咱们须要的数据(具体须要什么数据,根据自身业务来决定),如今咱们须要对这些数据进行统计了。学习

  1. 用户点击的商品次数 / 共推荐给用户的商品数量 = 这个推荐系统对于这个用户的点击比例;
  2. 用户的购买数量 / 共推荐给用户的商品数量 = 这个推荐系统对于这个用户的购买比例;
  3. 有浏览时间从大到小排序 = 用户比较感兴趣的推荐商品(估算,由于不能肯定用户是浏览哪一个商品所逗留的时间);
  4. 经过用户对于这次推荐商品的打分 = 获取用户感兴趣的商品(较为精确,由于用户针对每一个商品打分);
  5. 经过判断用户是否切换的记录 = 来判断用户是否不满意这次推荐的商品(估算,由于用户可能不喜欢此次推荐的商品,但也没有点击换一批按钮)。
  6. 统计全部用户点击商品的次数 / 总共推荐的商品次数 = 整个推荐系统的点击比例;
  7. 统计全部用户购买商品的次数 / 总共推荐的商品次数 = 整个推荐系统的购买比例;
  8. 统计浏览时间大于10秒(判断停留10秒为感兴趣)的推荐次数 / 总共推荐的次数 = 整个推荐系统的满意比例(估算)。

 

问:为何须要用户ID字段?spa

答:由于这样能够记录每一个用户对推荐系统的行为,能够将这些统计精确到每一个用户中,这样能够针对不满意的用户进行系统的调整用户推荐数据。code

 

问:为何须要用户点击推荐商品记录?blog

答:由于用户点击了,说明这个推荐也算是成功的,不购买的缘由,多是暂时不须要,或者这个商品的评论问题。排序

 

问:为何须要记录用户浏览推荐商品的时间?ci

答:用户浏览的时间长了,证实是对于这个比较感兴趣的,也能够作为整个推荐系统效率的部分评分标准。unicode

 

问:为何须要打分记录?get

答:由于这能够更直观的反馈用户对于此次推送的商品,哪些是满意的,哪些是不满意的,能够更精确的推送心仪的商品给客户。class

 

总结

本文主要讲了如何计算当前推荐算法的效益的一些方法:

  1. 记录用户点击推荐商品行为;
  2. 记录用户购买推荐商品行为;
  3. 记录用户浏览推荐商品时间行为;
  4. 记录用户给推荐商品的打分;
  5. 记录用户点击“换一批”的行为。

 

结语

  1. 只有不断的对用户行为进行分析,不断的统计分析推荐算法的效益,才能搭建更好的推荐系统。
  2. 此篇文章只是小编的我的思路,仅供参考;
  3. 具体的收集数据、分析算法,须要结合自身的业务来出发;
  4. 若有更好的想法,或者发现小编的不足,欢迎你们评论留言给小编;
  5. 让咱们一块儿学习,一块儿进步。
相关文章
相关标签/搜索