(一)基于商品属性的相似商品推荐算法——整体框架及处理流程

系列随笔:

(总览)基于商品属性的相似商品推荐算法

(一)基于商品属性的相似商品推荐算法——整体框架及处理流程

(二)基于商品属性的相似商品推荐算法——Flink SQL实时计算实现商品的隐式评分

(三)基于商品属性的相似商品推荐算法——批量处理商品属性,得到属性前缀及完整属性字符串

(四)基于商品属性的相似商品推荐算法——推荐与评分高的商品属性相似的商品

(五)基于商品属性的相似商品推荐算法——算法调优及其他

 

 

2020.04.15  补充:协同过滤推荐算法.pptx

 

提取码:4tds

 

 

整体框架及处理流程


 

 

流程图:

 

 

推荐N个商品,具体步骤:

1)用户行为日志埋点(这里使用的是阿里云log service);

2)Flink SQL(实时计算)统计用户行为对商品的隐式评分,保存到 rc_member_goods 表;

3)预处理平台全部商品,计算其属性前缀或完整属性,保存到 rc_goods_properties 表;

4)rc_member_goods表关联rc_goods_properties表按评分倒序查询当前用户商品,得到2个商品(商品A和商品B)及其他的属性信息;

5)用这两个商品的属性前缀通过rc_goods_properties表查询相同属性前缀的其他商品;

6)查询到的商品分别与商品A、商品B对比计算相似值;

7)相似值倒序,按比例取N个商品;注:如果相似商品数量不足N个,则补充销售高的其他商品;

8)返回推荐结果

 

数据库设计:

CREATE TABLE `rc_config` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增',
  `event` varchar(50) DEFAULT NULL COMMENT '理点事件',
  `code_name` varchar(20) DEFAULT '' COMMENT '商品编码的字段名',
  `score` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '得分',
  `status` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',
  `remark` varchar(50) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_event` (`event`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='商品推荐配置表';
CREATE TABLE `rc_goods_properties` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `goods_code` int(11) unsigned NOT NULL COMMENT '商品编号',
  `property_prefix` varchar(100) DEFAULT NULL COMMENT '属性前缀',
  `properties` varchar(200) DEFAULT NULL COMMENT '属性',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `idx_goods_code` (`goods_code`) USING HASH,
  KEY `idx_prefix` (`property_prefix`) USING HASH
) ENGINE=InnoDB AUTO_INCREMENT=154297 DEFAULT CHARSET=utf8mb4 COMMENT='商品属性表';
CREATE TABLE `rc_member_goods` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `member_code` int(11) unsigned DEFAULT NULL COMMENT '会员编码',
  `cid` varchar(100) CHARACTER SET utf8 DEFAULT NULL COMMENT '设备ID',
  `goods_code` int(11) unsigned NOT NULL COMMENT '商品编码',
  `score` int(10) NOT NULL DEFAULT '0' COMMENT '评分',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `idx_unique` (`member_code`,`cid`,`goods_code`) USING BTREE,
  KEY `idx_cid` (`cid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2777342 DEFAULT CHARSET=utf8mb4 COMMENT='用户商品评分表';

 

上一节:(总览)基于商品属性的相似商品推荐算法

下一节:(二)基于商品属性的相似商品推荐算法——Flink SQL实时计算实现商品的隐式评分

 

posted @ 2020-03-12 18:03  Tiac  阅读(2592)  评论(0编辑  收藏  举报