从0开始做互联网推荐-以58转转为例
从0开始做互联网推荐【产品+算法+实现】
一、58转转简介
58旗下真实个人闲置物品交易平台
二、从0开始设计推荐产品框架
(1)首页推荐:提取用户画像,根据线下提取出的用户年龄、性别、品类偏好等在首页综合推荐宝贝
(2)宝贝详情页推荐:买了还买,看了还看类的关联宝贝推荐
(3)附近推荐:和首页推荐的差异在于,提高了地理位置的权重,地理位置不仅要包含当前地理位置,还需要包含常见活跃区域,例如家里、公司等
(4)搜索推荐:除了关键词全匹配,要考虑同义词、近义词、易错词、拼音等推荐,产品层面,提示“你是不是想找xxoo宝贝”
(5)召回推荐:在用户退出系统后,通过RFM模型做优惠券推送或者消息推送做客户挽留与召回
TIPS:什么是RFM模型?
RFM模型:根据用户最近一次购买时间Recency,最近一段时间的购买频度Frequency,最近一段时间的购买金额Monetary,加权得到的一个代表用户成交意愿的一个分值。
三、从0开始进行推荐策略实现
【用户画像】
根据用户填写的资料、用户历史行为(购买、收藏、喜欢、分享、评论、浏览等行为)、微信背后的用户画像,得到用户的特性画像:
年龄段 -> 推荐母婴、3C用品?
性别 -> 推荐母婴、美容保健用品?
手机型号 -> 推荐手机
活跃时间 -> 在这个时间段推送消息
品类偏好 -> 相关品类推荐
地域 -> 附近推荐
…
【如何构建画像】
(1)读取用户安装的应用程序列表构建画像
装有滴滴用户端 -> 没有车
装有滴滴司机端 -> 有车
装有CSDN -> 男性
装有美柚、美颜APP -> 女性
…
(2)用户行为日志
启动日志 -> 获取活跃时段
经纬度 -> 获取活跃地域
购买、收藏、喜欢、分享、评论、浏览-> 获取品类偏好
第三方数据 -> 完善用户画像
【宝贝画像】
58转转的宝贝都是非结构化的数据,比较难做统一的宝贝画像,只能细分品类的做宝贝画像,例如手机画像等。
【如何构建宝贝画像】
对于58转转来说,要做宝贝画像必须细分类别,可以分词词频统计配合人工review的方式画像,以鞋为例,画像可能为
单鞋
纯牛皮
尺码
适合春秋穿
女鞋
价格及变动
包邮
【标签化与个性化推荐】
画像完成之后,如何对用户进行宝贝推荐呢?
(1)给用户和宝贝画像完毕之后,要将每一个用户和每一个宝贝打上标签TAG
(2)统计用户uid所有购买、收藏、喜欢、分享、评论、浏览的所有宝贝ID集合set<bb-id>
(3)统计这些宝贝ID所有对应的TAG,使用加权打分的方式,可以根据频次统计出对各TAG的喜好程度
(4)对于所有宝贝,根据uid对各TAG的喜好程度,使用加权打分的方式,可以统计出对各宝贝的喜好程度
(5)排除已经购买、收藏、喜欢、分享、评论、浏览过的宝贝,其他宝贝按照打分高低推荐即可
(6)搜索推荐需要加上“搜索条件”,附件推荐需要加强“附近权重”
需要注意的是,个性化推荐的准确性,一定程度上依赖于历史行为数据的收集,对于新用户,在缺乏历史行为积累时,可以推荐“热度最高”的宝贝,未来再根据其历史行为,不断增强推荐的准确率。
【分类预测推荐】
一个用户对一个宝贝是否进行购买,可以抽象成一个0和1的分类问题,也可以抽象成一个购买概率的数学问题,可以构造分类模型来计算用户对每个宝贝的购买概率,将概率最高的作为推荐的宝贝。
为了实现分类预测推荐,需要:
(1)准备训练数据集,包含用户、宝贝、用户是否购买了宝贝等历史数据,需要注意的是,数据集应当覆盖尽可能多的用户(要包含所有TAG)和宝贝(要包含所有分类及TAG)
(2)构造训练分类模型
(3)根据模型训练的结果,计算每一个用户对每一个宝贝某买的概率
(4)按照概率排序,对宝贝进行推荐
【协同过滤推荐】
协同过滤,用过的人都知道,不一定效果最好,但几乎适用于所有的业务场景:当向用户A做协同过滤推荐时,可以先找到和他兴趣相似的用户群体G,然后把G喜欢的、并且A没有点击过的宝贝推荐给A,这就是基于用户的协同过滤。
为了实现系统过滤推荐,需要:
(1)准备训练数据集,根据每个用户对每个宝贝的喜好,构建喜好矩阵(这是一个非常稀疏的矩阵),根据用户对宝贝购买、收藏、喜欢、分享、评论、浏览的行为量化这个喜好
(2)构造系统过滤训练模型
(3)针对每一个用户,根据模型给出其喜好宝贝列表
在做协调过滤推荐时需要注意,较新的宝贝,由于大部分人都没有相关喜好数据,所以使用协同过滤推荐时,新宝贝比较难被推荐上去,这是协同过滤的缺点,需要综合其他推荐策略来解决。
以上内容均来自微信公众号“架构师之路”胡剑老师的文章,欢迎关注。