如何在推荐系统中快速灵活地嵌入商业策略投放系统

阿凡达2018-08-10 10:37

摘要:本文提出一种将商业策略投放系统快速集成到现有推荐系统里的方法:通过泛型和反射能快速设定决策层、分析师、运营的营销意图,并通过规则元素、匹配器、规则、处理器、策略模块等将其意图解析并部署到任意推荐栏位中,以便让一些和该策略相关当前商品能即时提高曝光,其结果是在千人千面基础上快速灵活实现了千人N面的策略推广,其作用作为产品在运营时的补充,在新用户冷启动、投放策略实验、集中推广打造爆款、借力热点突发事件场景有潜在意义本文将从研究背景、研究方法、研究结果以图文并茂方式介绍一种已实现过的思路。


本文附件下载:如何在推荐系统中快速灵活地嵌入商业策略投放系统.pdf

 

一、引言

  提到推荐系统,往往和个性化推荐产生联系,所谓推荐系统是互联网和电子商务发展的必产物,是建立在海量数据挖掘和丰富营销场景基础上的一种高级智能商务平台,能向用户(User)提供个性化物品(Item)推荐选择,给予曝光这些物品包括(但不限于):具体的如文章、商品、活动、专辑;抽象的如:类目、品牌、搜索词;甚至音乐、视频等一些用户能感知的数字化产物。

  商业策略,虽然个性化推荐从广义上来说亦不失为一种商业策略,在本文狭义地认为它是一种公司从战术上指导其旗下产品在行业中为达到保持某种优势,在不同场合使用的局部最优方法。

  俗话说,大丈夫,有所为,而有所不为,此处正好解释为:所述商业策略根据需要对一些Item进行提权(有所为),同时对一些Item进行降权(有所不为),从而在某种特定场下,能快速达成目标。很自然地我们常常说个性化推荐系统是一个千人千面的呈现,而商业策略对应地常常称作千人N面;推荐系统基于人工智能,商业策略却依赖智能人工。尽管人工智能在参数足够样本丰富以及训练模型合适的情况下解决了大部分问题,甚至能预测棋子落到下一步,但智能人工却能在复杂的行业竞争中,对形势阅读和场面理解上更占优势,反应能力更加迅速,也就是我们需要某种系统在机器解决了大部分问题的同时去执行智慧的逻辑,例如在下场合下可尝试直接使用恰定的商业策略:

1.     冷启动:譬如对注册目的性不明确有浏览行为的新用户可以多推送标记为高转化、高复购的商品,或在节假日/活动日时将内容契合的商品给予更多的曝光;

2.     思维试验:如果触角灵敏的分析师某天突然发现,活跃用户发生特定浏览行为时用户对高毛利、高品位的商品抵触情绪最低,则可马上尝试推送出结合用户兴趣模型的该类商品,甚至细分出推送A类还是C类(ABCDE商品品质定级)等等,上述特定浏览行为可能是个复杂的描述如:当天6点到晚上18点,有搜索且有点击行为每天晚上21:00点有长时间查看购物车行为有收藏加车未购买支付成功时”  .等等;

3.     集中推广:对某类目的商品需要营销推广;和某品牌签约需要大量曝光;某些商品库存需要立马清仓节约成本时

4.     突发事件:包括具有强随机性的人类活动事件和超过了人类当前预测水平的自然突发事件,比如国家队奇迹般进世界杯、突然的一部电视剧走红、突然某位名不见经传的人士成了网红、突然异常天气对应的商品和物资则急需等;甚至若考虑百度指数突发的热门词汇可迅速地将相应Item采纳到商业策略系统中在线推广。

  可解释性的商业策略能在基于数据的准确识别和分析基础上在内容、范围、时机与匹配上做到针对性强确度高;并能从大局上结合用户需求、价值剩余、社会福利、市场格局和时空价值而获利。人类的很多行为可用马斯洛需求理论来解释,那么对于求实在、求便利、求新颖还是求品质的场景亦为不同的处理策略,结合物品的成本、物流、地域、资金、服务、品牌、模式等信息通过一些策略可在最短时间达到商业目的并满足这一次消费者来平台的目的和期望,同时在处理营销双向性(过高的宽泛程度将引起曝光投入的浪费,而狭窄的定向程度则达不到人群宣传目的)上亦能折中两家之长。故而在大多数时间里,我们依赖机器学习算法的成功运作整个推荐系统,在少数特殊的情况下采用策略干预这种划分体系在产品整体布局上拥有积极的意义,进一步的,策略的多样化能在历史的长河中不断沉淀经验和找出闪光点。

  本文阐述一种在推荐系统中快速灵活地嵌入商业策略投放系统的方法,可能涉及到专业术语尽量以伪代码说人话的方式叙述其原理和思路。

二、方法

(1) 研究背景

  以电商领域为例分析刚才提到的冷启动:一个app每日均有一定数量新用户注册,对于这批新用户怎么推荐商品众说纷纭,新用户的留存率是个极其关键的指标,如何推荐商品让新用户留住可以采用商业策略的方式来解决,也就是,一个好的策略必须将如图1a)所示的用户留存堆积图,改变成图1b)的形态,稳定的留存才会让活跃用户逐步增长而带来更大商业价值,否则像图1a)所示容易导致营收很快到达瓶颈停滞向前。

(a)

b

1 劣质形态的新用户留存堆积图(a vs 优质形态的新用户留存堆积图(b图片来自网络

  为达到这一目的,假设此时来了一位数据敏感的数据分析师,他觉得要实现以上愿景,应该用一个分群策略,按用户生命周期对商品进行划分推荐,如图2所示(策略本身内容仅作参考):

2 一个假定的用户分群推送策略

  在这个思路指导下,我们可轻松地获得用户的分群数据和商品的分类数据,整体来看,逻辑上搭建商业策略投放系统需要处理的是四个要素,1:用户;2:商品;3场景;4规则,围绕快速和灵活这两个基本点去实现一种策略投放系统。


(2) 系统构件

  系统构件这里按粒度的从小到大顺序,在最后才提出集成到总体框架的思路。


RulesElem

  首先将用到的一个不区分User还是Item的对象(数据和功能存储同一形态),将它称作RulesElem规则元素。如图3所示,RulesElem带一个泛型T为的是满足刚才提及的那位分析师对User或者Item分群时可能是字符串或者整型或者长整型等不同数据类型。RulesElem自带两个属性,一个为称做规则键ruleKey,一个称为算子和值opAndValue。作用是记录最小粒度的策略描述需求。

3 规则元素RulesElem结构图

ruleKey存放了机器可读的策略规则描述,opAndValue存储了计算方式和值,例如设定这一对象伪代码标识为:

    userRulesElem.setRuleKey(“key=用户模型-生命周期”);

    userRulesElem.addOpAndValue (“op=等于:Value=新用户”);

相应的,商品存于RulesElem可表示为:

    itemRulesElem.setRuleKey(“key=商品模型-商品营销维度-转化率”);

    itemRulesElem.addOpAndValue (“op=大于:Value=50%”);

同时这个对象需内置了三个功能(Methods):

    reflect():利用java反射技术,将描述的ruleKey翻译成对应的机器空间里的字段值;

    match():对传入的某个对象,计算是否和这里指定的规则匹配;

    feature():提取这个规则的关键特征,主要用于缓存提速和数据可视化。

 

RulesMatcher

  规则匹配器RulesMatcher(如图4所示),内置一个User维度的RulesElemItem维度的RulesElem,并指定了他们的权重,为了简化结果复杂度,权重通常是二值或者三值,主要包括增强BOOST和减弱WEAKEN,也就是有所为有所不为

4 规则匹配器RulesMatcher结构图

RulesMatcher内置功能为mapping(),通过传入了UserItem实例根据内置规则计算匹配程度。

    rulesMatcher.addUser (userRulesElem);

    rulesMatcher.addItem (userItemElem);

    rulesMatcher.setWeigh(weight);

Rules

完整的规则Rules,由基本信息(名称、起止时间等)、优先推荐池Priority和一系列规则匹配器RulesMatcher组成,如图5所示。

 

5 规则Rules结构图

  优先推荐池Priority可以指定所有用户,或者满足指定某类RulesElem的用户在指定商品池、类目池或者品牌池匹配的商品进行优先推荐,使用情形如:活动大促结束时,对非热门类目品牌进行补偿额外增加曝光量等策略执行中;对刚签约的泰国乳胶给定一段时间重点曝光等。

  结构中的RulesMatcher可以为多个,对某用户满足所有RulesMatcher里规则的商品进行权重打分干预,对应引言里提到的复杂数据分析结果指导策略生成这类实验场景。

规则的内置功能为判定有效性。


Handler

  规则处理器Handler,处理Rules的容器,通常说来只需一种实现即可,但是作为提速(某类策略可能调用比较频繁),可以考虑多个实现,特定的环境用特定的Handler

Handler的主要功能包括安装rules、得到该User在当前rules的特征指纹和根据当前rules给出策略解释即得到某商品权重提升/减弱程度。

 

6 规则处理器Handler结构图

 

Strategy

  最终我们得到和文字意义相同的策略Strategy这种元素,商业策略Strategy不等于规则Rules,一套策略包括一组规则和一个对应的处理器才完整,二者相辅相成才能称作一个完整的策略。


7 策略Strategy结构简图

  在策略这个层面,将对人类可读的语言进行解析,用类似移动运营商套餐的概率来比喻,可以分成长期存在套餐和短期测试套餐,在不同场合使用不同策略,并进行AB测试,能积累一定商业策略投放经验,或是成功,或是失败。成功形成长期的套餐,失败则迭代修订。

策略中,简化的使用模型为,1. 通过handler.installRules得到策略里的规则,2. 将用户/物品/规则进行匹配,得到提权/降权的额度。

        rules  handler.installRules(“规范化的策略描述”);

          … //其它

        weight handler.interpret(userInfo, itemInfo, rules);

(3) 系统集成

  基于以上构件集成策略模块(StrategyModule),如图8所示,内部主要包含数据存储区(左上)、控制器(右上)、运算单元(下方)三个部分,外部接口主要分控制显示接口、操作接口、数据流输入、数据里输出四个部分。其中的重点部分详细解释如下:


8 策略模块StrategyModule内外结构图

 

    DataController: 和数据传输相关的接口;

    VizController: 内部数据实时统计、控制、状态、展示接口;

    User Portrait:用户画像,基于推荐系统现有物品模型以及外部(如基于数据挖掘)数据流;

    Item Portrait:物品模型,基于推荐系统现有物品模型以及外部(如基于数据挖掘)数据流;

    Operation UI:操作界面,运营人员简单化规则、策略设定;

    Feedback:实时负反馈和日志流;

    WeightBoost-Recommender-Application流程:数据流输出模块,将提/降权的数据作用到推荐器的步骤,并部署于应用场景(主要位于召回、排序等)

  进一步地,内置模块通过名字均可一目了然,主要部分阐述以下:

  Fast-cache

  由于千人N面的特点,会造成很多用户对特定商品会有相同的处理流程,尽管处理时间极短(微秒级),如果对计算过的信息做缓存将大大提高效率减少资源损耗,前文所提及的rules的特征指纹代表了一类人群,用key=StringOf(特征指纹) + StringOf(商品ID)作为键值,value则存储了对应计算结果。

  init(user,loc,cont)

  初始化场景,包括用户信息、栏位、上下文等,其中自带判定器决定当前这一次是否需要进行商业策略的投放。

  boost(user,item)

  最核心的提权/降权功能,通过设定的规则对用户-物品计算提权的权重,基于线性求和的方式:

  可以得到此时的规则下商品对这个用户的匹配程度。其中用到了前述缓存器,如果无有效缓存,则调用规则处理器的handler.interpret(user, item, rules)实时计算。之前说的商业策略四要素,interpret实现了其中三(用户、物品、规则),而场景是在init里面初始化进来。boost计算的结果在本质上为重排序,常见两种方式:

权重融合法,通过如w’=w*(1+kx)的线性融合器重排序,原理如图9


9 权重融合法重排序原理

  或使用层级冒泡法,将不同提权层级的冒泡重排序,在同一层级内部,原顺序不变,将数据按层级重新排序,如图10


10 层级冒泡法重排序原理

 

Recognizer

  识别器类似于大脑,作定了决策的优化和执行,该模块可持续优化和迭代,甚至在不同阶段和具体决策可以采用不同的数学模型,常见的有:

  匹配(Matching):基本的配置策略选取方法;

  动态规划(Dynamic Programming):求解决策过程最优化的数学方法,可以进一步将高维度的决策分解到不同的策略子集上,以参数迭代求取最优解作为最终决策;

  组合优化问题(Combinatorial Optimization):对一些问题描述看似简单,实际求解较复杂的情况下如何权衡运行时间与存储空间的关系,得到一组可行解(非最优解)的数学方法;

  交叉阶梯法自适应(Interleaved Staircase):类似定价策略、心理物理刺激中采用自动交叉阶梯模型得到当前客观环境价格最优解的算法。

  ….

三、结果

(1) 使用

  简化推荐系统的模型如图11左侧所示,主要包括离线算法计算、召回策略、在线算法以及后期处理几大常规必要模块,StrategyModule接受用户、物品、场景、规则作为输入,影响召回策略、在线算法或重排序作为输出,其中在Operation UI处接受人工的调度(人工控制),在Business Intelligence接受策略输入,并预留Data Analysis Platform作为智能策略的生成和干预(Data Analysis Platform包括不限于处理仓储、财务、市场、供应、物流以及外部数据等)。


11 将商业策略投放系统嵌入到推荐系统中的原理

 在系统嵌入完成后,设定一个通用策略运行主要包括如下步骤:

 1.      通过BI等分析平台指定一系列商业规则,挖掘制定一类规则,并设定到系统;

 2.      将文字描述的规则通过接口解析和设定到系统;

 3.      系统参数设定和存储,情况过期缓存等;

 4.      开启栏位开关和总开关,以及设定切分流量数;

 5.      查看实时数据报表,根据结果判定是否要回到1优化之。

由于以上23步骤是一次性的技术手段,具体使用时涉及人工处理的只有145

(2) 特性

 按以上思路嵌入的投放系统具有以下特点

 1.      部署快捷:比较方便的实现策略注入,从拿到策略到线上生效,只需1分钟;

 2.      定制灵活:支持多项策略同时在线,可以形成多项策略交叉的融合发布,用户和物品可描述可以细粒度切分;

 3.      消耗可控:匹配一个规则是微秒级,处理1000*10个规则,额外消耗低于10毫秒;实际上因为缓存的关系,额外时间损耗平均低于1毫秒;100万个商品耗费内存在几十M,若数量级达到数千万商品,需做进一步优化。

 4.      易于拓展:业务拓展和算法拓展的成果可以直接接入到现有的架构里。

 

四、总结

  作为抛砖引玉,本文介绍了一种如快速实现将商业策略集成到现有推荐栏位里的方法,通过泛型和反射能快速设定决策层、分析师、运营的商业意图,在千人千面基础上快速灵活实现千人N面的策略推广。

  后期的完善方向,可以在业务层和技术层做更多的深入研究和功能完善,业务层方面如:可将人力、物流、现金、大环境、地域等大数据信息集成到决策的上游,在特定环境下自动触发一些策略,将策略形成若干维度类似移动运营商定制的所谓套餐,不同的情况触发不同的套餐推广到全站;技术层面,可将深度定制的人工智能技术,例如使用关键词标签模型,通过提取用户感兴趣的特征标签集合,并以此为依据进行策略人群的更精准投放,或是通过受众对象模型、聚类模型对人群进行准实时归类。此外模块中的识别器可考虑一些数学模型来解决更多策略和更多User/Item中会遇到的划分问题,以便达到高效和准确的目标。再者,在系统层面,可以对缓存的方法进行优化适应千万级上千维度策略的稳定执行。

  一些后话:如果做到策略规则的快速选取,对于用户的切分一般可以简单粗暴的分为4个类别:1. 有钱的没钱的(经济角度);2. 男的女的(性别维度);3. 老的少的(年龄维度);4. 特殊的跨界的跨时空(也就是人群细分)。前三个基本数据容易理解也容易划分,第四点涉及方面略广,简单能想到的如同母婴/非母婴、职业划分、对产地、颜色、造型、创意、品牌的偏好,对节日、情感、文化的不同重视程度等等。而对商品的划分却是种类繁多,可以是基于数据的如复购率、转换率、同类目价格区间等,也可是商品基本属性颜色造型类别品牌重量大小手感,或者是解决了什么痛点、借助了什么热点等等。

  完。转载请注明出处。本文PDF下载:如何在推荐系统中快速灵活地嵌入商业策略投放系统.pdf

网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者付凌进授权发布。