热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

A公司推荐算法大赛总结

采用逻辑回归、随机森林等算法通过学习用户前四个月(04.15~08.15)的用户行为预测用户第五个月(08.15~09.15)将会购买的品牌。评价方式按照F1排名,F12×P×R(

一、介绍

♦通过用户前四个月(04.15~08.15)的用户行为预测用户第五个月(08.15~09.15)将会购买的品牌。用户共有四种行为(type)分别是:点击(0)、购买(1)、购物车(2)、收藏(3)。
数据原始内容如下:

,

比赛评价方式按照F1排名,F1=2×P×R/(P+R)其中,P是准确率为命中的数量除以用户的预测数,R是召回率为命中的数量除以真实的购买数。采用F1评分,在正负样本数不平衡的系统中代替正确率作为系统的评价指标。

二、方法介绍与特征选择

♦逻辑回归随机森林。首先,在使用逻辑回归时,需要对特征进行零均值处理,使每一维特征均在一定的范围内,随机森林虽然对所选特征有更好的鲁棒性,但将每一维特征规范化为近似服从正太分布时往往会有更好的分类效果。其次,在特征数量上,两者适用范围从几维到几百维均可,一般在训练数据充足的情况下随机森林较逻辑回归有更好的结果,在训练数据较少时选择逻辑回归,还有,如果模型需要“自适应”或需要在使用过程中不断学习,则选择逻辑回归,因为随机森林模型一但确定就无法再进行修改,若预测新情况只能重新训练。注意,在实现大的模型方法前一定先用小规模数据进行测试,去分析理解问题;一定要划分训练集验证集测试集,一定要先在本地进行模型评估再考虑应用到大规模数据处理中。
特征选择,需要考虑的特征往往包括以下三点,用户品牌关系特征,用户特征,品牌特征。结合本次比赛,时间序列相关的推荐算法,如何将时间考虑进特征的选择是重点也是难点。现在思考如何对用户品牌关系建模,如果我们对所有的用户对品牌行为建一个模型,则该模型的含义是将所有的用户与品牌无差别的对待,即认为所有的用户具有相同的用户行为(如看过n次就会买,之前买过还会买,不考虑某些用户经常网购,有些用户则反之),所有的品牌产品具有相同的产品特性(不考虑产品的属性如高端耐用品,日常消耗品等)。换言之对用户品牌的无差别对待的结果是,当某用户U对某品牌B在T时间内点击数达到a,某买数达到b,收藏数达到c,购物车数达到d的概率超过P时则预测下个月用户U将购买品牌B。接下来将上面的UBTabcd具体化为训练用的特征。对T时间,在时间序列的推荐系统中,往往时间距离“现在”越接近,则准确率越高,又通过分析大赛提供的数据,周期性的每七天出现较高交易数,所以在时间的划分上采用距”现在”两天,七天,十四天,二十八天…作为时间的划分段。而对于abcd采用相应时间段的行为累计数。再考虑用户特征,品牌特征可按照相同的方式,划分天数,统计不同时间段的信息作为特征并将以上三部分特征进行组合(注:拼接时往往不能直接将特征A连接在特征B后)。通过添加用户特征与品牌特征,我们的模型最终想表达含义即:当具有某用户属性条件的用户U对具有某品牌属性的品牌B在T时间内点击数达到a,某买数达到b,收藏数达到c,购物车数达到d的概率超过P时则预测下个月用户U将购买品牌B。
♦需要注意的是,采用单纯的累计会导致不同特征间相关性较差,这也将影响模型效果。所以可以加入多项式特征如x*y,x2…等。其次,可以添加由其他方法计算得到的特征,如考虑时间衰退的方法为品牌、用户评分(基于用户点击的评分方法),用以评价该商品的近期热度,该用户的近期购买热度等。此外还可以考虑用户与用户之间的关系,品牌与品牌之间的关系。如以下情况,用户A与B均购买了X1X2X3…XnY产品,但A还购买了Z 产品,则B也可能购买Z产品;又如购买台灯时可能一并买个灯泡,或是经典的啤酒与尿布案例,即产品XY之间若具有很强的相关度则用户在购买X后,算法可以预测未来会购买Y,实现过程可参考PageRank实现过程。在计算以上特征的时候,简单的方法是使用MapReduce架构,设置Map阶段的Key值以及对应Key值的Value值,再于Reduce阶段进行收集合并。

三、数据过滤预处理

♦在机器学习系统的搭建过程中,往往将所有数据分成训练集,验证集与测试集,其中在调节模型参数模型时选择验证集,在评价模型时使用测试集。若训练数据较少,且正负样本数差距较大时,我们可以采用异常检测的方法,即对正常样本建模,评估每个样本属于正常的可能性,去掉异常的样本数。

四、模型融合

♦常用的方法有boosting方法,选择训练集的部分数据用于训练多个模型,最终结果选择多个模型的均值。如随机森林为多个决策树融合的结果。又如,在本次比赛中,可以先通过训练多个随机森林模型分别使用(或使用全部特征)UB特征,U特征,B特征得到预测概率P1P2P3,之后使用逻辑回归,做最后的分类。

A公司 推荐算法大赛 总结,,

A公司 推荐算法大赛 总结


推荐阅读
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
author-avatar
knight
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有