5行代码提升GBDT,提升巨大!

简介: 如果你打过kaggle应该一定都知道,大家心照不宣的表格数据竞赛的第一tricks:

如果你打过kaggle应该一定都知道,大家心照不宣的表格数据竞赛的第一tricks:


他就是category特征的频度统计了,你也可以称为value counts等,用pandas实现起来也很简单。我拿个简单的3列表格,上五行代码示例。


importpandasaspddf=pd.DataFrame({'区域':['西安','太原','西安','太原','郑州','太原'], '10月份销售':['0.477468','0.195046','0.015964','0.259654','0.856412','0.259644'], '9月份销售':['0.347705','0.151220','0.895599','0236547','0.569841','0.254784']}) #统计 df_counts=df['区域'].value_counts().reset_index() df_counts.columns=['区域','区域频度统计'] df=df.merge(df_counts,on=['区域'],how='left')


你看到这了,可能说,就这?就这?


如果就这,肯定不是包大人的作风,授人以鱼不如授人以渔,我们一起来想想,为什么这玩意,荣登一把梭的第一把


第一层



除了老调重弹的决策树的模型特性,我们今天再从数据的角度思考一下。


工业界category类的数据,大部分都是长尾分布的,你可以想象下诸如地区,职业,商品品类等。低频部分,数量少,置信度低,容易过拟合。


那么第一个优点就呼之欲出了,你可以认为,频度统计是一种带智慧的哈希编码方式,他对所有的低频都一视同仁。


就跟我们在初中时候,班里男生各种与众不同的发型,全都让班主任剃成了5mm卡尺,军训头。教导主任根据发型,毫不费力就能知道,以前这个学生挺有个性的。


这样低频,置信度低的东西,他们的共性也被挖掘出来了。这就是特征工程神奇的地方。


好了,刚才我们讲了频度统计对于低频的归一化作用,下面我们进入第二层。


第二层



离线数据集是真实数据分布的采样。在工业界,频度在不同场景下有着不同的含义。


最基本的,在展现日志表对广告id 进行的频度统计就是广告的曝光量,在访问日志表对页面id 进行统计就是页面的pv,对用户id进行频度统计就是页面的uv。


这些不同含义的频度统计量,他是有场景含义的,对应在背后就存在一定的规律。


比如在风控场景,一个user id的广告点击特别高,就得小心他是不是点击工厂。一个用户在一个时间段,支付了N笔不同的外卖,要小心他是不是在刷单。


刚才讲了他在不同场景下的业务含义和目标一致关联性,下面我们进入第三层。


第三层



第三层,对应着广告点击率预估里面一个术语,特征交叉。


举个例子,特征交叉在生活中无处不在,比如阿里码农,就是工作地和工种的交叉,工地打灰,也是工作地和工种的交叉,大厂除了码农还有leader,工地除了打灰还有监工,他们的含义并不相同。


交叉是有代价的,比如工地也有写代码的,但不是太多,交叉会让整个分布更加的长尾,对应着就更难学习了。


似乎,又带来了第一个问题,嗯没事,我们的频度统计把刺头又干掉了,美滋滋。特征交叉对应着第二层,又会产生更丰富的含义。每一个落地页的pv uv就出来了,每个时段的pv和uv也出来了。


注意:以上一把梭哈适用在离线数据集,train和test之间无bias场景。其他情况,想必大家也知道怎么处理了~

相关文章
|
人工智能 IDE 开发工具
Studio Bot - 让 AI 帮我写 Android 代码
Studio Bot - 让 AI 帮我写 Android 代码
881 1
|
存储 数据可视化 计算机视觉
树莓派计算机视觉编程:1~5
树莓派计算机视觉编程:1~5
382 0
|
存储 算法 安全
微信团队分享:来看看微信十年前的IM消息收发架构,你做到了吗
好的架构是迭代出来的,却也少不了良好的设计,本文将带大家回顾微信背后最初的也是最核心的IM消息收发技术架构,愿各位读者能从中获得启发。
581 1
|
存储 算法 数据可视化
Python 金融编程第二版(GPT 重译)(一)(1)
Python 金融编程第二版(GPT 重译)(一)
268 1
|
程序员 计算机视觉
程序员的“防御性编程”
最近都在聊程序员要做好“防御性编程”,"防御性编程"的概念从之前的“保护程序”一下子变成了现在的“保护程序员”,一字之差,千差万别。
程序员的“防御性编程”
|
存储 人工智能 安全
三个故事方法:使用 ChatGPT 编辑你的场景(全)
三个故事方法:使用 ChatGPT 编辑你的场景(全)
434 0
|
Cloud Native Linux API
.NET 发展历程
.NET 是开源、跨平台、社区活跃技术开发平台,中国信通院在 2022 | OSCAR 开源产业大会大会上发布的全球开源生态研究报告里首次提出开源社区成熟度度量模型,.NET 法律合规表现出色,组件许可证兼容性较高,法律风险较小。其生态基于 MIT 和 Apache 2.0 协议基础上构建,对商业友好。
1035 1
.NET 发展历程
|
Python
[oeasy]python0144_try的完全体_否则_else_最终_finally
[oeasy]python0144_try的完全体_否则_else_最终_finally
229 0
[oeasy]python0144_try的完全体_否则_else_最终_finally
【“玩物立志”scratch少儿编程】坦克动荡-“穿墙控制”和“子弹反弹”的实现-含完整代码
【“玩物立志”scratch少儿编程】坦克动荡-“穿墙控制”和“子弹反弹”的实现-含完整代码
1195 0
【“玩物立志”scratch少儿编程】坦克动荡-“穿墙控制”和“子弹反弹”的实现-含完整代码
|
Web App开发 Rust Kubernetes
2021 年 Rust 生态调研报告 | 星辰大海 【上篇】
2021 年 Rust 生态调研报告 | 星辰大海 【上篇】
1065 0