【Datawhale Ai 夏令营】用户新增预测挑战赛:再进一步

系列文章目录

【Datawhale Ai 夏令营】用户新增预测挑战赛baseline
【Datawhale Ai 夏令营】用户新增预测挑战赛:分类器比较和特征工程



前言

前面两篇系列文章,通过特征工程和比较模型来提高分数,这篇文章将会增加新的特征,并且比较新的分类器。


一、新的特征

引入分钟,日期,星期,和一天中的每10分钟的特征。

train_data['common_ts_min'] = train_data['common_ts'].dt.minute
test_data['common_ts_min'] = test_data['common_ts'].dt.minute

train_data['day'] = train_data['common_ts'].dt.day
test_data['day'] = test_data['common_ts'].dt.day

train_data['dat_of_week'] = train_data['common_ts'].dt.day_of_week
test_data['dat_of_week'] = test_data['common_ts'].dt.day_of_week

train_data['ten_minutes_in_day'] = train_data['common_ts_hour'] * 6 + train_data['common_ts'].dt.minute // 10 
test_data['ten_minutes_in_day'] = test_data['common_ts_hour'] * 6 + test_data['common_ts'].dt.minute // 10 

引入后各分类模型提升如下:

1.SGDClassifier

在这里插入图片描述

2.DecisionTreeClassifier

在这里插入图片描述

3.MultinomialNB

在这里插入图片描述

4.RandomForestClassifier

在这里插入图片描述

二、新的分类器

1.xgboost

XGBoost 代表“Extreme Gradient Boosting”,其中“Gradient Boosting”一词源自Friedman 的论文Greedy Function Approximation: A Gradient Boosting Machine 。XGBoost是一个树集成模型,他将K(树的个数)个树的结果进行求和,作为最终的预测值。

pred = cross_val_predict(
    XGBClassifier(),
    train_data.drop(['udmap', 'common_ts', 'uuid', 'target'], axis=1),
    train_data['target']
)
print(classification_report(train_data['target'], pred, digits=3))

在这里插入图片描述

2.LightGBM

LightGBM在 Histogram 算法之上进行进一步的优化。首先它抛弃了大多数 GBDT 工具使用的按层生长 (level-wise) 的决策树生长策略,而使用了带有深度限制的按叶子生长 (leaf-wise) 算法。Level-wise 过一次数据可以同时分裂同一层的叶子,容易进行多线程优化,也好控制模型复杂度,不容易过拟合。但实际上 Level-wise 是一种低效的算法,因为它不加区分的对待同一层的叶子,带来了很多没必要的开销,因为实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。
Leaf-wise 则是一种更为高效的策略,每次从当前所有叶子中,找到分裂增益最大的一个叶子,然后分裂,如此循环。因此同 Level-wise 相比,在分裂次数相同的情况下,Leaf-wise 可以降低更多的误差,得到更好的精度。Leaf-wise 的缺点是可能会长出比较深的决策树,产生过拟合。因此 LightGBM 在 Leaf-wise 之上增加了一个最大深度的限制,在保证高效率的同时防止过拟合。

pred = cross_val_predict(
    lgb.LGBMClassifier(),
    train_data.drop(['udmap', 'common_ts', 'uuid', 'target'], axis=1),
    train_data['target']
)
print(classification_report(train_data['target'], pred, digits=3))


总结

提出新的特征,增加新的分类器进行比较。未来模型增长点可以着重于对模型参数的精细化调整和模型融合,如使用网格化搜索获取最优参数然后使用Stacking方法对得分优秀的模型进行融合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值