在以前的《推荐系统 - 商品推荐(新人心得)》文章中,咱们已经知道了推荐系统的重要性,以及简单的实现推荐系统。如今咱们还须要注意一个问题:当前的推荐算法的效益如何呢?若是咱们推荐的东西,客户基本不感兴趣,那咱们这推荐系统,至关因而无用的。算法
/* 推荐记录表 */ 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='推荐商品浏览时间表';
/* 推荐商品的打分记录表 */ 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='推荐商品是否喜欢记录表';
上面咱们就已经获取到了咱们须要的数据(具体须要什么数据,根据自身业务来决定),如今咱们须要对这些数据进行统计了。学习
问:为何须要用户ID字段?spa
答:由于这样能够记录每一个用户对推荐系统的行为,能够将这些统计精确到每一个用户中,这样能够针对不满意的用户进行系统的调整用户推荐数据。code
问:为何须要用户点击推荐商品记录?blog
答:由于用户点击了,说明这个推荐也算是成功的,不购买的缘由,多是暂时不须要,或者这个商品的评论问题。排序
问:为何须要记录用户浏览推荐商品的时间?ci
答:用户浏览的时间长了,证实是对于这个比较感兴趣的,也能够作为整个推荐系统效率的部分评分标准。unicode
问:为何须要打分记录?get
答:由于这能够更直观的反馈用户对于此次推送的商品,哪些是满意的,哪些是不满意的,能够更精确的推送心仪的商品给客户。class
本文主要讲了如何计算当前推荐算法的效益的一些方法: