英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料
优化抽样方法预测移动商务中的购买行为
摘要:
阿里巴巴移动推荐大赛旨在通过阿里巴巴移动商务平台上的真实用户—商品行为数据预测用户的购买行为。在本文中,我们将每个user-item对视为二分类问题,探讨了与购买行为密切相关的几个重要因素,从数据集中提取有用特征,并在实验中使用机器学习模型进行了预测。由于在数据集中缺失了一些位置信息,我们提出了一种算法来估计其中缺失的数据值;由于购买行为比非购买行为要少得多,使得数据集非常不平衡。为了解决这个问题,我们提出了一种新颖有效的抽样方法来对多数类别进行欠采样。在没有任何混合策略的情况下,我们使用单个GDBT(Gradient Boosting Decision Tree)模型的方法训小部分训练集,并获得了良好的F1分数,该模型在竞赛的最终排行榜中获得了前10名的结果。比赛结束后,第三名的团队将他们的更好的特征与我们分享,去进行实验,这样避免过度拟合的危险。通过这些特征值,我们的方法在单个模型下达到了8.79%的效果,并且它的表现优于排行榜最好的8.78%的结果。关键词 - 移动推荐;分类;特征工程;不平衡类别;采样
一、引言
购买行为预测是实现推荐系统的合理方式。近年来,移动商务平台的购买行为的数量增加很多。利用移动商务平台上的购买行为数据进行精准推荐成为一个热点话题,而这些在信息爆炸的时代是非常有意识和有意义的。本次比赛提供50万用户在移动商务平台上的行为数据集,而这些数据集对于我们在这个问题上的学术研究提供了很大的帮助。
这份数据集包含了两部分。第一部分是数据集D,即收集的用户在一个月内对商品的所有移动行为数据,包含5,822,532,780条行为记录,每个记录由用户标识,商品标识,行为类型 ,用户的位置,商品类别和操作的时间。
第二部分是数据集P,其中包含14,397,493个商品的信息,每条记录由商品标识,商品类别和商品所在的位置组成。
训练数据包含了抽样出来的一定量用户在一个月时间(11.18~12.18)之内的移动端行为数据(D),评分数据是这些用户在这个一个月之后的一天(12.19)对商品子集(P)的购买数据。参赛者要使用训练数据建立推荐模型,并输出用户在接下来一天对商品子集购买行为的预测结果。获得最高F1分数的团队将赢得比赛。
由于数据集较大,本次比赛为参赛选手提供了阿里巴巴的大数据平台。在比赛期间,一个团队每天可以提交一次测试集的预测结果。然后,使用12.19未公布的购买结果进行验证,然后将得到的F1分数反馈给团队并显示在排行榜上; 提交结果的F1分数是决定比赛获胜者的最终判断标准。由于这种设置,使用排行榜来调整预测模型很慢,并且可能导致过度拟合的问题。所以有必要为在线测试做一个验证集。
由于数据集P中的商品被选择为诸如汽车服务,摄影服务和电影之类的服务,所以用户与商品之间的距离是决定用户将购买与否的重要因素。不幸的是,数据集中缺少了很多位置信息。为了解决这个问题,我们提出了一个可以用现有的信息估计缺失值的算法。该算法包含两个阶段:第一阶段,使用用户的历史位置信息和他们访问过的商品的位置信息来估计此用户的位置信息的缺失值; 在第二阶段,通过访问者的位置信息来估计商品位置的缺失值。这两个阶段迭代运行,就可以填补很多缺失值。如果在此方法之后仍然缺少位置信息,我们只需将距离的中间值设置为user-item对之间的距离。
为了预测用户购买行为,我们将其视为每个user-item对的二元分类问题。训练集是从行为数据集中获得的,其中包含25,850,518个示例,44,265个正例。 由于它是一个典型的不平衡数据集,我们的策略是对大多数类采用欠采样方法。我们提出了一种加权欠采样方法,该方法已被证明是有效的,并且改进了结果。 采用这种抽样方法后,我们的F1分数从8.18%上升到8.53%,这也是最终排行榜前10名的结果。就我们所知,许多团队使用大型训练集(通常超过2,000,000个示例)以及集合模型来获得最终的分类器,与这些策略相比,我们的方法使用更小的训练集(400,000个示例)并且不使用任何混合策略来训练该分类器,这样做是更高效的,也是更易于实现并取得了良好性能的。
本次比赛结束后,获得第三名的团队将他们的特征分享给我们进行实验,他们使用滑动窗口方法来扩大他们的训练集,并且可以避免过度拟合的问题。他们抽取了大量训练集(20,000,000个示例),将几个模型混合在一起以提高模型性能,并最终获得了8.66%的F1分数。实验结果表明,我们的抽样方法优于其混合策略,我们的方法是一个单一的GBDT模型,在一个较小的训练集上训练(700万个例子),根据最终排行榜的状态结果显示,我们的F1分数从8.66%提高到8.79%。
二、相关工作
A.推荐系统
虽然有很多推荐系统[14] 使用了协同过滤算法,但在问题中效果并不理想。由于协作过滤算法试图找到用户对每个商品的青睐,我们发现它不适合这个问题,因为购买行为主要是由需求而非人们的喜好引起的。当判断用户是否购买一个物品时,比较合理的方式是回顾该用户的静态特征,该物品,该类别以及用户之前在该物品上的行为同他/她喜欢这个商品的程度进行比较。
B. Class-imbalance学习
不平衡会严重影响分类器的性能。忽视班级失衡,多数会压制学习算法,少数可能会被忽略。在本文中,我们关注解决这个问题的两种流行的方法:采样和代价敏感学习。
随机过采样和欠采样是广泛使用的两种采样方法[21],[22]。随机过采样的过程是从少数群体中选择一组样本,复制它们并将它们添加到训练数据集中。通过这种方式,原始数据集被复制的例子增加,并且原始数据集中的类分布的不平衡被相应地调整。用这种方法,可以将类分配平衡的程度改变到任何期望的水平[13]。与此方法相反,随机欠采样方法旨在减少大多数类的大小。在实践中,从多数类中随机选择一组实例并将其从原始数据集中移除,从而减小数据集的大小并调整数据分布的不平衡。
这两种方法似乎相似,因为它们都有能力改变数据集中的平衡比例。然而,这两种方法的缺点是显而易见的,这可能会影响学习过程[17]。对于欠采样方法,从大多数类中随机抽取样例后,重要信息可能会丢失。在过采样的情况下,来自少数类的复制数据可能会导致过度拟合[6],因为从同一个例子的多个副本中学习的规则可能对分类器而言过于具体。
EasyEnsemble和BalanceCascade算法[16]旨在克服传统随机欠采样方法引入的信息损失的不足。EasyEnsemble方法首先独立地从大多数类中抽取几个子集,然后将这些子集与少数类数据相结合,在每个子集上训练多个分类器,然后用这些分类器构建集合学习系统。由于它使用独立的随机抽样和替换,EasyEnsemble可以被视为无监督策略。相反,BalanceCascade算法以监督的方式探索原始数据集,迭代运行以训练一组分类器。在每次迭代期间,它会删除一些从大多数类中正确分类的示例。即在每个训练过程之后缩小多数训练集,并用平衡子集训练每个分类器,最后混合这些分类器。其他方法如SMOTE [4]使用一种过采样方法来生成新的合成少数类实例,方法是随机选择少数类中的例子并将它们与最近的邻居进行混合。片面选择[15]倾向于使用Tomek链接[20]技术选择多数类别的代表性子集,该技术仅从大多数类别中去除“边缘”和“嘈杂”的例子。其他一些作品表明,通过结合不同的抽样方法可以实现进一步的改进[1]。
代价敏感学习[7],[19]是处理类不平衡问题的另一类重要方法。与抽样方法相比,它对训练集中的不同实例设置不同的权重,而不是改变训练集的大小。 AdaBoost [8],[9]及其变体可能是许多学习算法中最流行的方法。这些方法通常采用的策略是在提升过程中故意增加错误分类成本较高的例子的权重,从而改变不平衡数据集的分布。
对于这个问题,大多数类别中的例子数量非常大(在我们的过滤策略之后的一天内超过20,000,000例),即使在阿里巴巴的大数据平台上,使用这种数据集的火车模型也将耗费大量时间(超过10小时)。因此,只考虑欠采样方法,因为它减小了训练集的大小并使训练过程高效。
三、数据预处理
在本节中,我们着重于填补地点的缺失信息。首先探讨了用户在不同时间段内的位置关系,以及商品与访问者之间的位置关系,并提出了填补数据集中缺失信息的算法。
在数据集中,位置信息以geohash代码的形式表示。geohash代码将纬度/经度转换为由字符组成的代码。使用分层空间数据结构,其将空间细分成网格形状的桶。Geohashes提供任意精度等属性并逐渐失去精度,这意味着通常(但并非总是)相同的前缀存在于附近的地方。两个地方越接近,它们共享的前缀就越长。
为了保护用户的隐私,将纬度/经度转换为地理编码的算法不公开。除此之外,还提供了一个可以计算两个geohash代码之间距离的函数。我们的策略是估计每个用户和商品的缺失位置,然后利用此函数计算每个user-item对之间的距离。
为了探索用户在不同时间段的位置关系,用现有的代码计算两个代码在不同时间的每个位置上彼此相等的可能性。
如图1所示,当时间跨度变大时,每个位置的可能性都会下降,短前缀的可能性往往相等。这个结果与我们的直觉相一致,因为时间越长,他/她留在同一个地方的可能性就越低,而短前缀随着他们代表更大范围的网格形状而缓慢变化。
为了探索商品位置与访问者之间的关系,我们使用相同的方法来计算如果两个代码在具有不同行为的每个位置彼此相等的可能性。
如图2所示,与其他行为相比,具有购买行为的代码的特征趋向于具有相等的可能性。这种现象是合理的,因为物品被选为服务,用户更愿意购买短距离的物品。然而,与图1相比,估计用户在最近时间点使用他/她的位置比他/她访问的物品的位置更可靠。
有了这些知识,我们提出了一个两阶段算法来估计缺失值。在阶段1,它填补了用户在最近的时间点使用他/她的位置信息以及他/她访问的商品的位置信息的缺失值。在第二阶段,它估计了用户与之间物品的缺失的位置值; 我们把这种可能性看作是每种行为的权重。 对于该商品上的每个行为,将权重添加到每个位置上用户的geohash代码的每个字符。
使用以下公式计算地理杂乱码的每个位置p处每个字符c的权重:
其中Wb表示属于行为集B的行为b的权重,与位置p处的字符c发生。
对于geohash代码的每个位置,我们采用具有最大权重的字符:
其中C(p)表示在geohash代码的位置p处选择的字符。
使用这种算法后,大量的缺失信息被填充。为了检查估计结果,我们首先使用用户现有的位置信息来估计已知的商品位置信息,然后计算真实位置与估计位置之间的平均距离。结果为562380.85,当我们在这个过程中添加了估计的用户信息时,结果变为543915.19,这表明我们的方法改进了估计的结果。
四、特征工程
对于机器学习模型而言,好的特征是最终结果的关键。在特征工程部分,如图3所示,我们提取了五类特征,将它们连接在一起,并按时间分割以获得训练集,验证集 和测试集。
我们从2014年11月18日至2014年12月16日的移动行为数据中提取了特征,对于此期间的每个user-item对,如果用户在2014.12.17购买此商品,则其标签设置为正,否则为负, 示例是通过为每个user-item对组合功能和标签来获得的。这样训练集的大小就等于这个时期的user-item对的数量。由于训练集较大,我们使用了一些过滤策略,例如删除最近7天未交互的user-item对,并过滤一些异常用户。因此,我们的训练集的大小减少了,剩下大多数正面例子。
对于用户,我们设计了反映他/她的活动水平和第二天购买意愿的功能,例如点击行为的数量,购买行为的数量; 对于这些商品,考虑到其受欢迎程度,设计了访客数量,点击行为数量和购买行为数量等特征; 对于user-item对,我们关注用户对此商品的最近行为,这表示他/她的购买意愿。基于这些功能,可以发现一些高级功能,例如用户在所有行为中的购买行为百分比,该类别中记录的百分比。更重要的是,这些功能可以延伸到不同的时间跨度以获得更多的功能,并且我们在最终的训练集中有740个功能。
为了找到上次拜访时间与购买行为之间的关系,我们计算了不同时间段内购买行为的数量。距离和购买行为之间的关系以相同的方式处理。
如图4,5和6所示,购买行为与用户上次访问时间高度相关,购买意愿在时间增长时迅速衰减。根据我们的经验,这是合理的,人们倾向于购买他们近期访问的产品,而不是很久以前。为了得到时间衰减的特征,我们使用幂函数来拟合数据点,并且它运行良好。同样,我们将它用作user-item对的距离衰减功能。
在特征提取之后,我们使用随机森林方法来排列特征的重要性[12]。 表1列出了前16个特征。似乎时间衰减的特征是最重要的特征,并且由于在估计过程中引入了噪声,所以低估了距离衰减的重要性。
五、采样方法
由于失衡,训练集中存在大量负面的例子。然而,很多负面的例子与正面例子明显不同,并且易于分类。通过这样的训练集来训练分类器,这些例子将严重推动决策边界,并且可能不会对这两个类之间的微小差异敏感。
我们的抽样方法背后的意图是去除一些易于分类的负面例子,同时添加一些难以分类的负面例子,以迫使分类器学习两个类别之间的微小差异。为了实现这个想法,我们使用了一个权重抽样方法来对负面的例子进行欠采样,权重被设置为该例子在前面的迭代中被错误分类的惩罚分数的总和,并且所有的正例都保留在训练集中。该算法描述如下:
如上所述,该算法迭代运行以对训练组Dtrain进行欠采样。在每次迭代期间,它使用采样训练集来训练分类器,因为它使用惩罚分数作为权重来对训练集Dtrain进行欠采样。具有较高惩罚分数的例子更有可能在下
全文共10884字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[14204],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。