Feature Tools 簡介

FeatureTools是2017年9月上線的github項目,是一個自動生成特徵的工具,應用於關係型數據。html

github連接:https://github.com/Featuretools/featuretools git

項目官網:https://www.featuretools.com/github

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

最近看了一下這個開源工具,對生成關係型特徵有一些幫助,把這個項目簡單總結一下。api

這個項目起源於Deep Feature Systhesis 這篇文章,連接是 http://www.jmaxkanter.com/static/papers/DSAA_DSM_2015.pdf ,官網上也有相似資料,可是沒有文章介紹的詳細。工具

Feature Tools是 Deep Feature Systhesis (DFS) 算法的開源實現,實現原理以下。ui

假定咱們有四個Entity,即四張表(Table):Customer, Order, Order Product 和 Product。他們之間的關係是這樣的:htm

1個Customer對應多個Order,其他的以此類推。blog

咱們的目標是給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只有單機版,處理的數據量有限。

相關文章
相關標籤/搜索