推荐一直是电商平台的重要流量入口。以往在电商平台上,推荐的场景更多的覆盖在交易的各个环节,比如详情页、购物车、订单及支付等。近年来推荐发展逐渐的多样化,场景上逐渐覆盖到各流量入口,推荐的实体也扩展到活动、类目、运营位等。
在电商网站里进行商品推荐,可以提高整个网站商品销售的有效转化率,增加商品销量。通过用户已经浏览、收藏、购买的记录,更精准的理解用户需求,对用户进行聚类、打标签,推荐用户感兴趣的商品,帮助用户快速找到需要的商品,适时放大需求,售卖更加多样化的商品。甚至在站外推广时,能够做个性化营销。
平台前端实现用户千人千面,而后台需要建立复杂的用户行为数据采集、数据存储、数据建模和用户画像过程,单纯采集某一纬度的数据,仅能达到个性化推荐的部分效果,如果要提升个性化推荐的效果,就必须覆盖用户多领域足够全面的行为轨迹,甚至用户线下行为,这就形成了以互联网电商平台为核心的生态系统,要想建立全面的个性化推荐,数据采集的涉及领域需要足够广,足够深。下面从用户画像、数据采集、数据存储、数据建模讲解个性化推荐的难度。
1用户画像
用户画像是通过用户兴趣、行为、自身属性建立的一个模型。通过对用户的调研、对用户行为的分析,结合业务的需求,将用户分为不同的群体;然后在群体中抽象出一些典型的特征,用结构化的信息记录下来,概括出用户的特征。根据用户画像标签体系,对访问平台的用户计算行为特征值,用户特征提取并不是针对所有的标签维度,对于优先关键标签,如果从用户数据库查询不到特征值,就需要调用R函数对其进行计算,最终得出每个标签维度的特征值,依据特征属性值,就可以对用户进行画像处理。
用户画像有其自身的特性和局限性,例如无法100%地描述一个人,且具有时效性,因此,需要根据用户画像的基础数据持续更新和修正,同时要善于从已知数据中具象化出新的标签使用户画像越来越鲜活立体,发挥其参考指引价值。
1.精准营销,分析产品潜在用户,针对特定群体利用短信邮件等方式进行营销;
2.用户统计,比如热销商品top100品牌;
4.效果评估,完善产品运营,提升服务质量,其实这也就相当于市场调研、用户调研,迅速下定位服务群体,提供高水平的服务;
5.私人定制,即个性化的服务某类群体甚至每一位用户(个人认为这是目前的发展趋势,未来的消费主流)。
6.行业分析,业务经营分析以及竞争分析,影响企业发展战略。
2数据采集
首先需要在网站和移动App中进行埋点,在页面埋入『隐形』探针,采集用户行为数据和业务系统操作日志、从数据库中提取业务数据,采集回来存储在数据服务,采集服务器组负责将采集到的日志信息生成文件,落地到存储设备,用户行为数据采集基本上采用SDK方式;ETL服务器负责将日志文件和结构化数据导入数据存储分析集群,并将分析结果导出到数据库;数据解析服务器负责连接数据分析服务器,完成数据分析各项计算;存储服务和分析服务提供数据分布式存储和计算的基础框架。
用户行为数据的处理和分析具有较高的技术门槛:
1、SDK会采集到大量的"脏数据",包含一些空白区域和特殊符号,甚至根本没有见过的数据类型,这些脏数据的处理和分析具有较大的技术挑战,特别是数据的实时采集和处理。通常技术人员只有经历了海量数据采集和处理,填平了大量"技术坑"之后,才能形成成熟的技术架构。
2、采集的数据都是以渠道、日期、地区统计,无法定位到具体每个用户,计算统计出的数据都是规模数据,针对规模数据进行挖掘分析,无法支持,数据无法支撑系统做用户获客、留存、营销推送使用。
所以,要使系统采集的数据指标能够支持平台前端的个性化行为分析,必须围绕用户为主线来进行画像设计,在初期可视化报表成果基础上,将统计出来的不同规模数据,细分定位到每个用户,使每个数据都有一个用户归属。将分散无序的统计数据,在依据用户来衔接起来,在现有产品界面上,每个统计数据都增加一个标签,点击标签,可以展示对应每个用户的行为数据,同时可以链接到其他统计数据页面。
3数据存储
用户行为数据采集后,需要存储在数据仓库,对采集的原始数据进行ETL加工处理,首先需要处理掉存储的无效重复数据,对于用户行为没有影响或重复数据,对非结构化数据和半结构化数据进行结构化处理,并对数据进行补缺、替换、数据合并、数据拆分、数据加载和异常处理。
4数据建模
用户模型的表示方法有4类:协同过滤模型、行为规则的模型、基于概念的用户兴趣模型与向量空间模型。向量空间模型(VSM)是最为常用的用户模型表示方法之一,通常使用一组向量值描述用户特征,向量的每一个维度代表用户感兴趣的一个主题。
维度的提取往往与网站系统的数据特征有关:在标签系统中,特征维度往往由用户提供的标签表示;在检索系统中,特征语词来自分析系统页面后所得到的关键词;在协同过滤系统中,可以把项目认为是描述用户特征的维度。使用VSM构建用户行为模型的困难是,数据中并没有明确表示信息行为的词语,所以在构建描述信息行为的维度时,需要从数据中抽象出描述信息行为的维度。
个性化推荐系统一般有三大环节:预处理->召回->排序。
注:也可以认为是两层(召回->排序)
预处理
第一个环节是预处理,预处理指的是对各种数据源的数据进行特征提取和特征构建,例如:内容特征提取,用户行为画像构建。
召回
第二个环节是召回,召回就是把预处理产生的特征作为输入参数,训练出推荐模型,然后使用推荐模型得出候选集合的过程。常用的召回方式有:基于内容推荐、基于协同过滤推荐等。
排序
第三个环节是排序,简单来说就是将候选集合根据一定的规则,例如:点击预估、匹配关联度、人为权重等进行调整,从而影响最后的推荐顺序。
推荐数据流
概念
LR:逻辑回归模型(LogisticRegression,LR)
GBDT:梯度提升决策树(GradientBoostingDecisionTree,GBDT)
推荐系统的整体工程架构如下图,从下至上包括离线计算层、实时计算层、在线服务层,另外是后台配置管理系统和数据调度服务。
在线服务:排序系统、推荐引擎、ABTEST实验、推荐投放等;
实时计算层:根据用户实时行为,提取用户实时特征、在线模型训练。
在线服务
系统分成推荐投放系统、排序系统、推荐引擎、abtest、字段补全服务等。
推荐投放
投放框架的功能如下:
1.提供统一的推荐接口。
2.各个场景的召回策略规则,可热部署。
3.提供通用数据源接口、工具类,方便算法推荐规则编写。
4.算法实验以及埋点统计。
5.推荐辅助工具。
推荐投放架构图
服务API调用统一投放接口获取推荐数据,投放接口解析请求参数,组装成下游推荐策略参数,对返回的推荐结果,拼装打点参数。为了实现推荐算法的在线对比,接口实现中接入了AB实验系统,它根据指定策略将上游请求按指定比例进行分流,通过实验配置,灵活控制不同流量的实验策略,算法工程师在线试验多个算法效果,极大的提升了推荐算法的迭代速度,优化推荐效果。
推荐策略模板是整个推荐投放服务实施的核心,监听动态配置服务,通过配置参数变更来驱动各类模板更新,迭代业务。推荐策略流程:入参补全->数据召回->精排->格式化->推荐数据补全。入参扩展模板,对入参做补充、修改,简化业务逻辑实现;业务模板,实现推荐策略主逻辑,由各类召回组件模板和精排调用组成(可选),一个业务模板中可以包含多个召回组件模板,组成数据召回链(实时点击偏好->离线偏好->店铺偏好->类目偏好->...);数据组件模板,通过配置从不同的数据源召回和过滤数据;数据补全模板,按业务模板召回的推荐数据项ID补全详细的字段值;格式化模板,根据展现层样式需求,将推荐结果封装成展现层可加载渲染的数据格式。对于已实现的推荐策略和能够使用现有模板组装的推荐策略,都可以在动态配置服务平台上通过配置发布快速实现业务迭代和新增,一定程度上实现了代码简化,提高业务开发迭代效率。
推荐策略
推荐存储
主要承载了用户特征以及离线推荐结果集,存储系统对读写性能要求非常高。
1.整条推荐链路希望在50ms-100ms内完成。一次复杂的推荐请求会请求上百次(以存储中的key为单位)存储数据,存储需要在1ms内返回。
2.对时延要求比较高,比如需要收集用户的曝光行为数据做降权,同时曝光数据的量非常大,对内存有挑战。
排序系统
排序系统的职责是对候选集进行排序,其中核心点在于模型和特征,理想情况下系统尽可能支持多的模型和特征,但是在线计算需要较小的时延,这就要求系统要平衡效果和性能,前期推荐系统可以支持LR和GBDT两种排序模型。
线性模型公式
x是特征,θ是权重,一个模型通常有几十维特征,这些特征的计算和存储就成为系统最大的挑战。
1.控制候选集数量在千级别,候选集增长整体计算就比较慢,rt也会上升。
2.实体(商品)特征本地存储,每次需要排序特定数量商品,本地存储可以极大缓解网络压。
4.并行计算,复杂模型下,组装特征和计算还是比较费时,为了提升rt系统进行并行计算,充分利用cpu的资源,在系统容量不变的情况下提升rt。