第二十三课.Kaggle交易预测
目录
- 简介
- 基于 lightgbm 的 Kaggle 交易预测
- baseline
- 优化
简介
实验基于 Kaggle 竞赛数据,使用 lightgbm 预测银行客户在未来是否会进行交易,比赛地址(已结束):交易预测
原始数据文件较大,故实验选用了 train.csv 中的 5 万条样本作为模型训练集(train.csv.gzip),1 万条样本作为模型测试集(test.csv.gzip);数据集保存在个人资源处;
LightGBM 是使用基于树的学习算法的梯度提升框架。 它的设计是分布式且高效的,具有以下优点:
- 训练速度更快,效率更高。
- 内存使用率较低。
- 更高的准确率。
- 支持并行和GPU学习。
- 能够处理大规模数据。
LightGBM 模型的训练和预测方法和 sklearn 类似,若想了解关于 LightGBM 更多的使用方法,可以阅读: LightGBM 文档
LightGBM可以看成是XGBoost的改进版本
安装方式:
# 安装xgboost
pip install xgboost -i https://pypi.tuna.tsinghua.edu.cn/simple# 安装lightgbm
pip install lightgbm -i https://pypi.tuna.tsinghua.edu.cn/simple
基于 lightgbm 的 Kaggle 交易预测
baseline
读取训练数据:
import pandas as pd # 读取 gzip 压缩包形式的训练数据
train_df = pd.read_csv('train.csv.gzip',compression='gzip')
# 获取训练集的特征矩阵(训练集第二列到最后一列)
X_train = train_df.iloc[:,1:].values
# 获取训练集的标记数组(训练集第一列)
y_train = train_df.iloc[:,0].values
读取测试数据:
# 读取 gzip 压缩包形式的测试数据
test_df = pd.read_csv('test.csv.gzip',compression='gzip')
# 获取测试集的特征矩阵(测试集第二列到最后一列)
X_test = test_df.iloc[:,1:].values
# 获取测试集的标记数组(测试集第一列)
y_test = test_df.iloc[:,0].values
实例化模型:
import lightgbm as lgb # 实例化 LightGBM 模型,不传参则使用默认值
model = lgb.LGBMClassifier()
模型训练与预测:
# 模型训练
model = model.fit(X_train,y_train)
# 模型预测(y=1的概率值)
y_pred = model.predict_proba(X_test)[:,1]
模型评估:
from sklearn.metrics import roc_auc_score# 计算模型在测试集上的 AUC
auc = roc_auc_score(y_test,y_pred)
# 输出 AUC
auc
输出AUC结果为:0.8546866656125154
优化
考虑模型的参数:
lgb.LGBMClassifier(boosting_type='gbdt', num_leaves=31, max_depth=-1, learning_rate=0.1, n_estimators=100, ...)
一般来说,调参的关键参数为:
1.For Faster Speed(考虑速度)
- Use bagging by setting
bagging_fraction
andbagging_freq
- Use feature sub-sampling by setting
feature_fraction
- Use small
max_bin
- Use
save_binary
to speed up data loading in future learning - Use parallel learning, refer to Parallel Learning Guide
2.For Better Accuracy(考虑准确率)
- Use large
max_bin
(may be slower) - Use small
learning_rate
with largenum_iterations
- Use large
num_leaves
(may cause over-fitting) - Use bigger training data
- Try
dart
3.Deal with Over-fitting(考虑泛化能力)
- Use small
max_bin
- Use small
num_leaves
- Use
min_data_in_leaf
andmin_sum_hessian_in_leaf
- Use bagging by set
bagging_fraction
andbagging_freq
- Use feature sub-sampling by set
feature_fraction
- Use bigger training data
- Try
lambda_l1
,lambda_l2
andmin_gain_to_split
for regularization - Try
max_depth
to avoid growing deep tree - Try
extra_trees
- Try increasing
path_smooth
常用参数的解释:
- learning_rate:学习率;
- max_depth:树模型深度;
- num_leaves:叶子节点数,树模型复杂度;
- max_bin:叶子结点数+非叶子节点数;
- min_data_in_leaf:一个叶子上数据的最小数量,可以用来处理过拟合;
- feature_fraction:每次迭代中随机选择特征的比例
调优后为:
# 实例化模型
model=lgb.LGBMClassifier(learning_rate=0.06, n_estimators=200, num_leaves=20,max_depth=15)# 模型训练
model = model.fit(X_train,y_train)
# 模型预测(y=1的概率值)
y_pred = model.predict_proba(X_test)[:,1]# 计算模型在测试集上的 AUC
auc = roc_auc_score(y_test,y_pred)
# 输出 AUC
auc
结果为:0.8614455584190766
,相比默认情况,AUC得到提升
第二十三课.Kaggle交易预测相关推荐
- NeHe OpenGL教程 第二十三课:球面映射
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- OpenGL教程翻译 第二十三课 阴影贴图(一)
第二十三课 阴影贴图(一) 原文地址:http://ogldev.atspace.co.uk/(源码请从原文主页下载) 背景 阴影和光是紧密联系在一起的,因为如果你想要产生一个阴影就必须要光.有许多的 ...
- 宇宙精密调治的再思《基督教与科学》第二十三课
黄牧师 从圣经诗19:1-2,看宇宙.太阳系.地球.生物.人类的创造. 一.回顾宇宙.地球.生物.人的设计 宇宙.地球.太阳系.行星.地球环境.生命.人,一切都有极端精密的调治,很清楚可以观察到有看不 ...
- Vue2+Vue3的专题目录结构(第二十三课)
这个世界有些事情真的是无法改变的,我们唯一能做的,只是在自己与世界之间找到一个平衡点. 了解Vue框架的大致学习方向(第一课)_星辰镜的博客-CSDN博客 Vue框架的学习(Vue的基础指令操作一)第 ...
- 学习淘淘商城第二十三课(添加商品的实现)
上节课我们一起学习了富文本编辑器的使用,这节课我们一起学习下商品添加的实现. 在item-add.jsp当中,当点击提交按钮后,会触发submitForm方法,如下图所示. 在提交表单前需要校验输入的 ...
- 第二十三课.扩散模型
目录 概述 前向过程 逆向过程 DDPM 概述 近几年扩散模型不断涌现,但都来源于一个基础模型:DDPM(Denoising Diffusion Probabilistic Model).扩散模型本质 ...
- 第二十三课,抗锯齿(Anti Aliasing)
Anti Aliasing(ˈænti ,ˈeliəsɪŋ )反走样 文章目录 超采样抗锯齿(Super Sample Anti-aliasing, SSAA) 多重采样抗锯齿(Multisample ...
- 【线性代数公开课MIT Linear Algebra】 第二十三课 微分方程与exp(At)
本系列笔记为方便日后自己查阅而写,更多的是个人见解,也算一种学习的复习与总结,望善始善终吧~ 一阶常系数微分方程 Au=dudt 将一阶常系数微分方程转换为线性代数问题的关键在于常系数微分方程的解一定 ...
- 重学java基础第二十三课:java基础 注释
最新文章
- webpack初探——js打包
- 中南大学计算机在线考试答案,中南大学计算机考试复习题
- java从入门到精通_Java---开发从入门到精通,分享视频学习教程
- Java导出源程序_JAVA导出项目的所有源代码到一个文件
- 14-求两个日期之间的天数
- Jsp+javascript打造二级级联下拉菜单
- 【数据库系统设计】关系数据库简介(关系模型、关系模式、关系完整性、关系代数)
- Single Responsibility Principle (SRP) - OO设计的单一职责原则
- 又一可获Linux、Unix根权限的漏洞曝出
- sql语句练习 - 增删改查
- 细说共模干扰和差模干扰(四个腿的电感是什么?有什么作用?)
- 星门跳跃-rqnoj-341
- 2014年服装设计短训班(周末班)招生简章-北京服装学院培训中心
- 区块链报告会心得体会3000_学习区块链的心得体会?
- 【PhpSpreadsheet】实现excel冻结列和行(即左右滚动时指定列和行固定不动)
- 微信小程序 《数字华容道》
- 1022场小红书品牌带货直播数据复盘,双11小红书直播间投放策略
- register_chrdev_region、alloc_chrdev_region、register_chrdev区别
- 毛星云opencv之10.1.5综合示例--harris角点检测和绘制
- 数据仓库amp;数据指标amp;数据治理体系搭建方法论