本发明涉及机器学习技术领域,尤其涉及一种面向众筹平台的捐赠行为与捐赠者保持预测方法。
背景技术
近年来,众筹(crowdfunding)平台迅速发展,其中基于捐赠机制的众筹(donation-basedcrowdfunding)平台变得越来越普及和流行。利用互联网作为媒介可以实现大范围的小额融资,因此,众筹机制给慈善事业带来了新的活力,帮助了众多怀揣梦想和身处困境中的人们。然而,捐赠者(donors)群体严重的客户流失(attrition)是众筹平台和传统慈善事业所面对的一个重要的共性问题。事实上,由于本身的非盈利特性,基于捐赠的众筹和传统的慈善活动中捐赠者的流失问题非常严重。据统计,慈善众筹中捐赠客户的流失率达70%以上。因此分析影响捐赠者行为和去留的因素进而预测这两种行为事件是非常有意义的。然而,在很长的一段时间里,有关捐赠行为和捐赠者保持的相关研究和技术方法都十分有限。
随着互联网众筹平台的发展,大量的用户行为数据被记录和收集,因而使得面向该场景中设计基于大数据驱动的用户行为预测方法提供了可能。
技术实现要素:
本发明的目的是提供一种面向众筹平台的捐赠行为与捐赠者保持预测方法,通过结合深度学习,可以为众筹应用、生存分析等领域的实践提供一定的技术支持。
本发明的目的是通过以下技术方案实现的:
一种面向众筹平台的捐赠行为与捐赠者保持预测方法,包括:
从众筹平台上爬取项目数据;
对爬取的项目数据进行特征提取与预处理后,按照时间进行数据区间的划分;
将捐赠者的捐赠行为序列和生存保持序列,以及对应于捐赠者的数据区间划分后的特征构建联合深度生存模型;
结合设计的排序约束函数对联合深度生存模型进行优化,从而预测捐赠者的捐赠行为与捐赠者的生存保持状态。
由上述本发明提供的技术方案可以看出,利用联合深度生存模型(jds)来对捐赠者行为进行建模,可以有效地对众筹平台上的捐赠用户是否流失进行预测,从而提醒平台做出一定措施以减少用户流失率,具有一定实际应用价值,并且能够给平台带来一定的潜在经济效益。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的一种面向众筹平台的捐赠行为与捐赠者保持预测方法的流程图;
图2为本发明实施例提供的问题形式化的描述示意图;
图3为本发明实施例提供的联合深度生存模型的框架图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明实施例提供一种面向众筹平台的捐赠行为与捐赠者保持预测方法,如图1所示,其主要包括:
步骤1、从众筹平台上爬取项目数据。
步骤2、对爬取的项目数据进行特征提取与预处理后,按照时间进行数据区间的划分。
步骤3、将捐赠者的捐赠行为序列和生存保持序列,以及对应于捐赠者的数据区间划分后的特征构建联合深度生存模型。
步骤4、结合设计的排序约束函数对联合深度生存模型进行优化,从而预测捐赠者的捐赠行为与捐赠者的生存保持状态。
上述方案利用联合深度生存模型(jds)来对捐赠者行为进行建模,可以有效地对众筹平台上的捐赠用户是否流失进行预测,从而提醒平台做出一定措施以减少用户流失率,具有一定实际应用价值,并且能够给平台带来一定的潜在经济效益。
为了便于理解,下面针对本发明上述方案做详细的介绍。
一、数据的爬取、处理以及数据集划分。
1、数据的爬取。
本发明实施例中,所爬取的项目数据包括:项目本身的数据,以及捐赠者的非结构化数据和结构化数据;其中,捐赠者的非结构化数据包括:文本数据,如:采用自然语言描述的众筹目的,项目用途,团队目的等等;结构化数据包括:数值型数据如:用户信用评级,平台公布的总计项目数,捐赠团队的成员数,捐赠者的历史捐赠数值等;类别型数据,如项目或队伍的类别标签等,以及时空型数据,如不同时间片下用户对应的捐赠记录。
示例性的,可以对具有代表性的众筹网站(例如,kiva.org)已发布的项目进行数据收集,所收集到的数据涵盖了kiva.org自2005年3月至2017年7月的所有项目信息。与kiva.org平台上项目的主要参与者保持一致,收集并获得了项目参与者丰富的非结构化数据(如:文本数据)和结构化数据(如:数值型、类别型、时空型数据),这些数据与捐赠者的行为密切相关。
2、特征提取。
所提取的特征包括:
项目特征为,包含相对较短的项目用途、相对较长的项目故事与众筹目的的文本数据、以及包含项目所属类别的类别型数据。
本领域技术人员可以理解,此处的相对较短是指,项目用途的文字长度相对于项目故事的文字长度较短;同理,相对较长是指,项目故事的文字长度相对于项目用途的文字长度较长。
示例性的,项目用途可以是简短文字介绍项目方向和目的,例如,需要筹集xx资金用于xx疾病治疗;项目故事则是对项目的故事背景进行详细的介绍,比如,项目发起者的家庭背景、经济情况、疾病程序等等。
示例性的,kiva.org数据集包含了1252481个项目,从项目实体中主要提取出7种特征,包括文本数据(项目的用途、众筹的目的)和类别型数据(项目所属类别)等。
合作伙伴特征为,包含信用评级与总共赞助的项目数的数值型数据。
示例性的,在kiva.org数据中,共收集了472家合作伙伴,它们的属性对应了4种提取到的特征,比如:信用风险评估、总共赞助的项目数等。
捐赠者特征为,包含捐赠目的的文本数据、以及包含历史捐赠数值的数值型数据。示例性的,kiva.org数据包含了2262675名不同的捐赠者,从中主要提取了2种特征,即文本形式描述的捐赠目的(形式为:“我捐赠是因为…”)与捐赠历史记录。
捐赠团队特征为,包含团队目的的文本数据、包含团队类别的类别型数据、以及包含成员数与历史捐赠数量的数值型数据。
示例性的,kiva.org数据共包含了35217个捐赠团队,从中提取到5种主要的特征,比如:文本数据(团队目的(如:“我们捐赠是因为…”))、类别型数据(团队类别)、数值型数据(团队的成员数和历史捐赠数量)。
捐赠事件特征为,考虑到一个捐赠者近期的捐赠事件会影响其后续的行为,因此结合时空型数据对每个捐赠者在某个特定时间段内,建立起在每个时间片捐赠记录的向量,作为一种特殊的特征。
示例性的,kiva.org数据包含了27082901条捐赠记录。
3、预处理。
以上提到的信息特征在形式上是异构的,为了保证一致性,需要进行预处理,具体来说:对于各个特征中的类别型数据,采用one-hot编码;对于各个特征中的文本数据,采用nltk工具包进行分词,并采用word2vec工具包将每个词表示为一个d0维的向量,对于各个特征中的数值型数据,采用z变换将其标准化。
4、数据集划分。
按照时间进行数据区间的划分之前,先将参与少于k个(例如,2个)捐赠项目、没有加入任何捐赠团队的捐赠数据,以及缺失捐赠目的捐赠者及捐赠团队数据过滤;然后,按照时间先后顺序将捐赠事件特征划分为观察时间段与预测时间段,其中,前t个时间片为观察时间段,后t′个时间片为预测时间段。
示例性的,将参与少于2个捐赠项目、没有加入任何捐赠团队的捐赠数据,以及缺失捐赠目的捐赠者及捐赠团队数据过滤;之后,还剩下383146个项目、386个合作伙伴、42768个捐赠者、26958个捐赠团队以及1193148条捐赠记录。考虑到实际情况,将时间片按每周作为划分粒度。在每个时间片中,变量是通过合并属于该片的每一天的对应特征来构造的。不失一般性,观察时间段包含4个时间片,即t=4,预测时间段包含5个时间片,即t′=5。因此,这些有着长期捐赠活动的捐赠者序列可能会被切分为多个实例。总之,我们总共有501778个实例。于“模型参数的训练与优化”阶段,可以随机选择其中的80%作为训练实例,其余的20%实例用于测试。观察时间段和预测时间段分别在训练数据集和测试数据集中按照时间片切分。
二、问题形式化。
对于一个捐赠者i,主要有两种行为序列:捐赠行为序列和生存保持序列。
如图2所示,捐赠者i的捐赠行为序列表示为:
捐赠者i的生存保持序列表示为:
基于联合分析捐赠行为序列和生存保持序列,提出以下定理:
定理1:在当前构造的场景中,捐赠者是逐渐流失的,即
定理2:对于不存在删失的情形,
本发明实施例中,希望对捐赠者的两种行为事件进行联合分析和预测,即在将来一段时间内预测:1)捐赠者的捐赠行为否会再发生;2)捐赠者是否仍然停留并活跃在众筹平台。具体来说,可以将问题形式化如下:
问题形式化:对于捐赠者i给定他在观察时间段内的捐赠序列
预测任务1:预测捐赠者i在预测时间段内的捐赠行为,即
预测任务2:预测捐赠者i是否会在预测时间段内的每个时间片内活跃在众筹平台,即
三、建立联合深度生存模型。
实际上,捐赠者保持可以被视为一个生存分析问题。但是,传统的生存模型只擅长处理线性关系。为了对捐赠者保持中复杂的关系进行建模,设计了联合深度生存模型(jds)。如图3所示,联合深度生存模型主要包括:输入组件、表征组件和预测组件;其中:
1、输入组件,负责归类处理各类特征,具体包括如下三种类型的特征:第一类特征是文本特征
2、表征组件,对每一个特征学习相应的向量表示;捐赠者i在观察时间段内的捐赠行为序列
3、预测组件,用时执行如下两个预测任务:
1)预测任务1:预测捐赠者i在预测时间段内的捐赠行为;在获得所有特征的向量形式
其中,leakeyrelu(x)、sigmoid(x)均为激活函数;leakeyrelu(x)=max(0,wx+b)+αmin(0,wx+b),
2)预测任务2:预测捐赠者i是否会在预测时间段内的每个时间片内活跃在众筹平台;使用级联全连接网络来结合聚合表示h1与预测结果
其中,w2,b2,w′2,b′2均为用来调整联合深度生存模型的参数;
四、优化函数的设计。
对于预测任务1,所有的捐赠行为都是可观察的,因此,对于预测任务1,通过最小化预测结果
其中,m是训练过程中捐赠者的数量,θ表示联合深度生存模型中的所有参数,||.||是向量的范数;
对于预测任务2,由于删失情形的存在,则捐赠者是否流失仅能在删失时间t*之前观察到,设计多个排序约束,并将它们作为正则化项集成于两个目标函数中,预测任务2的目标函数为:
对于未删失情形,即t*>t′,sl(θ)有着和yl(θ)相同的采样形式。
需要指出的是,sl(θ)中的θ相较于yl(θ)具有更多的联合深度生存模型的参数,即w2,b2,w′2,b′2;本领域技术人员根据以上的描述可以准确的判定各个表达式中θ所涉及的具体参数,因此,为了描述的方便,本发明实施例不加以区分。
此外,本发明实施例还设计了排序约束函数,并整合排序约束函数与两个预测任务的目标函数。
具体的,基于如下三个推论设计排序约束函数:
推论1,非负性(non-negativity):在任何时刻,捐赠再发行为和生存保持的概率都是非负的,即
推论2,非递增(non-increment)以及生存保持落差(retentiondrop):对于捐赠者的生存保持序列,处于之前时间片的生存保持概率不小于后续时间片的相应概率,即
推论3,生存保持优先(retentionpriority):对于每个时间片,捐赠者i的生存保持概率不会小于捐赠再发行为概率,即
考虑以上推论,从而设计排序约束函数
其中,λ1,λ2,λ3与λ4为用于平衡不同约束条件影响下的超参数,‖.‖f为弗罗本尼范数;non-negativity表示非负性,non-increment表示非递增,retentiondrop表示生存保持落差,retentionpriority表示生存保持优先;
最后,整合排序约束函数与两个预测任务的目标函数:
五、模型参数的训练与优化
捐赠者的捐赠行为是否再发生与其在kiva.org上是否保持活跃高度相关,同时jds模型的两种预测任务拥有相同的输入和表征。因此这两种任务的优化方向在一定程度上是一致的。受这个特点启发,设计了使用交替优化算法用来联合训练联合深度生存模型以完成两个预测任务。如表1所示,为交替优化算法执行过程,描述如下:
交替优化算法输入训练数据、初始化参数θ、超参数η1与学习率η2,输出优化后的参数θ;交替优化算法的迭代过程如下:
在每次迭代过程中,通过随机梯度下降(sgd)bp算法逐步最小化目标函数。
表1交替优化算法
通过使用交替优化算法,根据预先划分的训练数据(例如,80%)、测试数据(例如,20%),使得联合深度生存模型能够同时完成两个预测任务。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。