Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc

python风控评分卡建模和风控常识(博客主亲自录制视频教程)

https://study.163.com/course/introduction.htm?courseId=1005214003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

http://www.360doc.com/content/18/1015/10/60075508_794857307.shtml

http://www.sohu.com/a/259742009_787107

任务 :精品旅行服务成单预测

提供了5万多名用户在境外旅行APP(黄包车)中的浏览行为记录和历史订单记录(具体数据和字段如下五张表所示),其中用户在浏览APP之后有三种可能,购买精品旅游服务,或普通旅行服务,还有部分用户则不会下单。需要分析用户的个人信息、历史记录和浏览行为等,预测用户是否会在短期内购买精品旅游服务。

(训练集浏览记录一百三十三万条,测试集33万条)

  • Tab1 用户个人信息表(用户id、性别、省份、年龄段)
  • Tab2 用户浏览记录表(用户id、行为类型、发生时间)
  • Tab3 用户历史订单表(用户id、订单id、订单时间、订单类型、旅游城市、国家、大陆)
  • Tab4 待预测订单表(id、订单类型 1 精品 0普通)
  • Tab4 用户评论数据(用户id、订单id、评分、标签、评论内容)

比赛成绩

  • 2018-02-08 AUC: 0.9764 B榜 Rank 2(Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc.)
  • 2018-02-07 AUC: 0.9589 A榜 Rank 3(Weight Average:0.65 * Catboost + 0.35 * XGBoost)
  • 2018-01-21 AUC: 0.9733 半程冠军 (Single model:Catboost)

代码获取:

比赛方案

  1. 数据预处理:首先对数据进行清洗处理缺失值,浏览记录表中的1-4类无顺序,5-9类有顺序,一方面对567*9这种补齐8操作,另一方面发现订单历史记录中的下单时间戳和浏览记录的7操作时间一样,对于历史订单有订单但在浏览记录中对应时间点没有7操作的记录补齐7操作,还有基本信息缺失处理如性别的缺失处理等。
  2. 特征工程:特征设计主要从 (历史订单 + 浏览行为 + 时间特征 + 文本评论) 这几方面展开,并根据特征方差和特征与label的相关系数&绘图进行特征选择,具体特征在如下。
  3. 模型选择:由于其中包括浏览记录是属于类别特征,选用对类别特征直接支持且在泛化能力强不易过拟合的Catboost算法,和LightGBM算法。
  4. 模型融合:最后模型融合使用Stacking的方式,特征分三份:第一层使用(参数不一样)的10个Catboost、xgboost和lightGBM训练,第二层使用xgboost融合,最后三个stacking结果再次融合,融合方法采用概率大取更大、小取更小,通俗的理解是在表现效果 (AUC) 相差不大的多个模型中,去选取对该条样本预测更自信的模型作为最终结果。(全集特征+两份有重合不完全特征80%(根据特征相关性,强耦合的特征分开))单独Stacking:0.9746,三份stacking融合0.97640,单模型0.9735
  5. 由于部分用户浏览记录很少(只有几条),导致这些用户的很多特征维度为空,属于“冷启动”问题,单独建立在其历史特征和评论特征维度进行预测。

模型设计与模型融合

特征工程

特征按照比赛时间进展在文件夹feature中,分别为1 ~ 10_extract_feature.py,以下根据特征所属类别(历史订单 + 浏览行为 + 时间特征 + 文本评论 + 交互)进行分类,具体特征提取方法可以看其中注释,另外特征工程运行时间较长,完整的特征文件下载:

精品旅行服务预测Rank2特征文件

获取方式:

总结如下:

  • 历史订单特征
    • 历史订单数量
    • 历史出现精品订单 1 的数量和占比
    • 历史出现普通订单 0 的次数和占比
    • 用户最近一次出行是否为精品旅行 1
    • 历史纪录中城市的精品占比
    • 历史订单是否出现过精品订单 1 (leak)
    • 历史订单最近一次是什么类型 0 / 1
    • 历史订单最近一次去的州、国家、城市
  • 浏览行为特征(全部:指用户所有的浏览记录,对应:指该次购买对应的浏览记录)
    • 全部浏览记录中0-9出现的次数
    • 对应浏览记录中0-9出现的次数
    • 全部浏览记录浏览时间
    • 对应浏览记录浏览时间
    • 对应浏览记录是否出现5 6
    • 全部浏览记录是否出现56 67 78 89
    • 对应浏览记录是否出现56 67 78 89
    • 全部浏览记录是否出现567 678 789 566
    • 对应浏览记录是否出现567 678 789 566
    • 全部浏览记录是否出现5678 6789
    • 全部浏览记录是否出现56789
    • 对应浏览记录是否出现56789
    • action中大于6出现的次数
    • 对应点击2-4的和值 与 5-9 的比值
    • 全部点击2-4的和值 与 5-9 的比值
    • 对应浏览记录 1-9 操作所用平均时间
    • 全部浏览记录 1-9 操作所用平均时间
    • 全部action 最后一次 的类型
    • 全部 action 倒数第2-6次操作的类型
    • 最后1 2 3 4 次操作的时间间隔
    • 时间间隔的均值 最小值 最大值 方差
    • action 最后4 5 6 次操作时间的方差 和 均值
    • 对应浏览记录浏览平均时间(可以改成最近几天的)
    • 对应浏览记录 1-9 操作所用平均时间
    • 全部浏览记录 1-9 操作所用平均时间
    • 每日用户action的次数
    • 每日用户action的时间
    • 最近1周的使用次数 eval-auc:0.963724
    • 离最近的1-9的距离(间隔操作次数) 只取 56789
    • 总体操作 1 2 3 4 5 6 7 8 9 次数的排名 rank
    • 对应操作 1 2 3 4 5 6 7 8 9 次数的排名 rank
    • 用户使用APP的天数,分别是否老用户
    • 用户当前时间距离最近历史订单时间间隔
  • 文本评论特征
    • 评论的长度
    • 评论的标签个数(强特征 涨分1个万)
    • 用户订单评分的统计特征(平均分、方差)
    • 用户评论各类分数的比例,最近一次评论的分数
    • 分用户普通订单评论的平均分和精品订单平均分
    • 使用snownlp对用户评论进行情感分析,统计用户订单评论得分
  • 用户特征
    • 是否新用户
    • 性别 是否男 是否女 是否缺失
    • 所属省份/城市(one-hot encode)
    • 所属年龄段(one-hot encode)
  • 时间特征
    • 以最近的浏览记录作为要预测的用户订单时间
    • 当前时间点的月份、当月第几天、星期几、是否周末
    • 用户历史订单最多的月份、当月第几天、星期几、是否周末
    • 是否为该城市的旅游旺季
    • 季节特征

运行环境和代码结构

代码运行环境,包含主要软件和库

代码结构

  • 在boutique_travel是整个比赛的代码,数据存储路径在
  • data文件夹用来存放数据,
    • 其中包含提取的特诊集(train6/test6、train_feature1/test_feature1、data_train/data_test)
    • submit文件夹是提交的结果文件,其下面子文件夹包含各个单模型的预测结果
  • feature文件夹存放提取特征的代码
    • 包含1 ~ 10_extract_feature.py 每部分代码对应提取的特征均有注释
  • model文件夹存放模型训练、预测和融合的代码
    • 1_submit.py是概率文件融合和修改预测结果为比赛要求的提交格式
    • 2~6分别是catboost、xgboost、lightGBM等的单模型和5折CV训练预测
    • 7是特征分三分,分别做两层的stacking learning,最后再对表现结果差不多的概率文件结果融合
    • model文件夹存储训练好的模型

车辆检测及型号识别,准确率接近90%

全球AI挑战-场景分类的比赛源码(多模型融合)

https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

原文地址:https://www.cnblogs.com/webRobot/p/10359035.html

时间: 2024-10-15 04:43:56

Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc的相关文章

一步一步理解GB、GBDT、xgboost

GBDT和xgboost在竞赛和工业界使用都非常频繁,能有效的应用到分类.回归.排序问题,虽然使用起来不难,但是要能完整的理解还是有一点麻烦的.本文尝试一步一步梳理GB.GBDT.xgboost,它们之间有非常紧密的联系,GBDT是以决策树(CART)为基学习器的GB算法,xgboost扩展和改进了GDBT,xgboost算法更快,准确率也相对高一些. 1. Gradient boosting(GB) 机器学习中的学习算法的目标是为了优化或者说最小化loss Function, Gradient

RF、GBDT、XGBOOST常见面试算法整理

1.  RF(随机森林)与GBDT之间的区别 相同点: 1)都是由多棵树组成的 2)最终的结果都是由多棵树一起决定 不同点: 1)  组成随机森林的树可以是分类树也可以是回归树,而GBDT只由回归树组成 2)  组成随机森林的树可是并行生成,而GBDT只能是串行生成 3)  随机森林的结果是多棵树表决决定,而GBDT则是多棵树累加之和 4)  随机森林对异常值不敏感,而GBDT对异常值比较敏感 5)  随机森林是通过减少模型的方差来提高性能,而GBDT是减少模型的偏差来提高性能 6)  随机森林

Java虚拟机6:内存溢出和内存泄露、并行和并发、Minor GC和Full GC、Client模式和Server模式的区别

http://www.cnblogs.com/xrq730/p/4839245.html 前言 之前的文章尤其是讲解GC的时候提到了很多的概念,比如内存溢出和内存泄露.并行与并发.Client模式和Server模式.Minor GC和Full GC,本文详细讲解下这些概念的区别. 内存溢出和内存泄露的区别 1.内存溢出 内存溢出指的是程序在申请内存的时候,没有足够大的空间可以分配了. 2.内存泄露 内存泄露指的是程序在申请内存之后,没有办法释放掉已经申请到内存,它始终占用着内存,即被分配的对象可

Java多线程21:多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask

CyclicBarrier 接着讲多线程下的其他组件,第一个要讲的就是CyclicBarrier.CyclicBarrier从字面理解是指循环屏障,它可以协同多个线程,让多个线程在这个屏障前等待,直到所有线程都达到了这个屏障时,再一起继续执行后面的动作.看一下CyclicBarrier的使用实例: public static class CyclicBarrierThread extends Thread { private CyclicBarrier cb; private int sleep

Probabilistic Graphical Models:一、Introduction and Overview(1、Overview and Motivation)

一.PGM用来做什么 1.  医学诊断:从各种病症分析病人得了什么病,该用什么手段治疗 2.  图像分割:从一张百万像素级的图片中分析每个像素点对应的是什么东西 两个共同点:(1)有非常多不同的输入变量:(2)对于算法而言,结果都是不确定的 二.PGM各代表什么 1.  Models 2.  Probabilistic (1)概率:设计model即是为了分析一些不确定的东西(uncertainty) (2)Uncertainty的来源: (3)概率在模型表达上的优势 3.  Graphical

[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)

原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) 得到了大家的强力支持与建议,万分感谢.接下来介绍下一篇:oracle pl/sql异常处理部分,还望大家一定

基于.NET的Excel开发:单元格区域的操作(读取、赋值、边框和格式)

引用 using Excel = Microsoft.Office.Interop.Excel; 定义 1 Excel.ApplicationClass app; 2 Excel.Workbooks books; 3 Excel.Workbook book; 4 Excel.Sheets sheets; 5 Excel.Worksheet sheet; 6 Excel.Range m_objRange; 7 object missing = System.Reflection.Missing.V

Others # 书籍:《穷人与富人的战争》、《财富的真相》、《社交红利》

Others # 书籍:<穷人与富人的战争>.<财富的真相>.<社交红利>,布布扣,bubuko.com

【转】[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)

[推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) 得到了大家的强力支持与建议,万分感谢.接下来介绍下一篇:oracle pl/sql异常处理部分,还望大家一定要支持与推荐呀~! 本篇主要内容如下: 5.1 异常处理概念 5.1.1 预定义的异常