具体实施方式
本领域技术技术人员应当知道,本发明可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
对于用户的精细运营是互联网产品持续健康发展的关键。各个用户的状况属性不同,其对产品的需求(包括功能点设置,界面的配置等)各异,而且不同用户群间的需求可能是相互排斥的,单一的运营策略一般在实施过程中效果不佳。针对用户的特点做定制化的产品运营是提高营销效果的关键策略之一。业界常用的数据化运营手段是通过对用户建模,利用机器学习算法从用户的历史行为数据中学习出规律并用于细分用户群。业务人员针对各用户群制定对应的运营策略,以提高运营的效果。譬如在游戏领域,通过算法自动筛选出潜在的流失用户,并针对不同用户群的流失原因制定召回的运营策略和活动,提高游戏的留存率以让游戏创造更大的商业价值。对用户建模的关键技术之一就是针对用户粒度的特征工程。特征的好坏是机器学习模型的性能瓶颈和关键因素。所谓业界公认的“数据和特征决定了机器学习的上限,而模型和算法聚焦逼近这个上限”。
刻画用户特性一般利用两类信号,包括属性类特征和行为类特征。其中属性类信息一般指用户填写、或者符合某种业务规则获得的数据字段。譬如用户的年龄、性别、等级等。这些用户粒度的信息相对静态,即一个用户对应一个字段。各个字段通过客户端采集的方式获得并通过数据上报存在于服务器的数据库中。这些字段与用户的一对一关系,可以天然地对应地表示成用户特征。相应地,行为类特征信息一般指从客户端侧采集获得的用户行为日志数据,譬如点击,登录,消费等记录。这些数据在一定程度上反应了用户的状态和偏好,是刻画用户特性的有效信号。日志流数据较动态,用于记录用户每个时刻可能的行为,即一个用户对应若干个行为信号数值。日志的条数与用户不是一对一的关系,而是多对一的关系;难以用一个指定维数的特征表示可变维度的数值信号。进一步地,日志流数据是各个信号点在时间维度上的分布,时序本身是刻画用户特性的重要信号。如何从这类流式数据中自动构建出有效的特征是行业性的技术难题。据所知的文献,业界一般依靠人工经验定义规则的方法从运营数据中构建特征。譬如针对每个用户,统计其每天累计消费金额作为一个特征。即通过人工定义规则的方法,截取一个时间段的日志流,并从中统计出指定维度的特征。经验的主观性导致结果的不稳定,难以沉淀于后期应用,而且性能容易遇到较低的瓶颈。为了解决这问题,本发明开发一种从日志流中自动提取特征的方法,并把构建的特征应用于多类数据营销项目的建模中,获得显著的业务价值。
本发明的第一实施例提出一种可从业务日志流数据中自动提取特征的方法。参照图5,包括以下步骤:从日志流中获取指定用户特征;利用聚合函数对获取的指定用户特征进行聚合,以生成对应用户的特征向量;根据聚合后的特征向量,构建基础特征向量;根据基础特征向量,构建时序特征;根据基础特征向量和构建时序特征,生成训练数据。
如图1所示的用于实现该方法的系统的框架可划分为四大模块,分别是日志接入单元101、信号聚合单元102、基础特征构建单元103和时序特征构建单元104。在一示范性而非限制性的示例中,本发明把生成的特征应用到两类数据营销模型中,包括潜力玩家和潜在流失玩家分群,获得巨大的业务价值。
概括地,这里介绍系统的背景和工作原理。首先我们接入用户在各种行为中的日志流,即从日志流中获取指定用户特征,包括登录,注册,充值,消费,订阅等,并基于该流构建特征。特征是刻画事物状态的基本信号粒度。特征越丰富,对用户的刻画角度越全面,对于算法模型的预测结果帮助越大;另一方面,特征越多,计算复杂度越大。
在业务运营的日志流中,如果针对每天各个时间点的单条记录都看成是一个特征,可以把日志流数据表成是一个巨型的矩阵,如表1。在该矩阵中,用户在某时刻发生的记录表示成对应的数值,未发生的记录表示成零。通过这个方法可以把日志流中记录与用户间多对一的可变维度关系转换成一个固定维度问题,便于构建特征。
表1.日志流矩阵
考虑到日志流记录庞大,这种粗暴地构建特征的方法,所得的特征规模过大。譬如每个日志流每个维度每天的特征就多86400个特征(24小时,60分钟,60秒);而且大多数特征的数值都为0,过于稀疏,操作性不强。在实际应用中,一般平衡考虑丰富程度和计算性能;即找出有效却不冗余的特征。
为了解决以上问题,本发明首先对日志流中做信号聚合,获得抽象的低维度数值信号。这些信号尽量保留和覆盖日志流的信息量,而且大幅地降低了维度,显著地减少计算量和数据规模。基于这些数值信号,通过聚合/组合和归一化处理后自动生成基础类特征。其中归一化是考虑了数据量纲的差异性,即不同的数值字段所表示物理意义不同和所用的单位不同,以输出标准化的数值,让不同的字段处于同一数量级,适合进行综合对比评价。进一步地,利用递归神经网络模型对时序信号做嵌入式编码,生成时序类特征。生成的时序与以上描述的基础特征可应用于数据营销模型,譬如潜力玩家分类等。下面我们具体描述各个单元模块的实际原理。
(1)数值准备单元
参照图2,该模块负责接入游戏中用户的互动日志数据,即从日志流中获取指定用户特征。
游戏与玩家的互动数据指平台记录的玩家在各款游戏中的运营数据。这些数据能刻画玩家对游戏的喜好程度,和游戏的营收能力。这些数据主要包括玩家的注册、登录、订阅、充值、和消费行为;图2中的处理单元201代表注册日志收集器,单元202代表登录行为日志收集器,单元203代表订阅日志收集器,单元204代表充值日志收集器,和单元205代表消费日志收集器。具体地,收集统计日起前30天玩家在的注册、登录、订阅、充值、消费日志流数据。
这些数据是特征生成的基础以及信息源。
(2)信号聚合单元
本模块负责从日志流中聚合出细粒度的数值数据,即利用聚合函数对获取的指定用户特征进行聚合,以生成对应用户的特征向量。具体地,有三类聚合函数:
求和函数:从数值日志流数据中,统计指定时间区间的累计值信号。
定义线性函数其中I(.)代表归一核,I(x)=x;i代表数值粒度,本发明以天为粒度,g(i)代表输出第i天用户在日志流中的聚合数值,f(i,j)代表第i天第j个时刻用户在日志流中的数值。
频率函数:从数值日志流数据中,统计指定时间区间的频率值信号。
定义线性核函数其中Freq(.)代表频率核;i代表数值粒度,本发明以天为粒度,g(i)代表输出第i天用户在日志流中的聚合数值,f(i,j)代表第i天第j个时刻用户在日志流中的数值。
时间函数:从数值日志流数据中,获得指定时间区间的时间边际信号。一般指极值,包括极大和极小值。
定义线性聚合核g(i)=E(f(i,j)),其中E(.)代表极值核。具体地,E(f(i,j))=jwhen f(i,j)=fmax or j=daymin,i代表数值粒度。本发明以天为粒度,g(i)代表输出第i天用户在日志流中的聚合数值,f(i,j)代表第i天第j个时刻用户在日志流中的数值。
举例,基于"用户消费记录"日志流数据,
求和函数:统计该用户"每天的累计消费金额",并把该金额值作为用户的细粒度数值信号,用于后续特征的生成。考虑到粒度在"天"的级别,较"周"和"月"的级别在信号的完整性方面要强,即尽量保留了流式数据的大多数信息。
频率函数:统计该用户"每天的累计消费频次",并把该频次值作为用户的细粒度数值信号。
时间函数:统计该用户"最早一次消费时间"和"消费额最大的一次消费时间"。该信息能反映用户的消费偏好,例如偏好上午9点登录消费或者下班后傍晚9点登录消费。
以上三个聚合函数可以把对应类型日志数据转换成一个有限维度的向量。相应地,基于单元1接入的多个日志数据,通过聚合函数,每个用户可以表示成对应的向量,记做[d1,d2,...,dk]。
(3)基础特征构建单元
接入单元2输入的细粒度聚合数据,本模块通过构建多类转换函数生成多种特征,包括针对数值型数据的线性统计特征和衍生特征,以及对时间型数据的类别型特征。譬如,线性特征如"最近7天累计消费金额",衍生特征如"最近7天登录活跃度涨幅",类别特征如“最近7天常玩游戏时段”等多条件的特征。换句话说,各个用户的聚合数据向量[d1,d2,...,dk],通过转换函数生成基础特征向量[x1,x2,...,xp]。即根据聚合后的特征向量,构建基础特征向量。
具体地,针对业务常见的两类数值数据分别构建对应的转换函数:
数值型数据:输入指定时间区间的数值序列,经过多类函数组合处理,输出一个固定维数的特征向量;向量的每一个值代表一个特征
时间型数据:输出时间值,经过转换函数,输出一个固定维数的特征向量;向量的每一个值代表一个特征
具体地,转换函数的构建方法如下:
数值型数据:
输入:数值序列List<Double>list,某个时间区间的指标序列值。举例,最近30天用户每日的消费金额、消费次数、登录频次、登录时长、订阅量;当某天数值为空,设为0;18个数值型的转换函数定义如下:
输出:特征向量List<Double>features,以上函数生成的一个或多个数值为特征向量的元素。
时间型数据:
输入:时间类型值,Date date1,某个时间指标值,如'2016-06-01','2016-06-0101:20:20',适配不同的Date格式;如'2016/06/01';'2016/6/1';譬如当天用户登录时间、当天用户消费时间等
22个数值型的转换函数定义如下:
输出:特征向量List<Double>features,以上函数生成的一个或多个数值为特征向量的元素。
对于转换后的特征向量,考虑到特征字段间量纲不统一的问题,利用数值归一化计算输出标准化的数值结果作为最终的特征。
归一化是把各个字段的数值幅度调整到[0,1]区间,用于同一量纲和指标定义差异。本发明同时采用以下三种策略做归一化,对每个特征分别输出对应的3个归一化数值。
●函数归一化,通过映射函数将特征取值映射到[0,1]区间;最大最小值归一化方法,即x_nor=(x-x_min)/(x_max-x_min),x表示基础特征向量的数值,x_nor表示归一化后的基础向量的数值,x_min表示x在全局的最小值,x_max表示x在全局的最大值;
●分维度归一化,基于最大最小归一化方法做升级,其中最大最小值选取的是所属类别的最大最小值,即使用的是局部最大最小值,不是全局的最大最小值;即x_nor=(x-x_min_class)/(x_max_class-x_min_class),x表示基础特征向量的数值,x_nor表示归一化后的基础向量的数值,x_min_class表示x在所属类别的最小值,x_max_class表示x在所属类别的最大值;
●排序归一化,将特征按大小排序,根据特征所对应的排位索引值做归一化;大小排序索引值做归一化方法,即x_nor=x_index/list_size,x_nor表示归一化后的基础向量的数值,x_index表示将特征按大小排序后的顺序索引值,list_size表示参与大小排序的特征的数量。
(4)时序特征构建单元
本模块负责构建含有时序信息的特征,刻画用户的行为信号间的先后顺序信息,从而将信号本身和信号的先后顺序相结合,更好地反映用户的行为习惯等。该特征能有效衡量用户在行为上操作的先后次序规律和偏好。即根据聚合后的特征向量,构建基础特征向量;以及根据基础特征向量和构建时序特征,生成训练数据。
首先接入单元2输入的细粒度聚合数据,从单元2的构建可知,每个用户在各个维度上有若干个聚合的数据信号,记做向量[d1,d2,...,dk]。对于每个用户,可以类比成文本处理领域中的一个句子,每个信号值可以看成是句子中的一个词。为了有效挖掘用户在日志流中信号的先后顺序信息,本发明采用双向递归神经网络技术。该技术一般在学界中被用于刻画词在句子间的先后顺序信息。本发明借用该技术解决一个新领域的问题。该技术的包含4大步骤,具体如下:
利用词向量生成技术和word2vec工具,基于全体用户的聚合数据作为训练语料,输出每个信号值的向量形式,便于构建数学模型,记做embeded_vector。具体地,由单元2可知,每个用户都可以聚合信息,表示成一个数值向量[d1,d2,...,dk],全体用户可以看成是一个向量集合。把该向量的每个维度数值看成是一个词,全体的向量集合看成是训练的语料;把全体向量输入word2vec工具,该工具可以根据词向量生成技术,对于每个维度数值生成一个向量。该向量整合了所有用户行为中的统计特性信息,包括行为间的共同出现信息,上下文频次信息等。该向量可以方便地做数学计算,便于生成时序特征。譬如对于以上用户的数值向量为[d1,d2,...,dk]),每个数值维度都可以表示成一个固定维度(实验中使用20维度)的向量,即d1可以表示成一个20维度的向量[g1,g2,...,g20]。为了方便表示,每个用户可以表示为一个2-D张量(seq_len,embeded_dim),其中seq_len是行为向量的大小(即k),embeded_dim是该用户各个数值维度向量组成的矩阵[g11,g12,...,g120;...;gk1,gk2,...,gk20]。
基于每个用户的张量,构建双向递归神经网络,输出对应的包含时序状况的嵌入向量,对应的网络结构参照图3。具体地,先把各个用户的张量数据按时序行为对应的顺向次序传递到前向循环神经网络RNN(fRNN)中。对于时序的每个时间步长输入的张量信息,fRNN会构建出对应的隐藏状态编码。该编码是一个hidden_size维度的张量(seq_len,hidden_size)。该编码具有记忆能力,可以把当前输入的时序行为信号,以及该信号之前的若干个信号状况记录下来,并通过模型整合编码形成hidden_size维度的张量。换句话说,该编码刻画了用户在行为状态的前向顺序关系。譬如对于用户的张量(seq_len,embeded_dim),把该张量按时序的前向顺序输入fRNN;先输入行为d1对应的状态,即向量[g11,g12,...,g120],接着行为d2的向量[g21,g22,...,g220],一直到最后行为dk的向量[gk1,gk2,...,gk20]。对于每个向量,譬如行为di向量[gi1,gi2,...,gi20],fRNN都会生成对应的隐藏层向量[hi1,hi2,...,hif],该隐藏层向量可以把行为di以及行为di之前的行为di-1,di-2,di-3,..等前向时序都记忆起来,整合到向量[hi1,hi2,...,hif]中。
接着把各个用户的张量数据按对应的逆向次序传递到后向循环神经网络RNN(bRNN)中。类似地,bRNN按指定的连续时间步长,把输出的信号构建出隐藏状态编码,也是一个hidden_size维度的张量(seq_len,hidden_size)。该编码编码刻画了用户信号的后向次序关系。
fRNN和bRNN一起形成双向循环神经网络Bi-RNN。fRNN和bRNN输出之间的差异在于,在每个行为的时序步长,它们是编码关于序列前向和后向两个方向的信息。对于序列中任意一个信号,其左侧和右侧的上下文信息都完整地记录下来,并通过RNN的模型自然地转换成可运算的编码。
最后把以上输出的两个张量,以元素方式连接输出最终的时序嵌入式张量,记做(seq_len,hidden_size),该张量能有效记忆输入信号时序中前向和后向的信息,即刻画了用户信号的前向顺序关系。
在上线环境中,RNN使用LSTM作为实现方式。
(5)效果验证
经过以上4个处理流程,可以从日志流中为每个用户生成特定维数的特征向量。这里我们把生成的特征应用到实际的数据营销模型中,如图4所示,包括潜力玩家分类和潜在流失预警模型,验证自动构建的特征与人工定义的特征的效果。
首先生成训练数据,然后利用分类算法验证特征的区分度和显著性。具体地,生成训练数据的方法如下:
特征生成:采集各个用户的注册、登录、订阅、充值、消费日志流数据,针对每个日志流,用两种方法(人工和机器自动)分别构建特征。考虑到在真实的业务场景中,依靠人工经验定义的特征在数量一般远小于机器自动生成的特征。譬如人工生成30个特征,机器自动生成1000个特征。
●标签生成:采集各个用户的等级数据;
●潜力玩家分类模型:收集统计日后30天用户的等级数据;当用户30天后的等级高于当前的等级,标签为1;其他情况为0。
●潜在流失预警模型:收集统计日后30天用户的登录天数,当级天数不超过2天,标签为0,代表流失;其他情况为1。
●训练样本生成:训练样本是一个向量,由两部分组成,包括标签和特征,如[y,x0,x1,x2,...,xn],其中y代表该玩家的标签,y∈{0,1}。xj代表特征,譬如[0.1,0.2,0.3,0.4...];训练样本向量为[1,0.1,0.2,0.3,0.4...]。
●性能评测配置:分类模型采用业界常用的支撑向量机SVM,参数设置为线性核。性能考核指标为分类准确性。
本发明的第二实施例提出了一种从日志流中自动提取特征的系统,包括:第一模块,从日志流中获取指定用户特征;第二模块,利用聚合函数对获取的指定用户特征进行聚合,以生成对应用户的特征向量;第三模块,根据聚合后的特征向量,构建基础特征向量;第四模块,根据基础特征向量,构建时序特征;第五模块,根据基础特征向量和构建时序特征,生成训练数据。
本发明的第二实施例提出了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:从日志流中获取指定用户特征;利用聚合函数对获取的指定用户特征进行聚合,以生成对应用户的特征向量;根据聚合后的特征向量,构建基础特征向量;根据基础特征向量,构建时序特征;根据基础特征向量和构建时序特征,生成训练数据。
本发明能从产品上报的运营日志流中自动提取出有效的特征,将信号本身和信号的先后顺序相结合,解决了行业内的技术难题。把构建的特征应用于潜力玩家分类和潜在流失预警等数据营销模型,验证了新建特征的有效性,具体地,在潜力玩家分类模型中,基于机器特征的准确率是85%,相对人工特征性能提升12%;在潜在流失预警模型中,基于机器特征的准确率是78%,相对人工特征性能提升13%。该项目已经融入客服运营管理系统中,指导客服做玩家的精准运营和活动推送,产生巨大的价值。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接相合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在二个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在二个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。