关键词:
智能推荐、特征工程、特征处理。
术语解释:
- 机器学习(Machine Learning):是关于在计算机上从数据中产生“模型”(model)的算法;
- 数据集(Data Set):一组记录的集合;
- 模型(Model):泛指从数据中学得的结果;
- 特征(Feature):是从原始数据中抽取出来的对结果预测有用的信息,可以是文本或者数据;
- 特征工程(Feature Engineering):是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。过程包含了特征提取、特征构建、特征选择等模块;
- 端计算/边缘计算:与传统的中心化思维不同,它的计算节点更靠近终端,使服务响应高于传统中心化的云计算。
1. 背景
近些年,随着云计算和大数据的快速发展,以机器学习为基础的智能推荐也得到了迅猛发展。利用云计算,不但可以每日更新模型,双11更是小时级更新模型,以实现更准确的推荐。为了更好的优化推荐系统,丰富实时特征,通常会采集大量的行为数据上报到云端。随着闲鱼DAU(日活跃用户数量)的不断增长,这种云端中心化计算模式的问题也暴露了出来。
中心化模式不但要消耗大量的服务器资源,还要面对海量数据处理所带来的延迟问题(分钟级延迟,不可原谅)。
2. 推荐系统的实时性
为什么说,延迟问题对推荐系统是致命的,不可原谅的?
推荐系统的实时性越高,更新速度越快,推荐越准。现在的用户越来越没有耐心,如果不快速抓住用户的心,用户很容易流失。
推荐系统的实时性是指:
(1)“模型”的实时性;
(2)“特征”的实时性
2.1 “模型”的实时性
“模型”的实时性:不断更新模型,可以让模型找到最新的流行趋势,以及最新的相关性信息。
比如,大家都去关注某个明星,模型会通过大多数人的行为数据,发现该明星成为了流行趋势,以及大家所关注的内容。
暂时不对模型的实时性进行详细分析,现在的模型训练还强依赖云计算。
当然,很多人也在尝试,端计算和云计算的联合训练。相信不久的将来,应该会有成果落地。
2.2 “特征”的实时性
“特征”的实时性:以用户最近的行为数据作为输入特征,模型就会发现用户最近的行为习惯,并进行相关的预测和推荐。
比如,你浏览了一部手机,系统就会给你推送不同品牌、不同价位的手机;如果你连续浏览华为手机,系统就会给你推送不同价位的华为手机。你连续行为数据越丰富,推荐越准确。
PS:我们说的,中心化计算模式数据处理所带来的延迟问题,就是影响了特征的实时性。
3. 推荐系统的实时特征
为什么,特征更新只是存在分钟级延迟就不可原谅了?而模型只需要每日更新?
模型的实时性代表流行趋势,通常情况流行趋势不会实时变化,只需要满足活动的趋势变化就可以了。
而特征的实时性代表个体用户的实时行为,如果无法对用户的实时行为做出响应,用户就可能流失。
特征的实时性很重要,其实并不是所有特征都有实时性要求,比如:性别、年龄等。对实时性有要求的特征,我们称之为实时特征。
闲鱼推荐实时特征包括:
(1)浏览行为特征,如曝光、曝光时长、滚动速度等;
(2)详情页行为特征,如进入详情页、询单、收藏、评论、点赞、点击大图等;
(3)购买行为特征,下单后不再进行相关推荐。
浏览行为特征
在推荐场景,连用户都不知道自己想要什么的情况下。我们希望通过细化用户浏览行为特征,来判读他所关注的商品。
引入端计算后,我们可以采集更多维度的用户行为数据,使用户模型更准确。
PS:长时间以来,闲鱼推荐的浏览行为特征几乎是缺失的。算法一直在用伪曝光(下发即曝光)数据做推荐,因为云端根本没有足够多的服务器对曝光数据进行特征处理。曝光数据量实在是太大了,每个用户随意的一次滚动就会产生多条曝光数据。
4. 实时聚类特征 & 实时意图特征
为了解决云端处理延迟问题,我们对实时特征进行了抽象,沉淀了两种端上的实时特征处理方案:
(1)实时聚类特征;
(2)实时意图特征。
4.1 实时聚类特征
我们利用端计算,对行为数据进行实时聚类统计。
我们现在是按60秒的时间插槽聚类统计(时间插槽太大效果不好,太小数据上报太频繁,QPS太高);
我们统计60秒内,某个类目(手机、女裙、美妆等)的曝光次数、曝光时长、点击PV等数据;
如果是强特征事件(点击事件)会实时触发特征上报,如果是弱特征事件(曝光事件)会累计到10个再上报。
全量发布两周后数据统计:
4.2 实时意图特征
该方案,是利用端智能模型,对行为数据进行实时意图判读,并上报到云端。
PS:该方案,我们还没有全量,还在尝试。
5. 总结
本文,利用端计算(边缘计算)将特征工程前置,实现了去中心化,解决了大量原始数据在云端堆积无法实时处理的问题,提高了推荐系统的特征实时性。
端计算的引入,不但提高了推荐系统的实时性,同时完善了用户行为数据,让之前很多不可能的事情变成了可能,大大提升了推荐效率。
实践证明,端云协同将成为未来的趋势。
6. 延展
现在,我们已经将特征数据实时上报到了云端,但是需要到下一次接口请求才会出现相关商品的推荐。这里存在响应的实时性问题。
最近,我们正在尝试对未曝光商品进行数据重刷(还在线上AB测试,效果挺好的,应该马上就会全量了)。
方案概述:由端模型判断是否进行数据重刷,然后客户端发起接口请求(请求新推荐的商品数据),再替换未曝光商品。
原文链接
本文为云栖社区原创内容,未经允许不得转载。