Datacastle在前一段时间发布了一个算法竞赛-精品旅行服务成单预测。当时空闲时间比较多就报名参加了,后面为了赶论文进度没有继续做下去,最后的一次提交结果是0.94+的auc。共计提取了76个特征,分别使用了基于权重和stacking的模型融合方法,下面是对特征和模型的一些整理。
一、特征
1.基本信息:如用户性别,省份,年龄等。
2.历史订购信息:之前是否购买过精品,订购每种类型订单的比率。
3.历史订单信息:order 的 actionType 的最后一个 行为, 倒数第二个, 倒数第三个等(需要亲自试验);order所在城市(actionType一共有9个,其中1是唤醒app;2~4是浏览产品,无先后关系;5~9则是有先后关系的,从填写表单到提交订单再到最后支付。)
4.时间信息:用户actionType时间间隔均值,方差,最后一个值,最小值,倒数第二个、倒数第四个,最后三个时间间隔均值,最后三个时间间隔方差,距离最近的各个actionType的时间和时间间隔的均值、方差以及均值的最大值、最小值,均值乘以方差,还有当时采取各个action的时间是周几。
5.点击信息:用户点击各个type的次数占总次数的比例。
6.评论信息:用户的评分,评论的关键词个数,关键字长度(这个应该还可以加个情感分析的ヽ( ̄▽ ̄)و)。
7.用户行为:用户最后一个action距离最近的各个action间隔距离,各个行为占比。
值得注意的是,本次比赛对组合特征做的不够好,后来参考了竞赛圈其他同学分享的组合特征,如历史最后一次时间对应action中点击的什么,最后操作那一天 action 的count,用户actionType为5,6,7的平均时长,用户的评论是否在历史表中等,受益匪浅。
二、模型
最开始的时候使用了GradientBoostingRegressor,SVR,XGBRegressor三者按照3:3:4的比例进行的权重组合。后来为了提升预测效果,决定在模型方面下点功夫,参考了一个数据科学的工具包,加入stacking,贴一个使用方法,方面后续使用:

from heamy.dataset import Dataset
from heamy.estimator import Regressor, Classifier
from heamy.pipeline import ModelsPipeline
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
from sklearn.neighbors import KNeighborsRegressor
from sklearn.ensemble import GradientBoostingRegressor
from xgboost import XGBRegressor
import pandas as pd
##事先将特征保存到文件中,比较重要,因为jupyter notebook随时会挂掉(⊙_⊙)
train = pd.read_csv('train_part_76_features.csv')
test = pd.read_csv('test_part_76_features.csv')
col = [c for c in train if c not in ['userid','label']]
X_train = train[col]
y_train = train['label'].values
X_test = test[col]
"""
##使用基于距离的回归方法需要归一化
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train[col] = scaler.fit_transform(X_train)
X_test[col] = scaler.transform(X_test)#此处感谢批评区同学的指出,如果重新拟合分布会与训练集不一致~
"""
dataset = Dataset(X_train,y_train,X_test)
model_gbrt = Regressor(dataset=dataset, estimator=GradientBoostingRegressor, parameters={'learning_rate': 0.01,'random_state':3,'n_estimators':200\,'subsample':0.8, 'max_depth' :20 },name='gbrt')
#GradientBoostingRegressor(learning_rate=0.2, random_state=3, n_estimators=200, subsample=0.8,
#                      max_depth =10)
#model_knn =  Regressor(dataset=dataset, estimator=KNeighborsRegressor, parameters={'n_jobs': -1,'n_neighbors':3},name='knn')
#
model_xgbr = Regressor(dataset=dataset, estimator=XGBRegressor, parameters={'learning_rate': 0.01,'random_state':3,'n_estimators':200\,'subsample':0.8, 'objective': 'reg:linear','max_depth' :10},name='xgb')
#model_mlp =  Regressor(dataset=dataset, estimator=MLPRegressor, parameters={'hidden_layer_sizes': 10,'random_state':9},name='mlp')
# initialize RandomForest & LinearRegression
model_rf = Regressor(dataset=dataset, estimator=RandomForestRegressor, parameters={'n_estimators': 50},name='rf')
#model_lr = Regressor(dataset=dataset, estimator=LinearRegression, parameters={'normalize': True},name='lr')# Stack two models
# Returns new dataset with out-of-fold predictions
pipeline = ModelsPipeline(model_rf,model_xgbr)
stack_ds = pipeline.stack(k=5,seed=9)# Train LinearRegression on stacked data (second stage)
stacker = Regressor(dataset=stack_ds, estimator=LinearRegression)
results = stacker.predict()
# Validate results using 10 fold cross-validation
#results = stacker.validate(k=10,scorer=mean_absolute_error)

换用stacking方法并进行调参后分数相较于之前提高了大约10%。
完整代码位于:https://github.com/zoneplus/datacastle-travel-prediction。欢迎批评指正~

Datacastle算法竞赛-精品旅行服务成单预测-AUC:0.94+解决方案相关推荐

  1. 精品旅行服务成单预测(皇包车)比赛记录

    精品旅行服务成单预测比赛是DC举办的"第二届智慧中国杯"的第一个比赛,主要是通过用户的历史行为数据对待预测用户是否购买精品旅游服务进行预测.具体的比赛背景和数据介绍可以参考比赛说明 ...

  2. 循环智能的智能对话分析系统:帮助新东方在线实现全量机器质检、客户心声分析和线索成单预测 | 百万人学AI评选

    2020 无疑是特殊的一年,而 AI 在开年的这场"战疫"中表现出了惊人的力量.站在"新十年"的起点上,CSDN[百万人学AI]评选活动正式启动.本届评选活动在 ...

  3. 【算法竞赛学习】二手车交易价格预测-Task5模型融合

    二手车交易价格预测-Task5 模型融合 五.模型融合 Tip:此部分为零基础入门数据挖掘的 Task5 模型融合 部分,带你来了解各种模型结果的融合方式,在比赛的攻坚时刻冲刺Top,欢迎大家后续多多 ...

  4. 【算法竞赛学习】二手车交易价格预测-Task1赛题理解

    二手车交易价格预测-Task1 赛题理解 一. 赛题理解 Tip:此部分为零基础入门数据挖掘的 Task1 赛题理解 部分,为大家入门数据挖掘比赛提供一个基本的赛题入门讲解,欢迎后续大家多多交流. 赛 ...

  5. 【算法竞赛学习】二手车交易价格预测-Baseline

    二手车交易价格预测-Baseline Baseline-v1.0 版 Tip:这是一个最初始baseline版本,抛砖引玉,为大家提供一个基本Baseline和一个竞赛流程的基本介绍,欢迎大家多多交流 ...

  6. 【算法竞赛学习】二手车交易价格预测-Task4建模调参

    二手车交易价格预测-Task4 建模调参 四.建模与调参 Tip:此部分为零基础入门数据挖掘的 Task4 建模调参 部分,带你来了解各种模型以及模型的评价和调参策略,欢迎大家后续多多交流. 赛题:零 ...

  7. 【算法竞赛学习】二手车交易价格预测-Task3特征工程

    二手车交易价格预测-Task3 特征工程 三. 特征工程目标 Tip:此部分为零基础入门数据挖掘的 Task3 特征工程部分,带你来了解各种特征工程以及分析方法,欢迎大家后续多多交流. 赛题:零基础入 ...

  8. 【算法竞赛学习】二手车交易价格预测-Task2数据分析

    二手车交易价格预测-Task2 数据分析 二. EDA-数据探索性分析 Tip:此部分为零基础入门数据挖掘的 Task2 EDA-数据探索性分析 部分,带你来了解数据,熟悉数据,和数据做朋友,欢迎大家 ...

  9. 7、python多种方式进行成单回归预测

    多种方案成单预测比较 1 背景和挖掘目标 基于关键的业务指标进行成单预测,对影响成单的因子了解 2 分析步骤 01 基于关键特征数据底表的分组处理 02 关于机会.名片表的处理  基于业务逻辑或者数据 ...

最新文章

  1. 同向逆向、多车道线检测
  2. RDKit | 定量评估类药性(QED)
  3. javascript的输入与输出
  4. gan只用来生成是浪费
  5. 一刻钟精通正则表达式
  6. Linux 文件夹含义(转)
  7. WebService入门篇
  8. [TCP/IP] TCP如何保证可靠性
  9. 3dmax高版本转低版本插件_视频编辑干货资料:低版本打开高版本pr文件
  10. 基于MATLAB的turbo码代码,一种基于Simulink的Turbo码仿真实现
  11. mysql注入5.0以上_[Injection]对MYSQL 5.0服务器以上版本注入
  12. android java标准时间_java android中对list的时间进行排序
  13. java对xml解析_Java中对xml的解析
  14. Python3爬虫入门之selenium库的用法
  15. PATB 1019. 数字黑洞 (20)
  16. 计算机图形学的未来前景,计算机图形学的发展前景
  17. 【剑指offer】19. 二叉树的镜像
  18. Log4j2 Demos(基础/时间大小回滚/定期删除/日志脱敏)
  19. 设计模式java装饰模式范例_Java设计模式中外观模式和装饰器模式的介绍(代码示例)...
  20. 计算机网络的社会环境分析_计算机网络的功能和应用

热门文章

  1. Windows 11 Office/Visio/Project 2021 下载
  2. RKE方式部署Kubernetes集群
  3. 电大计算机应用基础本行考,(2021更新)最新国家开放大学电大本科《计算机应用基础》网络课网考形考作业二试题及答案...
  4. 《高效能人士的7个习惯》-统合综效
  5. PHP 跟据用户IP获取所在国家高效解决方案(GEOIP)
  6. Win10下YOLOv3配置、制作数据集与训练检验
  7. Java获取当前时间戳的方法
  8. C# 获取当前时间戳(正确版)
  9. love2d之路(三)一个简易弹幕射击游戏示例(上)
  10. 作业帮冯雪胡不归问题_胡 ①边城多警急.胡虏数迁移() ②田园将芜胡不归?() 题目和参考答案——青夏教育精英家教网——...