zoukankan      html  css  js  c++  java
  • Feature Tools 简介

    FeatureTools是2017年9月上线的github项目,是一个自动生成特征的工具,应用于关系型数据。

    github链接:https://github.com/Featuretools/featuretools

    项目官网:https://www.featuretools.com/

    API doc:https://docs.featuretools.com/api_reference.html

    最近看了一下这个开源工具,对生成关系型特征有一些帮助,把这个项目简单总结一下。

    这个项目起源于Deep Feature Systhesis 这篇文章,链接是 http://www.jmaxkanter.com/static/papers/DSAA_DSM_2015.pdf ,官网上也有类似资料,但是没有文章介绍的详细。

    Feature Tools是 Deep Feature Systhesis (DFS) 算法的开源实现,实现原理如下。

    假定我们有四个Entity,即四张表(Table):Customer, Order, Order Product 和 Product。他们之间的关系是这样的:

    1个Customer对应多个Order,其余的以此类推。

    我们的目标是给Customer建立特征。

    DFS方法把特征分为两类:

    1. Entity feature, 仅依据Customer表中的数据计算特征,计算出的特征简称efeat;

    2. Ralated feature, 依据Customer表和其他表的关系计算特征,relation又为两类,一是forward relation, 即一对一的关系,比如 一个Order只对应一个Customer,二是 backward relation,即一对多的关系,比如 一个Customer对应多个Order。

    假设我们不是对Customer计算特征,而是对Order计算特征,这时Customer和Order是forward relation,可以直接把Customer的字段加到Order表中,然后再计算各种特征,这样计算得到的特征简称 dfeat;

    如果是针对Customer计算特征,Customer和Order是backward relation,此时就需要先计算相同Customer的不同Order的特征值(比如 sum, max, min, mean, std等),计算得到的特征简称rfeat。

    DFS把Entity之间的关系称为parent-child关系,比如 Customer和Order是一对多的关系,所以Customer是parent,Order是child。这是FeatureTools的输入参数之一。

    上面的概念都搞清楚了,就能自然理解DFS计算特征的过程了:根据parent-child关系,计算rfeat和dfeat,把rfeat和dfeat合并到parent表中,计算parent的efeat,以递归方式执行这些操作即可,也就是自底向上累积计算特征。

    附上文中给出的伪代码:

    文中提到了一个注意点:一般先计算rfeat,后计算dfeat,同一个Entity一般只使用一次。

    一般来说,rfeat包含的信息量更多,也更常用,所以rfeat相比dfeat更重要一些,这是我的理解。

    featureTools的使用比较简单,可以参考5-minutes demo实操一下:https://docs.featuretools.com/#minute-quick-start

    要把这个工具的所有api都了解清楚,可以参考上面的api链接,下载数据,跑demo,把所有特征都计算一遍。

    p.s. 这个工具有两个弱点:

    1. 使用这种多层全排列的方式容易造成特征维数过多,实践中必须做特征筛选,降低特征维数。

    2. 这种暴力搜索得到的特征,可解释性可能偏弱,需要深入研究那些优质特征的可解释性。懂业务的人搞出几个解释性强的特征,可能秒杀暴力搜索得到的所有特征。所以,实际应用时,可以用暴力搜索法作为特征挖掘的辅助算法。

    3. 从官网文档看,FeatureTools只有单机版,处理的数据量有限。

  • 相关阅读:
    jmeter(六)元件的作用域与执行顺序
    通过数据自动生成流程图(前端方向) dagred3
    jmeter(二)录制脚本
    最准的中文文本相似度计算工具
    BERT文本相似度实战
    Jmeter 字符串拼接参数
    常见数据库字段类型与java.sql.Types的对应
    jmeter(二十七)分布式压测注意事项
    词法分析利用Jieba实现高频词提取(Python)
    jmeter(二十一)jmeter常用插件介绍
  • 原文地址:https://www.cnblogs.com/xxiaolige/p/9319798.html
Copyright © 2011-2022 走看看