二手车业务侧技术的思考与赋能

前言

最近抽时间整理了一些技术内容,是关于二手车技术团队围绕业务的深入及关键节点做的努力,这些内容建立在对业务的深入理解与长期累积数据的分析,并结合业务线的特性和目标进行的AI赋能,希望对于技术同学有所帮助,尤其是业务侧的技术同学,启发思路、共同交流思路与方案,并能结合当下的业务场景深挖和赋能。

— 全文大约1.9w字,预计需要20分钟 —

用户全链路的分析

首先是用户全链路的分析,业务部门的指标是围绕收入进行的,在产品全连接后,所有工作对于连接转化效率的提升尤为重要,这就要求我们在用户行为的每个关键节点进行深入的分析和赋能。

通过全链路的分析及结合用户业务数据积累,将用户的关键行为确定为四个部分:流量的接入、检索、点击、电话,后续的技术内容也是围绕这4个部分进行展开说明。

1、流量

在流量的接入环节,我们希望具备两种能力:

一种是对用户身份的预估与分层,我们先期定义了5种用户的身份:个人、商家/中介、类平台、爬虫和异常流量,这边需要对用户的行为数据进行统计和分析,抛离异流量及爬虫流量,并结合聚类观察特征数据的聚合情况,同时也会通过模型对用户的身份进行概率性预估。用户身份的预估是后续多个业务场景策略干预的基础,比如我们将身份预估的结果同电话系统结合,对于确定识别的个人直接绑定AxB的策略,对于识别的商家/中介或类平台,我们可以计算浮动因子干预号码有效绑定时间,这些均有助于提高号码资源的使用效率,降低串号率。

另一种能力是我们需要对已有历史行为的用户进行兴趣描述,这边之所以没有使用“画像”这个词,是因为我理解在单品类(商品-车)的业务场景中,画像的概念是发散的,推荐的商品是多样的、支持多场景的,而“兴趣描述”和单品类业务的表述更为贴切,比如我们会将用户的行为抽象成商业(info-车)的标签、或标签的组合,会通过特征工程分析业务特征的权重,进行特征的挖掘和组合,同时也会分析用户在某些特征上的兴趣度,也会作为系数干预召回模型。

正如所有的推荐场景都是与业务强相关的,兴趣的准确描述就需要对业务特性有深入的理解和分析,这是提供准确召回能力的基础,目前召回的模型是通过用户行为的分析基于itemCF计算标签组合的相似度矩阵(对于点击这种0/1的数据,非常适用 Jaccard 系数的计算),通过用户行为抽象的TopN进行模型的匹配,获得检索条件。当然getInfo这部分还需要召回策略的融合,这个在后面会详细讲到,总体来说“用户 – 兴趣的描述”是召回的基础。

「关于ctr效果的提升」 – 模型的干预对于 ctr1的提升为4.92%,对ctr2的提升为5.99%。

2、检索

在检索的这个环节我们尝试了一种新的方式,对信息(车)进行标签化的表述,信息通过标签聚合,可以帮助提升长尾信息的曝光能力,通过用户的行为我们可以将用户-标签-信息串联,做到标签的个性化展示,通过持续完善标签的质量、标签 – 车系的准确度,进而带来对ctr提升的正向刺激。

同样二手车的标签系统也需要对业务深入地了解,这部分在前期语料处理、分词部分需要投入一定的人工成本进行标注、分类和挑选,并场景实验的反馈进行持续的优化,标签的种类可以按照业务品类的属性进行区分,比如“描述外观”、“描述配置”、“描述操控”、“描述情感”、或其他的属性词。

二手车业务标签挖掘这部分有几块主要的内容:语料的获取、分词、车品类分词模型的训练、词向量、及分层的实验并结合场景的反馈提升标签的质量(召回能力、ctr)标签-车系的准确度,分词模型与词向量的计算很大程度上受限于语料的质量,所以在前期对于语料的处理也会投入不小的精力。

标签是今年团队新启动的技术项目,目前不是特别的成熟,从标签的召回到信息的曝光到ctr提升的指向完整链路的数据在后面会和大家分享。

3、点击

在feed场景下的点击率是各业务提升的一个重点,在持续优化基础的体验的同时也会加入智能的干预,普遍的做法是介入模型的干预,对ctr进行预估,并结合召回模块在下一个阶段做信息的精排,过程中会加入策略、规则及算法的融合,另外也需要考虑的一个问题是ctr导向与商业的收入导向的目标需要结合考虑。

二手车业务侧针对ctr指标的提升是围绕特征工程进行的,这些需要对业务特征深入的理解与分析,这部分有两个阶段的内容,一部分是对样本数据(用户历史行为)的处理,一部分是对特征的分析与选择。通过对样本的收集、去燥、采样、验证并结合线箱确定有效样本的划定区间。特征选取的部分,先期我们从业务品类的特征去分析特征对行为的敏感度、数据分布,选取基础特征进行特征的组合,如“车辆属性”、“行为属性”,通过对宏观特征的分析产生新的中间体征,并结合样本数据生成特征的权重分布,指导特征的选择(通过XGBOOST做特征权重的分析,核心叶子结点会作为一组新的向量特征参与学习,目前二手车的特征工程也更侧重于微观特征的挖掘和训练)。

召回层通过融合的策略、模型进行基础infos的召回,作为排序的基础数据,这个在上面内容提到过。排序层的主要是针对这些infos结合人历史特征做ctr预估的排序,通常被叫做精排。在初期我们也遇到了一些问题,受限于平台用户属性、身份等信息的积累的不足,模型过于发散,应用到线上效果不佳。后来我们考虑通过特征的行为区间对用户进行聚合,比如“0-5万”、“6-10万”区间用户集,针对不同的用户集合进行ctr的预估。第一版ctr预估的模型是基于LR进行训练的,随着后续特征工程的不断完善、特征的组合、特征权重的分析、微观特征学习,目前在白菜上使用的是 XGBOOST + FM,XGBOOST或GBDT在分析特征权重的同时会泛化新的特征,这组向量会放到FM中参与模型的训练,FM会进行特征的组合,一定程度上解决了样本特征数据稀疏的问题,目前该部分结合工程在二手车已经进行了一定的积累,在feed场景下提供快速的复用和解决方案。另外也感谢下中台-WPAI平台的支持,针对模型的训练、AUC的测试非常的高效。

「关于ctr效果的提升」 – 模型的干预(召回+排序)对于 ctr1的提升为16.17%,对ctr2的提升为16.96%。

4、电话

2016年下半年,二手车搭建了完整的电话系统,后针对cpcall全连接的商业模式进行了几个版本的迭代和支持,今年上半年完成了对二手车lego商业的迁移和优信全国购的支持,目前的电话系统包含了5个部分:1 业务(渠道)接入的配置与管理、2 服务、3 号码资源的管理、4 运营商管理、5 监控&灾备与降级。去年下半年开始同中台WPhone进行对接,拆分业务和号码服务。

电话这部分主要是考虑系统的高可用与提升号码资源的使用效率,并降低不同spm的接入成本,同时针对不同的数据纬度进行分析。今年围绕电话这个环节我们也做了一些赋能的场景,结合用户的身份预估做智能AxB的绑定,结合用户的身份及历史行为进行模型的训练 – 做cvr拨打的预估,这些在提升号码资源的使用效率&降低串号率方面都获得的不错的效果,关于技术细节后面内容中会涉及。

「策略&模型的干预的效果 – 号码资源的平均有效时间延长 4%,串号率曲线呈下降的趋势」

第一部分 – 流量-用户身份的预估&兴趣的描述

用户的身份预估

先期我们定义了5种用户的身份:个人、商家/中介、类平台、爬虫及异常流量,通过对流量身份的预估,在剥离爬虫及异常流量后:1 用户的概率身份可以切入后续业务场景的各个环节 – 指导策略的干预,2 也可以帮助样本的去燥,3 中间的聚类结果可以作为后续智能系统的前置条件或基础。

整体的过程分两个阶段:

第一阶段:需要对用户的历史行为进行收集、清洗和分析,通过观测数据的分布情况,辅助我们做相关规则的定义(特征),统计分析的结果可以作为第二阶段聚类特征选取的依据。

二手车业务侧基于IDMapping创建业务数据的基础数据仓储,做从ID到cookie、电话、设备信息的唯一映射关系,并不断积累和完善这些数据,用于留存和识别固定的目标人。数据的选取是基于用户listing的历史行为,如cookie – “列表页的请求量”、“点击总量”、“电话拨打量”、“某些操作使用的IP列表长度”等,通过统计的视角观测数据的分布情况,通过先验知识进行规则切分,对流量进行初步的判别。

爬虫流量的识别 – 通过对数据的绝对值统计,将无拨打行为、请求量巨大等异常数据分布的用户直接判定处理。

行为用户精细化分析 – 通过对用户拨打行为的频率、均值、统计量等维度特征进行数据分布分析,尝试对关键数据指标进行处理。

以上就是第一阶段要做的事情。

第二阶段:数据的统计与分布的观测有助于我们下阶段特征的粗选,通过对样本聚类的结果观测数据分组的效果,聚类的效果清晰、良好可被直接在样本数据的分类上进行使用,也可以将聚类的结果作为一组新的特征参与下个阶段的监督学习。

目前使用了K-Meams、GMM、DBSCAN 3种聚类的算法进行实验和对比,PCA降维后观测 K-Meams 聚类效果更好一些(起初尝试2-10个分类,肘部法则确定分5类的时候整体的距离紧凑度最好,这正好对应我们先前定义的5种身份类型),在监督学习部分使用 LR、XGBOOST+FM 进行模型的训练,样本是清洗后的历史行为(关键行为特征的count),在WPAI上模型的auc在0.67左右。

该阶段整体的操作流程:1 行为定义 → 2 数据抽取 → 3 统计 → 4 区间调整 → 5 观测结果&分析

样本的选取需要从用户的行为轨迹进行分析,用户操作路径的关键行为统计和分析 – 可用于指导下阶段特征的选取及区间阈值的定义 :1 曝光 → 2 检索 → 3 点击 → 4 浏览(停留时间) → 5 电话

抽取用于分析的目标数据 :cookie – 86.7w 对应 ip – 67.6w,将这些数据对应用户行为轨迹做漏斗的分析,通过线箱分析,可以帮助我们确定数据离群点,选取有效数据并划定特征的取值范围。

有检索无点击 – 13.3w,占比15%,离群点16,分析将检索 > 50的定义为爬虫,该case下可用于下阶段特征提取的区间定义到 0-20、20-50、50+。以此类推分析到点击、到电话的数据,确定离群点划定不同特征取值范围。

关于样本的处理,为了避免空值、异常值或某些特征的原始值过大对聚类效果造成干扰,需要剔除空值、异常值数据、并针对特别特征做归一化处理。

结合第一阶段数据的分析与特征的粗选的结果进行特征的选择,将清洗后的样本数据进行聚类的分析,使用PCA/TSNE进行降维,通过聚类后效果的观测 – 验证特征对身份划分的有效性,并多次迭代这个过程。从另一个层面上讲,无监督学习可以启发思路,衔接下个阶段的监督学习。

用户身份预估(个人/商家) – 与电话场景的结合

身份的预估可以帮助干预号码的回收机制,识别的身份结合IDMapping可以进行智能AxB的绑定,cvr拨打的预估模型可以间接的支持转化的提升。

前面提到针对有历史行为的用户,我们做同IDMaping映射的用户数据仓储,并持续积累这些数据,业务实现接入的大部分工作都通过离线计算完成,离线处理用户的历史数据做特征提取 → 身份预估模型 → 用户分类结果(概率)→ redis →  场景的使用。

样本数据的标注过程

商家用户样本的标记过程:1 手机号码是座机的用户,标定为商家,2 有过回拨的用户标注为商家,3 结合业务的数据留存,如来电通投诉电话被客服明确标记的商家主叫号码,4 分析拨打行为数据,将30天内拨打频率较高的用户进行剥离,进行商家判定(历史信息查询、电话录音等),并使用无偏估计进行信息验证。

个人用户样本的标注过程:1 选取检索、点击、获取号码、拨打相对合理的数据,先验定义为个人,2 通过听语音人肉的方式确定这部分样本的准确性,并标注为个人,作为种子数据,3 计算样本“皮尔逊系数” ,将  > 0.9的样本标记为个人。

在样本不足的情况下采用随机复制的的方式对样本数量进行扩充。

cvr – 拨打预估

cvr的预估运用在号码的回收环节,将拨打预估转化最低的作为优先征用的资源进行释放操作,维护资源列队,目前cvr预估不使用强策略干预线上,仅取了部分流量进行实验评估,迭代模型的训练。

cvr预估部分样本的去燥,1 去掉了异常、无拨打、空值的数据 2 结合线箱分析样本特征的合理区间,去掉异常区间数据 3 过滤主叫-座机、无前置行为(无合理轨迹)数据。

模型测试的结果 – AUC:LR – 0.6653、XGBOOST – 0.685、FM – 0.6767。

模型&策略的干预在电话场景中也得到了很好的效果,我们抽取了部分流量进行实验,指标如上图,号码资源的平均有效时间延长了4%,间接指向串号率的指标呈现明显下降的趋势。

流量 – 用户兴趣的描述

背景&主要内容:

1、在单一品类的业务场景中不需要画像的概念,只需要描述用户的兴趣,用户兴趣合理准确的描述是信息-infos召回的基础

2、受限于平台用户留存度低和计算成本的考虑,所以我们选择基于信息(车源)的维度挖掘商品之间的相似度,并结合用户行为的topN进行召回(itemCF作为召回的基础)

3、基于信息的相似度矩阵的计算需要确认特征&特征组合作为查询条件,这边需要考虑特征的选取

4、关于相似度计算 – 算法的选择需要考虑样本的特点和场景的意图

5、二手车基础的数据仓储

用户兴趣描述及召回的整体流程:

1、数据仓储用来存储和分析用户的点击行为,对数据进行清洗、采样,作为0 1的基础样本数据

2、结合特征工程分析的结果选定特征并进行特征组合 – 即标签,标签可对应到信息的检索条件,后面计算信息的相似度矩阵,其实是标签组合的相似度矩阵,这边选定的标签是“车系” + “价格区间”。

3、对比相似度计算公式,结合样本 0 1 的特点,这边选定使用 Jaccard 进行标签-相似度矩阵的计算

4、离线计算的相似度矩阵作为基础的topN条件匹配库 – redis

5、抽取数据仓库中用户的历史做标签的映射,userID -(车系x + 价格y),匹配相似度矩阵,选取topN个标签组合作为这个用户下次召回的N个检索条件

6、用户id – topN 固化reids,用于用户的兴趣召回,用户的当前行为也会实时更新topN条件,影响下一次getList的查询结果

在第二版的用户用户兴趣描述中,我们开始扩展标签的组合、扩展矩阵的能力,做信息(内容)标签挖掘的同时,围绕特征工程分析用户到业务不同属性的专注度,作为系数干预召回模型。

构建二手车业务的基础数据仓储(去年数据整体迁移至58dp):

随着业务数据分析内容的增多,需要统一数据口径,提供通用、准确的数据分析能力,从16年开始我们着手构建二手车业务的基础数据仓储,仓储整体分了两个部分,一部分是离线数据的处理和分层,一部分是实时数据的处理与分析平台,这边大概提一下数据仓储的设计,仓储的设计和业内大部分设计基本一致,针对数据处理的不同阶段分了4层:DS、DW、DM、DA,DS层是Flume收集的基础日志内容,并同日志的监控结合,DW层是经过清洗后存储的数据内容,是可供初步分析的数据,DM这一层会参考业务的特征对数据进行轻度的聚合,用于支撑部分业务场景的数据分析工作,DA层是场景主题的成品数据,用于直接分析和报表的产出。

该系统运行了2年的时间,从去年开始我们将所有业务侧的数据迁移至中台58dp,中台数据平台提供了高效稳定的数据分析环境,这也为我们后续数据智能方面的工作提供了莫大的支持。

关于itemCF的使用 & 相似度矩阵的计算:

用于计算的样本选取用户到信息的点击行为,样本描述为 “user1 – info1、info2、infox”,结合特征标签将样本映射为“user1 – 标签组合1、标签组合2、标签组合3…” , Jaccard 相似度算法不会考虑向量中潜在数值的大小,而是简单的处理为0和1,这正符合我们样本的是否点击的0 1特征,Jaccard 距离用于描述个两个集合中不同元素占所有元素的比例来衡量两个集合的区分度,所以本质上是统计和概率的问题,通过 Jaccard 相似度计算生成标签组合的相似度矩阵,如上图。

前面提到Jaccard针对样本0 1的特征具有非常好的适用性,这边也单独拿出几种常用的距离算法做个简单说明:

1、Jaccard距离用于描述两个集合中不同元素占所有元素的比例来衡量两个集合的区分度,Jaccard系数等于样本集交集与样本集合集的比值

2、欧氏度量衡量数值上差异的绝对值,距离度量会受指标不同单位刻度的影响,所以一般需要先进行标准化,比如对数据做归一化处理,同时距离越大,个体间差异越大

3、空间向量余弦夹角的相似度度量不会受指标刻度的影响,余弦值落于区间[-1,1],值越大,差异越小

4、余弦相似度衡量的是维度间相对层面的差异,一种长度与方向的度量所造成的不同,余弦相似度只在[0,1]之间

关于实时 + 离线的召回方式

目前的召回模式支持实时和离线两种信息的召回方式,通过用于的历史行为生成相似度矩阵的模型,固化存储用户的id和兴趣topN(离线场景),redis保存用户兴趣,支持get标签-通过ses进行检索。

对于实时的信息召回,当前行为getlist 映射成标签,通过5分钟的窗口期进行统一、批量的比对用户获取topN,同时实时的协同过滤也提供了毫秒级的召回方案,保障召回行为的高效。

我们在真实应用的线上场景中,针对召回、排序两个阶段核心部分,分别加入了降级的预案,保障线上调用流畅与稳定。

关于召回策略的融合

在实际的应用场景中,召回层往往需要多召回策略的协同和融合,目前线上召回层我们正在使用的召回策略:1 模型召回(实时+离线)、2 热门召回-按城市、3 画像召回、4 检索召回补余策略

1、以协同过滤的模型作为基础的召回策略,提供数据基础

2、针对冷启动的问题会结合热门的召回 + ses的随机召回方案,这边会按城市、天的维度离线计算热门信息,热门的策略也被作为补余策略的一种

3、同时召回的信息会结合时间的衰减因子(通过点击-时间计算)进行升、降权的处理

关于兴趣的描述及线上应用效果的反馈:

基础的协同过滤结合多策略融合的召回在线上场景进行了多组的实验,并持续优化和迭代这个过程,截止到到今年4月份,我们选取了10日的数据进行有、无模型干预的效果对照,模型干预对于ctr1的提升为 4.92%,对ctr2的提升为 5.99%,效果比较稳定,这个效果还是比较好的。

「关于召回率&准确率的分析」- 可以帮助我们确定合理的标签范围,及top-N的长度,经过多组线上实验的效果对照,我们最终将N的长度确定为10,这几乎是召回率和准确率交叉的点,基本的分析结果如下图示。

召回率 = size(协同过滤TopN推荐item集合∩用户发生过行为的item集合)/ size(用户发生过行为的item集合)  

准确率 = size(协同过滤TopN推荐item集合∩用户发生过行为的item集合)/ size(协同过滤TopN推荐item集合)  

关于「流量 – 兴趣描述 」下个阶段思考尝试的方向:

1、以协同过滤的召回为基础 – 扩展特征的组合(计算二次特征的组合)扩展相似度矩阵的适应能力

2、塑造人的基于业务品类的标签,描述相关属性的兴趣度,作为系数干预模型

3、挖掘信息的标签,提取信息的特征,做关联,也包含信息的质量、完整度、吸引力

4、商家的信用等级也会作为信息优选的参考条件

关于相似度矩阵能力的扩展 – 矩阵的生成、使用,参考目标人的业务属性个性度,从属性个性度的角度出发考虑特征标签的组合,特征的兴趣度作为干预系数,并考虑采用多矩阵协同的召回方案,扩展特征的选取和特征的组合方式,加入更多特征组合的实验,并对矩阵的做持续的评测。

关于特征工程部分,需要加深对业务理解和宏观特征的分析,做特征的组合,持续特征权重的分析。

考虑从info – content中挖掘品类属性的关系,从信息特征进行聚合,如车辆级别、驱动类型、保值能力、省油、白菜价、等,按特征、特征组合汇总的信息支持兴趣专注度的召回,同时可丰富特征工程的参考维度。

总体来说,兴趣的准确描述是信息召回的基础,用户身份的预估可以干预后续业务场景的决策,说到这边围绕第一部分“流量/用户”部分的内容即表述完毕。

第二部分 – 检索 – 二手车业务标签的挖掘与应用

为什么要挖掘业务品类的标签?

前面提到,在检索的这个环节我们尝试了一种新的方式,对信息(车)进行标签化的表述,信息通过标签聚合,可以帮助提升长尾信息的曝光能力,通过用户的行为我们可以将用户-标签-信息串联,做到标签的个性化展示,通过持续完善标签的质量、标签 – 车系的准确度,进而带来对ctr提升的正向刺激。

信息的标签化,在提升信息个性化展示、体验的同时,也有助于帮助我们发掘品类基本检索属性之外的个性内容,如描述感官的、描述价值的、描述体验的,如:“年轻化、耐造、买菜、动力澎湃、外形炫酷”,这会极大的丰富我们商品特征的表现形式,结合不同人群兴趣、特征的划分,可以做相对精准的信息召回(推荐),进而也会带来对ctr提升的正向刺激。

关于考虑标签业务在线上的应用,主要考虑了4个不同的场景:

1、为列表页固定位置提供个性筛选标签区域 – 此区域可以理解为穿插在feed中的一块固定的位置,如图所示该部分标签内容的组成包括:用户的筛选条件、热门标签、个性标签、创意标签等。该场景实验的指标是对标上下车源信息的点击率,目前二手车第一版标签的实验也是在这个场景上进行的,但这块区域的点击效果并没有达到预期的效果,目前正在迭代中。

2、发布场景 – 个性标签选择&单元参数,在规范和格式化的发布场景中,我们希望针对目标车系、车型召回个性的标签,用于车源信息的补充说明,在丰富信息个性展示的同时,这些标签也会作为单元参数,同上面提到的用户兴趣描述-召回的场景进行协同,关注用户在某个业务属性上的兴趣专注度,高效的召回相关的信息。

3、item信息的标签展示(个性内容)- feed场景中item标签的展示可以体现信息的个性,但这个场景位置有限且相对敏感,目前暂时不考虑策略的干预。

4、优质的标签或无命中的检索词,提供给中台检索部门支持搜索框检索,这部分是对高频、业务特殊属性词、无命中检索能力的一个补充和支持。

关于业务场景的接入形式:

1、标签工程对抓取的语料做分词处理,分词的过程也是训练车品类分词模型的过程(需要先期人工的标注),对分词的结果进行人工的筛选,选定备用的标签,存储标签库,关于标签库的设计在后续内容中进行说明。

2、对标签做词向量的计算,这有助于帮助我们扩展标签的召回能力(这个地方我们起初犯过一个错误,我们过分依赖词向量对召回的扩展能力,但不知标签词向量的计算是依赖语料的,我们先期选定的语料是某口碑的数据,语料本身的形式、内容会有很多的局限性,这就造成计算的词向量并不具备广泛认知的代表性,也就造成了最初线上标签召回能力差和准确度低的问题)。

3、前面的内容已经提到用户兴趣的描述,在标签的召回环节也会依赖用户的兴趣基础做标签子集的召回,信息 – 标签 – 人存在稳定的映射关系,做到标签的个性展示。

4、第四部分是关于实验的对照,标签工程的两个核心的指标是:1 标签的召回能力 2 标签到车系的对应关系准确度,所以通过线上用户在标签点击和信息点击环节的数据回溯,可以帮助我们去观测这批选定标签的质量,这也是实验的重点。

详细内容会在下一页展开说明。

二手车业务侧标签工程大体可以分为4个阶段:

1 语料的收集

语料的收集可以有多种渠道,我们可以挖掘站内车源信息本身的内容、可以从车相关的新闻/媒体文章中截取相关的内容、可以统计站内搜索的内容/热词、也可以收集公开的口碑/评价信息进行标签的提取,受限于资源和精力的投入,目前我们通过最后一种方式进行语料的收集和完善(这边也会涉及到一些爬虫性能的优化,不做展开)。

2 分词

分词是提取标签的过程,是NLP的一个环节,起初关于分词工具的选择,我们对标了jieba、HanLP和LTP,针对相同的语料分词效果基本一致,受限于商业应用的限制及开发语言的支持,最终考虑使用HanLP作为我们的分词工具,分词的结果经过规则的过滤产出粗选词,这边是人工标注的环节,将业务类的词组进行标注,避免分词过度,也会摒弃问题语料或干扰词,处理后的语料会放回到模型中继续参与分词,分词的过程本身也是训练车品类分词模型的过程。

关于词向量的计算前面也稍微提了一下,词向量的计算结果很大程度上受限于语料的来源,如word2Vec会通过固定窗口长度的上下文预测词条的概率,计算词向量,相同的词条在媒体类文章和口碑类评论两种语料中计算出的词向量是差别很大的,所以后面我们也弱化了通过词向量计算扩展标签的召回能力这种方式,并加入一定的人力成本去做词条的整理和归类(先验知识)。

3 标签库

标签库的内容是个持续更新和完善的过程,接收分词的结果,并针对备选词作人工的筛选与分类,去掉无用的词条、错误的词条。

我们会将不同品类的词条进行划分,相近含有的词条会参考线上实验的效果(标签ctr)做取舍,如 “动力嗷嗷 0.00048、动力澎湃 0.00167、动力强劲 0.001164”,参考ctr最终会保留词条“动力澎湃”。

我们也会去掉一些ctr很高但词意表述或者召回含义并不清晰的词条,如“小轿车、颜值、稳重”这类的词条,这些词条不利于我们后续从标签到车系准确关系的建立,词条召回的含义过于发散,相对优质的标签是可以准确表述一类或几类商品,并且这种表述符合大多数人的认知。

从标签的质量角度考虑,我们也尽量不会选择2个字词条,主要以4个字及以上的词条为主,如“动力澎湃、外观拉风、城市穿梭利器、路感清晰、省心省油”等。

标签的筛选需要4个阶段:1 从标签的个性代表度进行筛选、2 从标签到信息的召回能力进行筛选、3 对标签按属性进行分类,比如我们依赖这些词条的描述内容进行划分:描述驾驶体验、感官、配置、商品特征等、4 最后阶段做标签的检查处理。

总体来说,标签库的工作需要对业务有相对深入的理解,带有业务特性的先验知识和决策在这个环节中起到了非常关键的作用。

4 场景的反馈

在标签的召回环节,我们同之前第一部分用户兴趣的描述-模型相结合,依托中台的日晷平台进行多组的线上实验,日晷系统支持多层的多策略的实验组合,与工程的接入有良好的切合,配置成本也相对不高。实验的结果结合曝光和用户的点击行为对不同标签的线上效果进行反馈,主要是围绕标签的召回能力和准确率进行的,这个环节的反馈会帮助我们不断迭代标签库内容,在项目较成熟后期,我们也会考虑将这个环节开放产品配置的模块。

关于分词阶段的内容&效果迭代

第一版分词的数据源选取的是宝马品牌口碑数据「最满意」的部分,观测结果分词的效果并不理想,如“颜/ 值/ ,/ 还是/ 颜/ 值/ 。/ 新/ X3/ 的/ 前/ 脸/ 很/ 凌厉/ ,/ 侧面/ 比例/ 和/ 腰/ 线/ 也/ 不错/ 。/ 操控/ 让/ 人/ 极其/ 满意/ ,/ 尤其/ 高速/ 时/ 的/ 表现/ ,/ 简直/ 就是/ 越/ 快/ 越/ 稳/ ,/ 开/ 宝马/ 看来/ 的确/ 不是/ 吹/ 的/ 。”,已有的分词器是单纯按照词性进行分词的,接下来,我们需要针对不同词性的组合来进行第二版的分词。

第二版的分词引入了结构化感知机标注框架进行辅助分词,该框架是通过感知机做序列标注任务,配置起来也相对简单和实用,针对类似语料分词的效果如:“颜值/nz ,/w 还是/c 颜值/nz 。/w 新/a X3/n 的/u 前脸/n 很/d 凌厉/a ,/w 侧面/f 比例/n 和/c 腰线/n 也/d 不错/a 。/w 操控/v 让/v 人/n 极其/d 满意/v ,/w 尤其/d 高速/d 时/Ng 的/u 表现/vn ,/w 简直/d 就/d 是/v 越/d 快/a 越/d 稳/a ,/w 开宝/v 马看来/nr 的确/d 不/d 是/v 吹/v 的/u 。/w”。从分词的效果来看,如“新X3”、“开宝马”、“高速时”等这类的领域词汇没有被标注出来,从而认为降低了分词的效果。

分词效果的提升是个不断迭代的过程,在标准模型的基础上加大人工标注的投入,分阶段筛选出可用词条,做有放回的语料补充,或通过词性做词组的扩展。在hanlp的基础上我们新加了chelib(车型库)中的品牌车系和汽车的专用词库,并对不影响句子整体表达的副词、连词等词性的分词做了过滤,同时也增加了对负面词语的判定逻辑,在分词质量上有了较大的提升。

关于分词的工程部分:

1、基础的语料经过格式的规整存储mysql,规整后的语料数据包含:id、time、city、品牌、车系、内容。

2、经过初步的分词后的结果产出10w量级的词条,经过去重、过滤及业务侧个性的筛选规则要求,有效分词为5.7w。

3、通过词性的标注和词组的扩展流程,产出可用词组,针对这些词组做业务相关性的分析和筛选,并针对筛选后的结果集做聚合,这部分可以认定为基础标签,基础标签结合先线上实验效果的反馈最终会进行评估,筛选稳定优质的线上使用标签。

4、配合阶段3也会做词向量的计算,产出词向量矩阵,扩展标签的召回能力,并加入一定量的人工成本进行干预。

关于词向量部分

1、词向量描述了目标词组在固定语料基础集上训练的空间位置(多维空间)。

2、可以通过欧式或cos计算标签之间的空间距离,帮助我们找到距离相近的标签。

3、距离相近的标签一定程度上可以帮助我们扩展标签词的信息召回能力,提升召回率,并在信息返回上提供了一定新颖信息的探索能力。

4、目前我们采用word2vec进行词向量的计算,word2vec是目前比较普遍的词向量算法,word2vector 输出的结果可以理解为当前的词在固定语料中的空间位置,很多人都有一些了解,它包含CBOW/Skip-gram两种训练模式,是一个结构简单的神经网络,通过上下文预测当前词、或者通过当前词预测上下文,感兴趣的可以参考下word2vector的原理、训练过程。

工程的处理流程:1 语料 → 2 分词模型 → 3 标签词 → 4 word2vec → 5 词向量

前面提到词向量可以理解为 :目标词条在当前语料中的空间位置,以“我”字为例在我们语料中训练后100维的词向量可表示为如上图。通过对已选标签词向量的计算,生成词向量矩阵,这可以帮助我们发现当前语料基础上的相似标签,以扩展标签的召回能力,如图示,标签3与标签2、标签4词向量接近,那么我们可以认识车型2、车型3、车型6也在标签3的召回能力中,当然这个过程也需要介入一定量的人力查验的工作,check相关车系、车型的符合度,进而调整标签同车、车型的映射关系。

标签库

标签库的数据层级的设计对应了二手车的车型库的基本层级结构,映射关系分了3层:品牌 → 车系 → 车型,从数据的层级结构来看,标签依次对应了品牌、车系、车系,可以按不同的维度层级进行聚合,生成相关的检索条件,从标签数据的存储格式:ID | name | 车型ids | 车系ids | 品牌ids 可以发现标签的召回顺序依次是车型、车系、品牌,在后来的实际应用中,可以认定准确描述车型级别的标签很少,并且不具备良好的召回能力和泛化能力,所有我们目前考虑的召回层级只到车系这一级别。

标签库本身是个不断迭代和自我学习的过程,清楚的层级映射服务于线上的召回场景,并结合线上效果的反馈提升和优化标签子集,主要参考的指标仍然是召回能力和准确率,本身用户的行为就是一个很好的反馈,所以标签库的实验也是一个ctr和质量提升相互促进的过程。另外目前二手车标签挖掘的内容相对比较基础,初步搭建工程的同时实现了关于上面全流程的几个核心的节点,但可参考的指标还没有明显的提升,后续如果资源允许,我们也考虑加大这部分的投入,将这部分配置工具化,提供给产品同学可操作与观察的配置平台,这这部分实验的工作快速有效的流程化进行。

标签的提取与更新的流程这边就不做详细说明了,具体参考上图。

从场景、标签服务、用户模型三个模块来简单说明目前我们线上标签召回的时序:

1、流量入口我们选取的是二手车m页的第二页曝光内容,在feed流中插入实验的标签区域,该区域的曝光会携带用户信息(cookie、设备信息等)首先从标签服务拉取标签信息,用户的身份信息会结合用户的模型进行兴趣召回,这个点是同之前我们的说到的用户兴趣描述相结合的,基础用户数据是IDMapping与相关设备信息、cookie、tel的映射,保存了IDMapping到用户兴趣的模型,标签服务通过用户兴趣描述的topN(检索条件)反向查询标签,作为标签的召回子集反馈给场景。针对无行为用户(新客)或行为较少的用户,就需要考虑标签的补足,补足的标签主要是从按地域热门标签中抽取。

2、标签曝光后,用户通过标签的点击做车源信息的召回,召回的顺序是从车型 → 车系 → 品牌,这边的信息召回也会结合广告贴策略有所侧重,召回能力不足时,同样需要考虑补足的能力,比如通过词向量召回相似或热门召回更多的信息,相同属性及语意相似的标签,我们也会保存关联的关系,如:动力澎湃 – 动力强劲、外观拉风 – 外观拉轰、外形威猛 – 肌肉车,后者虽然不在线上召回的子集,但却可以帮助提升召回的能力。

3、车源信息的曝光结合用户的点击行为作为我们回溯模型的数据进行记录和分析。

基于场景的反馈始终也是以提升ctr为核心的,所以标签应用部分提高标签的质量和召回能力本质上就是提高对ctr的转化效率,目前我们正在做的手段:1 选取优质标签子集 2 人工干预和调整,分析看标签召回能力分布 3 结合用户特征做标签的展示策略(历史查询行为 形容词 高热词 相关高匹配次 探索词) 4 监控效果行程反馈-快速实验  5 提高位置争取资源。

并且在后面的实验场景中,我们也需要建立从:1 标签召回 → 2标签点击 → 3 信息检索 → 4 信息点击 → 5 电话转化完整链路的数据分析能力。

第三部分 – 点击的提升

背景 + 摘要

在feed场景下点击率的提升是各个业务侧关注的重点、是链接效率提升的一个重要的指标,关于ctr的提升两个关键的点是需要对用户的兴趣进行准确的描述及对信息结合用户的个性进行ctr预估指导的排序,这是目前业内比较通用的做法,关于算法与模型的选择也几乎没有太大的差异( LR、GBDT、XGBOOST + FM、FFM、深度学习等 ),细节的差异主要来源于服务于不同业务场景、品类的考虑及特征工程部分投入的力度,这些都需要对自己的业务场景、属性、特征有一个相对深入的理解和认知,业务属性的细分、特征的定义和选取、特征权重的分析、阈值的定义、时间地域及其他因子的考虑。

这边我整理了二手车业务侧在feed场景下针对ctr提升工作和思路的完整流程,共分为7个部分:1 数据仓储 → 2 召回部分 → 3 样本&特征工程 → 4 排序+过滤 → 5 策略&规则的干预 → 6 AB测 → 7 监控&统计,关于召回部分在之前第一个部分-用户兴趣描述&召回中已做详细介绍,这边不做太多展开。

01 数据仓储

作为数据收集与分析的基础,2016年我们开始着手搭建二手车业务侧的数据仓储,收集数据的同时提供了一套统一的数据口径及通用、高效的数据分析能力,仓储的能力主要有两个部分,一部分是离线数据的处理和分层,一部分是实时数据的处理与分析平台,采用了业内数据平台通用的分层结构,DS → DW → DM → DA,面向各层提供源数据及方案,从去年开始业务测数据工作整体迁移至中台统一的数据平台。

这一部分在数据智能这个点的相关工作主要是通过用户行为的收集、采样、清洗,做基于itemCF的相似度计算,产出相似度矩阵,为后续的召回场景提供基础的召回模型,业务上支持实时和离线两种方式的计算。

02 召回

用户的行为留存结合相似度矩阵做用户(检索条件)topN的映射,这是进行用户兴趣描述和个性召回的基础,模型召回支持实时和离线两种方式,针对冷启动的问题这边采取的方式是热门召回 + 基础ses的检索,线上的场景是多召回策略的融合,并加入补余的策略保障基础物料的长度,为后续排序&disp环节提供充足的物料。

03 样本&特征工程

特征工程是整个流程中最核心的环节,这个环节主要包含4个部分的工作,1 样本的选择与处理 → 2 特征的选取 → 3 预估模型的训练 → 4 在实际场景中进行ctr的预估。

样本部分的预处理主要分了4个步骤:1 样本的收集 → 2 样本的去燥 → 3 采样 → 4 样本可用性的验收。对于特征选择部分,主要采用的方式是特征的抽象、特征的衍生、和特征的提取。

关于预估模型的训练,我们经历了几个阶段,这个几个阶段基本上结合了我们特征工程投入的不同阶段,与之契合。

最初的第一版预测的模型是基于LR进行训练的,通过不同的价格区间将用户进行聚合,将之前相对发散的模型聚合到针对几类用户的ctr预测,线上应用的效果并不太理想,随即我们开始考虑针对特征到结果的干预权重进行分析,这个阶段主要讨论单个特征的变化与ctr变化率的关系,我们通过分析特征变化与结果变化的相对关系,来辅助确定特征取值的有效范围、当前特征的个性偏离度,并开始定义中间特征。

关于第二个阶段模型的训练,我们使用的是GBDT+LR,GBDT算法会进行多次的迭代,每次迭代使用的输入数据是上一次迭代后的残差,每一轮迭代会生成多个树,生成树的个数和样本的类别树相同,每一轮迭代的结果会进行残差的计算,获得所有叶子结点的残差会当作输入进入下一轮的迭代中用于模型训练,所以GBDT可以理解为“多棵树的模型”。我们业务场景中使用GBDT更多辅助分析特征的权重及生成新的特征,通过样本集的训练,将每个样本带训入练好的模型中获取的最终的残差,将残差作为一个新的(n+1)特征补充到样本集合中去,后续可以放到LR中进行下一轮的模型运算,效果收益很好,这个阶段也是特征工程从宏观到微观的转变。

关于第三个阶段的训练,我们使用的是XGBOOST+FM,通过XGBOOST对当前的特征集合进行权重的分析,产出特征权重的排序,结合FM做交叉特征的组合,在线上获得了非常不错的效果。

这边要特别提到中台提供的WPAI平台,针对模型的训练、AUC的测试非常的高效。

04 排序 + 过滤

将用户历史行为的留存做特征的映射,结合info的特征做ctr的预估,通过ctr预估的结果对infoList进行排序,排序的过程也会加入其它权重和系数的干预,比如信息的质量、商家的信誉等级等。

05 策略&规则

关于策略与规则的干预能力,我们采用配置的方式切入结果集的处理环节,实现规则的实时干预与可配置化,这边干预的规则主要是业务相关的内容,如重复点击、相同车系条数的控制、帖子图片的要求(侧重信息质量)、真车已验等。最后的排序的环节也会结合商业广告权重,做ctr指导或收入指导的不同方案。

06 AB测实验平台

前面已经提到了关于AB测的实验平台,中台的日晷系统可以帮助我们实现多层及交叉的实验,日晷本身与工程的接入也具备良好的契合,配置成本不高。我们将线上的实验分了四层,分别是召回层、排序层、规则层、和展示层,一部分是工程策略,一部分是展示及用户行为反馈。

07 监控+统计

最后一个部分是监控与统计,主要为我们提供两部分的能力,一方面是系统的监控,另一方面是结合实验的结果进行相关业务报表的产出与分析。

关于样本的选择与处理

刚才提到关于样本部分的预处理部分主要分了4个阶段:1 样本的收集 → 2 样本的去燥 → 3 采样 → 4 样本可用性的验收。

样本的收集环节,选取的是 pc、m、app 曝光/点击的日志,通过点击与固定步长的曝光定义基础的正负样本,完成样本部分的收集工作。

在样本的去燥环节,主要对关键字段缺失的数据进行排除、对爬虫及超出某些阈值范围的数据进行排除,这些规则的定义需要接入一定量的思考及分析成本,我们会通过线箱离群点辅助的方式帮助我们确定可用数据的阈值范围,对于样本数据真实性的考虑,如曝光的真实性、结合用户行为的真实性的判定规则等,同时这个过程也会对之前的埋点进行梳理和修正。同时也会加入业务规则的去燥,主要对业务以及使用数据源头的方式进行去燥,比如用户的点击行为过于发散的,这类数据无益于后续模型训练,需要剔除以降低对模型的干扰。同时针对样本缺失的字段需要进行相关处理和填充。

在对原始样本进行去燥后,样本的体量、正负样本的比例也会存在偏差,所以需要进行采样,同时也需要注意样本的无偏性,这边主要采取的方式有无放回的简单随机取样、有放回的简单随机取样(主要用于样本扩充),业内常用的采样方式还包括平衡采样、整群采样、分层采样等。

关于样本正确性的验证使用简单的留出法,即整体按比例切分测试集、训练集,用于验证样本的质量。

特征工程 – 业务基础特征分析与特征的选择

数据分析、场景的赋能都是服务于业务、赋能于场景,这些需要对业务场景、特性有深入的理解与分析,并能快速在场景中的实践与迭代,品类特征的分析可以帮助模型的训练,结合人的场景效果的反馈一定程度上对产品的思路也会有所帮助,所以特征工程部分也是业务侧数据分析和赋能的核心。这边整理出我们在特征工程部分4个比较关键的内容(1 基础特征的选择 2 宏观特征的分析 3 特征的关联 4 算法的融合),结合之前讲到的数据处理及特征抽象两个部分共同组成了二手车业务侧特征工程的内容,整体上也是从宏观特征 → 微观特征的研究过程。

01 关于基础特征的选择

先期我们将数据样本的特征分了3个属性类别,描述车辆属性(如品牌、类型、价格区间(向上取整)、车系、颜色、里程区间、标签等)、描述行为属性(showClick、检索城市等)、描述用户属性(描述用户个人属性的相关数据比较少,不具备样本规模,且字段完整度很低),第一批人工定义了约40个基础特征,这个阶段的主要目的是想验证模型对于线上转化效果的干预能力,所以算法部分选择了比较基础的 LR,通过用户dis/点击的正/负样训练这组特征权重的系数,LR相对比较容易理解,虽然是解决分类的问题,但我的理解它本质上是一个线性回归的模型,通过sigmoid的函数将结果处理成 0 ~ 1 的值,通过压缩数据的巨幅震荡,从而方便的到样本点的分类标签,从而可以处理 0/1的问题, 模型的计算本身就拟合 1 + 2 + … + n 这组系数。第一版LR的线上效果并不好,对转化的提升几乎没有什么影响,所以一种算法、模型对于线上效果的提升有多少,是以样本的质量、特征的选取、值域的定义为基础的,考虑到这些,故而我们又回过头去将更多的精力转向样本的处理与特征的深入分析上,所以引出下个阶段 – 宏观特征的分析。

02 宏观特征的分析

这个阶段我们主要讨论单个特征的变化与ctr变化率的相对变化关系,通过数据分析将目标特征值域的变化与用户的点击次数相结合,生成“点击-目标特征”分布,观测特征值域的变化对点击产出的影响和变化趋势,这在帮助我们分析选取优质特征的同时也可以辅助确定特征的有效值域。另外这个阶段我们开始考虑“中间特征”的定义,如【曝光/点击-平均价格】、【帖子价格-用户点击平均价格】等。经过这个阶段的工作,我们的特征增加到了140多个。

03 特征的关联 – FM

这个阶段我们开始考虑特征之间的关联性,做交叉特征,经过第二个阶段的特征分析,我们选取参与模型训练的特征增加到了147个,某些特征需要经过One-Hot编码,One-Hot编码转换后会导致样本数据的稀疏性,开始我们也只是为了解决样本特征的稀疏性引入FM,FM可用于高度稀疏的数据场景,具有线性的计算复杂度,一般的线形模型没有考虑特征之间的相关性,为了表示特征之前的相关性(特征组合),特征 与 的组合用 来表示,公式中的n表示样本的特征数量, 表示第i个特征,与常用的线性模型相比FM的模型只是多了后面特征组合的部分。

FM针对特征稀疏的数据进行特征的组合,做交叉特征,产生新的特征和特征权重,尤其是在one-hot编码后,产生的离散形式,使得离散特征的选取针可以对特征的个性维度进行分析。FM这版上线后效果比较明显,对标无模型的干预,ctr有了9%的提升。

04 算法的融合

在这个阶段随着样本和特征的相对稳定,我们已经开始对算法进行融合并结合线上的实验效果反馈进行快速的迭代和调整,比如将GBDT同LR结合,将XGBOOST同FM结合。

前面也说到了关于GBDT的使用,我们将GBDT进行算法的融合实际上是通过它进行特征的选择,GBDT是个弱分类器,默认选择的是CART-Tree(关于决策树的三种分类算法ID3、C4.5、CART感兴趣的可以看一下),CART-Tree生成的过程其实就是一个特征选择的过程,是一种二叉树的数据结构,训练的过程会经过多次的迭代,每次迭代使用的数据输入是上一次迭代后的残差,我们业务场景中使用GBDT共多的是生成新的特征,其实构建特征这种说法也不是非常准确,只是利用GBDT去产生特征的组合,通过样本集的训练,将叶子节点组成的向量如 [0,1,1,1,0] 作为该样本的特征组合,和原来的特征一起输入到LR中进行训练,获得良好的效果收益。所以不难看出GBDT对于特征的组合、特征的选取方面可以帮助我们节省很大一部分人力的成本。

XGBOOST的使用基本上也是类似的思路,我们使用XGBOOST主要是对特征的权重进行分析和排序,做特征的优选(这个前面有说到,不做赘述)。

稳定后的模型为线上ctr的提升带来的不做的效果,模型的干预(召回+排序)对于 ctr1的提升为16.17%,对ctr2的提升为16.96% 。「数据统计于今年4月份整月效果均值」

关于二手车ctr预估的整体流程这边做个简单的总结:1、收集平台用户show/click数据,通过数据仓储进行固化及初步的清洗,2、通过数据的预处理(清洗、去燥、采样、验证)产出基础样本(这边需要结合了特征工程特征输出),3、与特征工程部分相结合在WPAI平台上进行模型的训练,观测线上实验的效果并不断迭代这个过程,4 赋能线上场景。

第四部分 – 电话的环节

电话是用户联接转化的最后一个环节,尤其是在二手车商业产品的全联接(来电通)后,电话和收入有了直接的挂钩,前面已经提到关于用户身份的预估、兴趣的描述对于电话场景的赋能,这边主要是从二手车电话系统的稳定性(容灾、运营商管理、号码资源使用降级)、渠道spm的快速接入、反作弊等方面说明我们针对电话这个环节做的一些努力。

2016年下半年,二手车搭建了完整的电话系统,后针对cpcall全连接的商业模式进行了几个版本的迭代和支持,今年上半年完成了对二手车lego商业的迁移和优信全国购的支持,目前的电话系统包含了5个部分:1 业务(渠道)接入的配置与管理、2 服务、3 号码资源的管理、4 运营商管理、5 监控&灾备与降级。去年下半年开始同中台WPhone进行对接,拆分业务和号码服务。

电话这部分主要是考虑系统的高可用与提升号码资源的使用效率,并降低不同spm的接入成本,同时针对不同的数据纬度进行分析。这部分我们主要做了下面这4件事:

01 关于渠道、业务的快速接入

我们采用注册中心的方式,对不同spm的接入、资源的配置进行统一的管理,缩短了渠道的接入流程,这为今年二手车商业运营的集中投放提供了高效的环境,渠道的监控(链接控制、运营商灾备等)在保障投放稳定的同时,对不同渠道投放的效果数据也进行了统一的收集和反馈,为运营同学分析不同渠道投入情况、ROI等提供了数据基础。

02 关于反作弊、策略

电话系统的反作弊是一套结合不同场景(pc、m、app、投放list、api等)的综合策略,是为了解决在号码资源有效的情况的防止异常流量(比如爬虫、c2黑产)访问导致的爆仓(漏真号)现象的手段,这边采取的策略如黑白名单的控制、IP访问的策略、频次的控制,并也会结合用户行为上下文的信息进行判定,比如“面包屑策略”、设备指纹、验证码等。配合的我们也在WMonitor中配置非常精细的监控策略。

03 容灾和降级

主要分为业务层面上的降级和技术层面上的降级,业务层面上的降级主要是针对号码资源的使用,根据号码资源的剩余情况动态调整相关的策略进行干预。基础层面的降级主要是保障系统的稳定性与高可用,在资源模块、运营商模块及其细分的层分别配置了相关的降级方案及熔断机制(Hystrix)。

04 提升 – 号码资源的使用效率

主要是结合用户的身份预估做智能AxB的绑定,结合用户的身份及历史行为进行模型的训练 – 做cvr拨打的预估,或通过模型的系数动态干预绑定有效期,这些内容在前面提到,这边不做过多说明。

关于注册中心、渠道监控部分,对于电话系统的接入分了4个模块(资源、话单、报表、监控),降低不同spm接入成本的同时,通过后台config统一管理,不同spm的话单、接通率等核心指标也会结合云窗提供基础的报表能力,做到对渠道的细分和资源的隔离(可以参考上图中关于渠道话单、渠道转化等不同云窗主题)。

关于过载保护与服务降级采用分层隔离的方式,并配合可切换的降级方案,对于号码资源的保护采取多策略灵活组合的方式进行防抓取,对于号码资源、运营商状态的异常监控采取熔断机制并进行状态的同步。

业务层面的降级针对号码资源的使用情况进行配置,在资源充足的情况下使用正常的回收周期,在资源紧张-剩余20%阶段,使用FIFO队列保存号码资源的使用,进行队列回收。同时我们也会根据商家固定周期(一周)话单情况离线分析的结果,为商家设定固定的号码资源(商家大号),保障商家部分信息的有效接通及平台的商业利益(计费电话),在极限情况-资源为0的阶段也会介入智能的干预,干预目标人群的号码资源回收周期,以减轻压力,模型判定的结果(概率值)更多的是辅助决策,避免强策略导致的误伤。

技术层面上的降级会结合hystrix做熔断及灾备的配置,通过spm接入后的访问量做周期的分析,更新降级的配置方案。

从去年下半年开始,二手车的电话系统同中台的WPhone开始紧密的合作,计划在拆分业务、号码管理、接通渠道控制、运营商管理几个部分进行切入和协同,目前已经完成非会员商家部分号码服务部分的对接和迁移。

总结我们在电话系统部分的投入,是基于在号码资源有限的情况下,最大程度保障线上业务、服务的稳定性,并结合AI在提升号码资源的使用效率上进行赋能。在这个场景中,我们投入的时间和精力也比较多,后续关于这部分的内容会进行单独的整理及分享。

总结

场景AI的赋能需要对业务有深入的理解,任何智能方向的考虑与分析均要从业务本身的特性、特质出发,这些体现了业务技术人的优势与思考。至此围绕提升用户连接转化在 流量的接入、效率的提升、点击率的提升、电话 四个关键节点技术赋能的内容基本整理结束,后续也会针对其中的某些环节的技术内容做更详细的展开和说明(比如智能在电话场景部分的专题、商家服务能力技术整合的专题、用户身份预估&兴趣描述2.0内容的专题等),会尽快和大家分享,也希望相关方向的内容我们一起进行交流和方案、思路的共享。

另外也感谢我的领导在整个过程中所给予的宝贵思路与建议。

目前团队在持续引进优秀的人才,感兴趣的同学欢迎简历至: lixd@58.com ,也可以通过这种方式同我建立交流。

以上

········································ 广告

另外一部分关于「二手车商家服务能力整合」的内容,也是目前我们下个阶段工作的重点(这次不做相关的展开)如下图,计划针对二手车业务4个方向(车源、商家服务扩展、投放及营销、客户商机)的服务能力进行整合,对数据、存储进行整合的同时希望在不同方向提供统一服务能力,并能结合AI对商家的服务场景赋能。

关键词:库存指导、发布效率提升、检测平台、商家的画像(信用等级等)、AI智能定价、投放指导、线索的分层管理与售卖等。