一、介绍

♦通过用户前四个月(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公司 推荐算法大赛 总结的更多相关文章

  1. 天池大数据周冠军分享|附移动推荐算法赛答辩会Top5选手PPT

    上周是淘宝穿衣搭配算法大赛开始评测后的第一周,周冠军是来自浙江大学的"FUC AUTH"队.他们在夺得本周冠军之后,还将自己的获胜经验分享给了大家,究竟有什么秘诀呢? 阿里巴巴天池 ...

  2. 首届全球RTB(实时竞价)广告DSP算法大赛

    首届全球RTB(实时竞价)广告DSP算法大赛 竞赛指南     RTB (Real Time Bidding, 实时竞价) 是近年来计算广告领域最激动人心的进展之一. 它增加了展示广告的透明度与效率, ...

  3. 智慧航空AI大赛-阿里云算法大赛总结 第一赛季总结

    [以前的文章]最后一公里极速配送 - 阿里云算法大赛总结 总结一下新的教训 1.由于都是NP难题,获得最优解用常规的方法非常困难,对于不是算法科班出身的人来说,首先应该到网络上寻找一下论文,是否有一些 ...

  4. Python推荐算法学习1

    1.闵可夫斯基距离 闵可夫斯基距离可以概括曼哈顿距离与欧几里得距离.  其中r越大,单个维度差值大小会对整体产生更大的影响.这个很好理解,假设当r=2时一个正方形对角线长度,永远是r=3时正方体对角线 ...

  5. (转) 基于MapReduce的ItemBase推荐算法的共现矩阵实现(一)

    转自:http://zengzhaozheng.blog.51cto.com/8219051/1557054 一.概述 这2个月为公司数据挖掘系统做一些根据用户标签情况对用户的相似度进行评估,其中涉及 ...

  6. HAWQ + MADlib 玩转数据挖掘之(四)——低秩矩阵分解实现推荐算法

    一.潜在因子(Latent Factor)推荐算法 本算法整理自知乎上的回答@nick lee.应用领域:"网易云音乐歌单个性化推荐"."豆瓣电台音乐推荐"等. ...

  7. 2018科大讯飞AI营销算法大赛全面来袭,等你来战!

    AI技术已成为推动营销迭代的重要驱动力.AI营销高速发展的同时,积累了海量的广告数据和用户数据.如何有效应用这些数据,是大数据技术落地营销领域的关键,也是检测智能营销平台竞争力的标准. 讯飞AI营销云 ...

  8. 2019腾讯广告算法大赛 Rank23

    由于官方审核代码,代码将在2019年6月28号后开源 写在前面 这次腾讯的第三届广告算法大赛,是我第一次参加,取得了初赛与复赛均为23名的成绩,毕竟我只是初打比赛不久的小白.我想在此分享下我的基本解题 ...

  9. 易观OLAP算法大赛结果揭晓,开源组黑马放大招!

    100+天激烈赛程,40+国内顶级技术豪门对决,历经研发内部测试.正式环境测试和易观数据正式环境跑benchmark三大阶段.10月28日,易观OLAP算法大赛优胜名单出炉! 40+技术门派比武 易观 ...

随机推荐

  1. BeanUtils工具的实现

    BeanUtils工具的实现 自定义一个将数据映射到类里的方法 方法一: package utils; import java.lang.reflect.Field; import java.lang ...

  2. MySQL5.6基于mysql-proxy实现读写分离

    已经搭建好MySQL主从架构 10.205.22.185 #mysql-proxy 10.205.22.186 #master 10.205.22.187 #slave 1.安装mysql-proxy ...

  3. filebeat的安装及配置

    概述:Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasti ...

  4. 学习Pytbon第十七篇,面向对象编程

    面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类 ...

  5. NPOI导出Excel,添加图片和设置格式,添加条形码

    先上代码 using grproLib; using System; using System.Collections.Generic; using System.Data; using System ...

  6. 裸机——SD卡

    1.首先要对SD卡有个基础知识 (1) SD = nandflash + 主控IC. 主控IC负责了校验和坏块管理,所以SoC只需要依照时序就可以和SD卡上的主控IC进行数据交换等操作. (2) SD ...

  7. C++ 基础 初始化列表

    当一个类组合了其他类,或者使用了 const 成员,就要用 初始化列表. Class A {...}; Class B {...}; Class C { private: A a; B b; int ...

  8. 输入cin对象的用法

    #include<iostream> using namespace std; int main() { int carrots ; cout << "How man ...

  9. urllib使用三--urlretrieve下载文件

    下载文件 urllib.urlretrieve() 参数: url:远程地址 filename:要保存到本地的文件 reporthook:下载状态报告 data:有就变成POST请求,有格式要求 返回 ...

  10. PHP代码审计3-SQL注入,CSRF,动态函数执行与匿名函数执行,unserialize 反序列化漏洞,变量覆盖,文件管理,文件上传

    SQL注入 审计语句 [输入参数] SELECT,DELETE,UPDATE,INSERT 防御 转义: 1.开启gpc:判断解析用户提示的数据 2.mysql_real_escape_string( ...