乐趣区

关于数据挖掘:设计一款基于内容的推荐系统的简单思路

简略记录一下举荐零碎设计的思路,SQL 不是最终的 SQL,只是提供一种思路。对于举荐总得无非是基于用户举荐和基于举荐内容举荐这两种

一、基于用户的个性化举荐

千人千面

办法 1,根据用户浏览内容属性间接举荐(《相似最间接的关键词搜寻后果》)

以后用户的历史记录表

  • {运动鞋, 李宁, 价格 220, 男}
  • {运动鞋, 匹克, 价格 240, 男}
  • {运动鞋, 匹克, 价格 200, 男}

举荐产品策略

SELECT * FROM t_goods WHERE cat_name = "运动鞋" AND 品牌 IN ("李宁","匹克") AND price BETWEEN 200 AND 240 AND gender = "男" 

办法 2,剖析用户行为生成标签(《你可能还喜爱》)

用户历史记录表

  • {运动鞋, 李宁, 价格 220, 男}
  • {运动鞋, 匹克, 价格 240, 男}
  • {运动鞋, 匹克, 价格 200, 男}

1. 剖析用户历史为用户贴标签
用户标签

  • 男性
  • 国产爱好者
  • 中等支出人群
  • 年老

2. 查问举荐内容前,兑换成商品标签
商品标签

  • 男鞋
  • 国产牌子
  • 中等价位
  • 年老款

举荐产品策略

SELECT * FROM t_goods_tags WHERE tags_name IN (男鞋, 国产牌子, 中等价位, 年老款,)

办法 3,找出有同样趣味的群体(《其余用户浏览并还买了》)

用户历史记录表

  • {运动鞋, 李宁, 价格 220, 男}
  • {运动鞋, 匹克, 价格 240, 男}
  • {运动鞋, 匹克, 价格 200, 男}

1. 找出有同样浏览记录的人群

SELECT user_id FROM t_goods_history WHERE goods_id IN (1,2,3) 

后果:

  • 男 B
  • 男 C

2. 找出该些用户的其余浏览记录,而后举荐进来

SELECT * FROM t_goods_history WHERE user_id IN ("男 B","男 C") ADN goods_id NOT IN (1,2,3)

二、基于物品内容的举荐

实用于用户首次进来无历史行为

办法 1,简略根据商品的属性举荐同款

用户以后拜访的商品

  • {运动鞋, 李宁, 价格 220, 男}

找出同款产品的举荐产品策略

SELECT * FROM t_goods WHERE cat_name = "运动鞋" AND 品牌 IN ("李宁")  AND gender = "男" 

办法 2,根据相似性举荐

用户以后拜访的商品

  • {运动鞋, 匹克, 价格 240, 男}

1. 转换成以后商品的标签

  • 分类:运动鞋
  • 品牌品位:公众
  • 品牌类型:国产
  • 价格:中等
  • 样式:男
  • 年龄段:年老款

2. 抉择数据库中中热门在售产品进行批量打分。分数越高,与该商品越类似。并把每个商品的打分后果存进 t_goods_socre 表
譬如:

if($goodsTags['样式']== '年老款'){$score += 10;}

if($goodsTags['上市工夫'] == '跟该商品上市工夫差不多几年'){$score += 5;}

.....

3. 举荐产品策略如下

SELECT * FROM t_goods_socre WHERE goods_id = 1 order by score desc limit 10
退出移动版