好久没有写机器学习实践相关的干货了,今天带来一个自动特征工程的实现,基于一个专门做特征工程的开源库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等函数自动组合特征间的关系。
四
总结
通过表间的关联关系可以快速的生成大维度的特征向量,可以快速的完成特种工程。问题就是特征的解释性较差,而且需要一定的降维操作可能才能达到好的效果。
珍惜每一刻每一秒
去充实自己
微信号:凡人机器学习
长按二维码关注
领取专属 10元无门槛券
私享最新 技术干货