PYTHON机器学习自动特征工程实现案例

好久没有写机器学习实践相关的干货了,今天带来一个自动特征工程的实现,基于一个专门做特征工程的开源库Feature Tools的实现

关于背景

AutoML目前是整个机器学习领域的大趋势,关于自动调参的方法已经很成熟了,但是对于特征的衍生一直没有特别好的实现。Feature Tools其实是一个专门做特征工程的库,关于自动特征工程在之前的很多文章中都分享过我的看法,之前我讲到的是基于蒙特卡洛搜索的一种实现思路(有兴趣的同学可以翻看下)。之所以觉得Feature Tools可以推荐,是因为这个库使用的是一种集合论的思路,有点知识图谱+机器学习的意思。我个人觉得挺有趣的,也分享给大家。

Feature Tools基本概念

Feature Tools的论文我还没看哈,关于他的一些概念可以先简单列下:

实体:每张数据表可以看成一章实体(《机器学习实践应用》的读者可以翻到最后一章,看下知识图谱的概念,很像)

关系:什么叫关系呢?如果两张表共用一个或多个字段作为索引,那么这两种表之间就是有一种关系

父子关系:如果两张表存在关系,我们可以定义一张表是父表,一张表是子表

函数集:Feature Tools中内置的一些特征工程组合关系函数,比如最大值max,求和sum,最小值min等

具体实现

光有概念,没有代码肯定是不过瘾的,下面结合一个案例讲下Feature Tools是怎么做

1.数据集介绍

我们有customers、sessions、transactions三张表,可以看下这三张表相互之间有session_id和customer_id这两种字段的关联。

2.定义实体和关系字段

把三个表都定义为entities,也就是实体

3.定义父子关系

sessions这个表和transactions可以通过session_id这个字段关联,于是可以定义sessions是transations的父表,依次类推。

4.自动生成特征

通过表与表间的父子关系,可以快速生成新的特征。

这里只展示了部分衍生特征,实际生成了69个,是不是很快速方便,生成特征的规则是按照表间的父子关系,利用内嵌的sum、min、count等函数自动组合特征间的关系。

总结

通过表间的关联关系可以快速的生成大维度的特征向量,可以快速的完成特种工程。问题就是特征的解释性较差,而且需要一定的降维操作可能才能达到好的效果。

珍惜每一刻每一秒

去充实自己

微信号:凡人机器学习

长按二维码关注

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180621G1T6XE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券