阿里推荐算法任务报告学院:计算机科学与技术专业:计算机应用技术学生姓名:张传敬学号:21509177班级:电硕1505同组成员:无时间:2015年12月4日联系方式:18342208748邮箱:1550659763@qq.com一、引言随着移动互联网的飞速发展,为移动用户在合适的时间、合适的地点精准推荐合适的内容已成为当前的热门研究方向之一,阿里巴巴作为电子商务领域的领军企业,于2015年4月-2015年7月举办了一场面向全球高校的移动推荐算法推荐竞赛,吸引了来自全球高校的7000多支队伍参加,它公布了其移动电商平台的部分真实用户-商品行为数据,同时提供移动时代特有的位置信息,而参赛队伍则需要通过大数据和算法构面向移动电子商务的商品推荐模型。本次任务的目的在于评估大家在真实的数据下对机器学习基本流程,机器学习及推荐系统模型的理解和实践能力。二、赛题与数据2.1任务描述在真实的业务场景下,我们往往需要对所有商品的一个子集构建个性化推荐模型。在完成这件任务的过程中,我们不仅需要利用用户在这个商品子集上的行为数据,往往还需要利用更丰富的用户行为数据。定义如下的符号:U——用户集合I——商品全集D——用户对商品全集的行为数据集合那么我们的目标是利用D来构造U中用户对I中商品的推荐模型。2.2数据说明竞赛数据包含两个部分。第一部分是用户在商品全集上的移动端行为数据(D),文件名为dutir_tianchi_mobile_recommend_train_user.csv,包含的字段及其说明如下表1所示。两个文件都带有表头,进行读取的时候请忽略第一行的表头信息。针对训练数据的一些统计信息如表2所示。字段字段说明提取说明user_id用户标识抽样&字段脱敏item_id商品标识字段脱敏behavior_type用户对商品的行为类型包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4。user_geohash用户位置的空间标识,可以为空由经纬度通过保密的算法生成item_category商品分类标识字段脱敏time行为时间精确到小时级别表1.用户行为数据字段说明统计量统计值记录数23,818,702用户数19,980商品数4,864,967商品类别数9,614表2数据统计训练数据包含了抽样出来的一定量用户在一个月时间(11.18~12.17)之内的移动端行为数据(D),评分数据是这些用户在这个一个月之后的一天(12.18)对商品集合(I)的购买数据。我们要使用训练数据建立推荐模型,并输出用户在接下来一天(12.18)对商品子集购买行为的预测结果。三、基本思路这个预测,可以考虑预测发生过交互行为的user,item会不会在12月18号购买,也可以预测没有发生过交互行为的user,item会不会在12月18号购买。我只考虑了发生过交互行为的user,item。(1)清洗数据比如去除总的交互次数很低(低于2或者低于3或者...)的user,item,去除最后10天没有发生交互的user,item。还可以继续删除,不过删多了可不一定好。(2)特征方程一个简单算法在精心选择的特征上的效果比一个漂亮的算法在较差的特征上的效果还要好。如何构造特征很重要,特征构造得好,同一算法下准确率也可以提升很多。个人认为构造特征是这次比赛中最重要的任务。另外,特征的优劣会影响到一些机器学习算法的效果,或者特征太多机器会跑不动。筛选特征可能会成为一个很重要的步骤。假设现在有100个有标号的样本,每个样本10个特征,可以通过下面几种方法:方法1:拿出两个特征对应的两个100维的向量,使用pearson相关系数、归一化互信息量等方法计算两个特征的相关性,如果相关性很高,可以考虑删除其中一个特征。方法2:利用决策树的内置的特征筛选方法筛选好的特征方法3:特征递归消除。。也可以考虑降维。那么,一个user,item可以构造什么特征呢?以前30天的所有数据为例(第31天有没有购买当作target):最后一天user有没有购买item、最后的4天user有没有购买item、最后的4天user有没有点击item、最后的4天user对item的点击量、最后的4到8天user对item的点击量,最后的4天user的点击量,最后的4天item的的点击量,最后的4天item的的购买量除最后的4天item的的点击量......另外,geohash也可以拿来生成特征,例如判断用户的最新位置和item最近的位置有多近;cat_id也可以考虑一下。再开个脑洞,将user,item的构造的某些特征进行聚类,样本所属的簇、样本离某个簇心的距离等也可以当作该样本的新特征。(3)训练集和测试集的构造基于上面的内容,现在可以构造训练集和测试集了。新数据集1:将1-27天的数据拿出来做特征,第28天作为target。-用于训练新数据集2:将2-28天的数据拿出来做特征,第29天作为target。-用于训练新数据集3:将3-29天的数据拿出来做特征,第30天作为target。-用于训练......新数据集5:将5-31天的数据拿出来做特征。-用于最终的预测。如何评估模型:用新数据集4做测试,其实只需要把新数据集4其中的正例拿出来,计算F1即可。如果这个F1做的比较好了,可以认为提交结果的F1也会很好。(4)方差和偏差问题训练后的模型测试的效果很差,叫做高偏差,这往往意味着模型太简单。解决方法是:增加更多特征、使用别的模型、使用更复杂的模型等。同一模型,用随机采样的多个数据集训练并测试的多个结果相差很大,叫做高方差,这往往意味着模型太复杂,导致了过拟合。解决方法是:使用更多数据、降低模型复杂度等。四、结果尝试的结果如下:由于自己的水平有限,提交的结果如下:五、体会通过做这次的推荐系统的任务,我确实学到了不少。自己在淘宝或天猫买东西的时候,会出现推荐的内容,但是自己从来没注意过。这么一个小小的推荐背后却需要这么多的技术来实现。我觉得我了解的还是不够深入,实战经验太少,毕竟这是自己第一次做这个东西,有关这方面的论文看的太少,没有学过机器语言,也没有人指点,这都称为我做这个的障碍。自己在机器语言这方面的学习还有很大的进步空间。