(一)Map Reduce环境配置
为了训练一个二分类模型,我们首先需要获得训练集,然后生成训练集,我们需要提取特征和标签。Max Compute SQL、Map Reduce和UDF函数可用于数字加法平台上的特征提取,在此平台上编写Map Reduce程序来提取特征比SQL更灵活。下面简要介绍Map Reduce的环境配置。
配置Map Reduce的环境通常需要Maven的支持。要安装Maven,首先下载并且压缩Apache-maven-3.3.3-bin.zip,然后创建解压缩目录中bin目录的环境变量M2_HOME。安装完成后,在CMD中运行MVN-V以查看配置是否成功。
最后,安装Eclipse的Maven插件可以开始创建项目,详细的配置过程和代码可以参考“天池用户手册-数字+平台”(在阿里云论坛搜索“数字+平台指南”可以在本手册中找到)。
(二)Map Reduce代码编写
下面是一个示例,说明如何通过计算每个用户—商品对的四种行为数来编写Map Reduce程序。在本例中,用户程序将用户行为表作为输入表,并生成一个结果表来存储每个用户核对的四种行为的数量。输入表中使用的列名是USER_id、Item_id和Behavior_type,结果表:user_id、tem_id、ui_brot_cnt、ui_fav_cnt、ui_cart_cnt、ui_Buy_cnt。
在My Mapper类中,用户代码从输入表中读取用户ID、商品ID和操作类型信息,并使用用户ID和商品ID作为Output Key,分别将这四种行为命名为ni_br0、Ui_fav、UI_Cart、UI_Buy。作为输出价值。Output Key和Output Value都传递给Reduce Worker进行进一步处理,具有相同Output Key的记录被分配给相同的Reduce Worker。
在计算键值记录(Output Key)之后,MyMapper将相应的用户ID、商品ID和统计结果输出到结果表。
(三)特征提取和标签提取
如果想对每个用户—商品对进行两类预测,需要首先考虑用户特性和商品特性,它们主要用于反映用户未来的活动水平和购物意愿。可用的功能包括最新的浏览行为、最近的购物车行为、最近的行为时间等。商品特征主要用来反映商品的热度。现有的特点包括最近的购买时间、购买频率等。用户对产品的行为也值得关注,例如最近是否浏览产品,最近是否将其添加到购物车中以及最近是否购买该产品。
由于数据集提供了关于商品类别的信息,类别特征也可以反映一种商品的热度,例如一种类似商品的购买次数、购买一种类似商品的频率、将商品特征与类别特征相结合可以获得同一类别商品的相对热量。例如,在同一种商品中购买的商品所占的比例,在同一种商品中所看到的商品所占的比例,该商品在同一种商品中购买次数的排序等。同时,用户对商品类别的行为也间接地反映了用户是否愿意购买产品,例如,用户在购买同一产品后可能不再有购买同一产品的欲望。(www.xing528.com)
因此,本文所使用的特征类型包括用户特征、商品类别用户行为特征、商品用户行为特征和组合特征。
为了反映时间的影响,特征可以分为不同的时间粒度,如最后1个小时、最后2个小时、最后3个小时、最后6个小时等。它分为最后1天、最后3天、最后7天等。也就是说,根据指定的不同大小的时间窗口获取一些统计数据,然后结合它们得到更多不同的特征。
由于数据集中给定用户行为数据的日期为2014年11月18日至2014年12月18日,目标是预测2014年12月19日的用户购买行为。因此,构建训练集的一个非常自然的想法是以12月18日0分作为子界面,12月18日之前28天作为特征提取,12月18日作为用户购买行为作为标记提取,从而获得在线培训集。然后将子接口向后移动一天,即在12月19日之前28天进行特征提取,并构造预测集。通过训练集对分类模型进行训练,利用该模型对预测集中的每个样本进行预测,得到最终的预测结果。
为了方便离线参数优化和模型验证,还需要为脱机验证构建验证集。为此,本文构造了离线训练集和离线测试集进行离线验证。它们使用12月17日0点和12月18日0点作为子界面,前28天作为特征提取,第二天作为标记提取。
训练集可以通过编写Map Reduce程序来提取特征和标签,并使用Jom语句根据user_id、Item_id和Item_CATSCORY链接不同类型的特征来构建。
(四)培训集抽样
在数据挖掘阶段,我们可以发现购买行为是非常稀疏的,这就导致了训练集中正负样本的不平衡,过多的样本也会导致培训的效率很低。为了解决这一问题,一个简单的解决方案是对阴性样本(将来没有购买行为)进行随机下采样,以调整班级不平衡,提高培训效率。
(五)缺值填充
在构造训练集的过程中,可能会遇到特征值为空或NAN的情况,从而影响模型的训练。例如,对于算法平台的XgBoost模型,如果特征值为NaN,则在训练过程中会出现误差。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。