系列随笔:
(二)基于商品属性的相似商品推荐算法——Flink SQL实时计算实现商品的隐式评分
(三)基于商品属性的相似商品推荐算法——批量处理商品属性,得到属性前缀及完整属性字符串
(四)基于商品属性的相似商品推荐算法——推荐与评分高的商品属性相似的商品
2020.04.15 补充:协同过滤推荐算法.pptx
提取码:4tds
算法调优及其他
一、属性的选择
根据 (三)基于商品属性的相似商品推荐算法——批量处理商品属性,得到属性前缀及完整属性字符串 ,我目前的属性选择是:
// 属性前缀为:适用人群-佩戴场合-机芯类型-价格区间-表盘形状-表盘直径,后面的属性排列顺序可以随意 $needs = [31=>'适用人群', 40=>'佩戴场合', 1=>'机芯类型', 39=>'价格区间', 9=>'表盘形状', 11=>'表盘直径', 13=>'表盘刻度', 17=>'表带材质', 14=>'表盘颜色', 25=>'防水', 3=>'外壳材质', 38=>'表盘宽度', 3=>'表盘厚度', 12=>'镜面材质', 16=>'表壳底盖', 19=>'表带颜色'];
再根据 (四)基于商品属性的相似商品推荐算法——推荐与评分高的商品属性相似的商品,可以看出属性前缀的作用具体就是第一步筛选商品(前缀相同的商品,大概有40%-50%的相似);
所以,属性前缀的选择原则就很简单了:第一步筛选把关。什么属性相同时,能确定两个商品是基本相似的?属性前缀的选择不宜太简单,也不宜太严格;
假设,属性前缀我只取"适用人群-佩戴场合",条件过于简单,那么属性前缀相同的商品就会很多很多,增加后期的计算量;
再假设,我把”品牌-表盘颜色-表带颜色“放入属性前缀中,条件过于严格,只能筛选同品牌同颜色的其他表款。那么能推荐的商品数量就会很少很少。不同品牌,但相似的其他商品就完全没有机会。
总结:品牌、颜色之类的属性,属性于加分项。不要强制一定相同,放在属性前缀后面,作为相似系数的加分项。
二、属性加权
1)默认的相似系数计算公式为:
相似系数 = 相同属性位个数/总属性位个数;
注:这里所以的属性权重相同,都是1;
2)如果你觉得,品牌相同是比较重要的,它的权重应该比较高(例如权重设为5);表盘颜色相同也是很重要的(例如权重设为3);其他属性权重为1
那么,新的相似系数计算公式为:
相似系数 = 相同属性位权重和/总属性位权重和;
三、推荐文章、视频
如果想在浏览某商品(或其他什么页面)的时候,想推荐与商品相送的文章或视频:
1)文章和视频关联了商品;
2)查询当前商品(或浏览记录)相似的商品,取得它们的 goodsCodes;
3)查询关联了 goodsCodes 的文章或视频。
四、其他。。。
上一节:(四)基于商品属性的相似商品推荐算法——推荐与评分高的商品属性相似的商品
下一节:完