推荐系统相关比赛-kaggle

from: 七月在线

电商推荐与销量预测相关案例

一、预测用户对哪个事件感兴趣(感兴趣不一定去参加)

用户历史参加事件、社交信息、浏览信息(app)、要预测的事件

recall:召回率

准确率:

协同过滤不考虑卖/买的东西是什么,只关心历史数据中哪两个用户的兴趣度一样。(1-2)

(2,3 -> 3)(视作分类模型:LR/SVM/GBDT/DNN/RF,除了预测感兴趣与不感兴趣,还想知道感兴趣的程度--概率)svm也会输出概率,但是用的不多。

二、代码

1. import pickle (py3)内存不足的时候,可以保持原来的数据结构,Load到本地,是二进制的。Load很快,如果原来是字典,load内存后仍然是字典;如果原来是数组,load内存后仍然是数组。  (py2 import cPickle)

2. 处理关联数据:只处理有共同行为的关联信息

1)计算关联用户:

历史信息:计算cosine相似度

注册时的个人信息:计算cosine相似度

相似度可使用属性:位置、时区、注册时间(可能是小伙伴邀请注册)、国家id、性别等(在数据处理时全部转换成数值)用户维度处理信息

2)用户社交关系挖掘

朋友数量,朋友中每个朋友参加活动的频次

3)构造event和event相似度数据

4)活跃度/event热度 数据

处理上述特征的时候,归一化处理

 5)组合上述数据,训练

mmwrite/mmread 处理时先存到本地,然后训练时,读取到内存。可以节省内存

协同过滤:ABCD有相似度,根据BCD的喜欢的东西,对A推荐东西,并给出推荐度。

 便利店销量预测

 

1. 希望做的事情,提前六周知道未来的销量。但是每个国家的节日不同,销量不同。

2. 修改xgboost的loss函数(因为该竞赛的loss不是常用的loss,xgboost里没有该loss)

需要知道loss的一阶导数(grad)与二阶导数(hess)

2.  除了训练时修改了xgboost的导数,还要定义对应的loss,在训练时把loss作为参数传进去。

3. 与时间有很紧密的联系:促销、药店(流感期)

4. xgboost可以显示特征重要性

5. lightgbm比xgboost快一些

6. 交叉验证训练数据

数据与特征决定上限,模型只是逼近上限

 对最终结果,数据与特征更重要一些

 

posted @ 2019-04-11 11:48  GuoXinxin  阅读(3900)  评论(0编辑  收藏  举报