codecamp

从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)针对每一个用户,根据模型给出其喜好宝贝列表

在做协调过滤推荐时需要注意,较新的宝贝,由于大部分人都没有相关喜好数据,所以使用协同过滤推荐时,新宝贝比较难被推荐上去,这是协同过滤的缺点,需要综合其他推荐策略来解决。


好了,暂时先到这里,希望对58转转,以及其他刚开始做推荐的互联网产品有帮助。

注:本文是58到家推荐负责人@王洪权 在和58转转做技术交流时,@58沈剑 做的纪要。


58同城推荐系统架构设计与实现
从0开始做垂直O2O个性化推荐-以58到家美甲为例
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }