特征工程自動化如何為機(jī)器學(xué)習(xí)帶來重大變化

摘要:機(jī)器學(xué)習(xí)中最重要的領(lǐng)域之一是特征工程鳞仙,卻被嚴(yán)重地忽視了。這個(gè)重要領(lǐng)域中最成熟的工具就是Featuretools,一個(gè)開源的Python庫。在本文中卷仑,我們將使用這個(gè)庫來了解一下特征工程自動化將如何改變你進(jìn)行機(jī)器學(xué)習(xí)的方式。

隨著技術(shù)的快速發(fā)展麸折,在數(shù)據(jù)科學(xué)領(lǐng)域中锡凝,包括庫、工具和算法等總會不斷地變化的磕谅。然而私爷,一直都有這么一個(gè)趨勢,那就是自動化水平不斷地提高膊夹。

近些年來,在模型的自動化選擇和超參數(shù)調(diào)整方面取得了一些進(jìn)展捌浩,但是機(jī)器學(xué)習(xí)中最重要的領(lǐng)域 — 特征工程放刨,卻被嚴(yán)重地忽視了。這個(gè)重要領(lǐng)域中最成熟的工具就是Featuretools尸饺,一個(gè)開源的Python庫进统。在本文中,我們將使用這個(gè)庫來了解一下特征工程自動化將如何改變你更好地進(jìn)行機(jī)器學(xué)習(xí)的方式浪听。

特征工程自動化是一種相對較新的技術(shù)螟碎,但是,它解決了許多實(shí)際數(shù)據(jù)集的使用問題迹栓。在這里掉分,我們將用GitHub上的Jupyter Notebooks提供的代碼來看看其中兩個(gè)項(xiàng)目的結(jié)果和最終結(jié)論。

每個(gè)項(xiàng)目都強(qiáng)調(diào)了特征工程自動化的一些好處:

貸款償還能力預(yù)測:與人工特征工程相比克伊,自動化的特征工程可以將機(jī)器學(xué)習(xí)開發(fā)的時(shí)間縮短10倍酥郭,同時(shí)提供更好的建模性能表現(xiàn);(筆記

消費(fèi)支出預(yù)測:自動化的特征工程通過內(nèi)部的處理時(shí)間序列過濾器來創(chuàng)建有實(shí)際意義的特征愿吹,同時(shí)防止數(shù)據(jù)泄漏不从,從而實(shí)現(xiàn)成功的模型部署;(筆記

特征工程:人工與自動

特征工程是獲取數(shù)據(jù)集并構(gòu)造可解釋的變量—特征的過程犁跪,用于訓(xùn)練預(yù)測問題的機(jī)器學(xué)習(xí)模型椿息。通常歹袁,數(shù)據(jù)分布在多個(gè)表中,并且必須匯集到一個(gè)表之中寝优,其中的行包含觀察結(jié)果和列中的特征条舔。

傳統(tǒng)的特征工程方法是使用相關(guān)領(lǐng)域知識創(chuàng)建一個(gè)特征,這是一個(gè)冗長倡勇、耗時(shí)且容易出錯(cuò)的過程逞刷,稱為人工特征工程。人工特征工程是依賴于具體問題的妻熊,必須為每個(gè)新數(shù)據(jù)集重新編寫代碼夸浅。

特征工程自動化通過自動從一組相關(guān)的數(shù)據(jù)表中提取有用且有意義的特征,并使用一個(gè)可應(yīng)用于任何問題的框架扔役,來改進(jìn)這個(gè)標(biāo)準(zhǔn)工作流帆喇。它不僅減少了在特征工程上花費(fèi)的時(shí)間,而且還創(chuàng)建了可解釋的特征亿胸,并通過過濾具有時(shí)間依賴性的數(shù)據(jù)來防止數(shù)據(jù)泄漏坯钦。

貸款償還:建立更快更好的模型

當(dāng)數(shù)據(jù)科學(xué)家在處理家庭信貸貸款問題的時(shí)候,所面臨的主要難題是數(shù)據(jù)的大小和分布侈玄⊥竦叮看看完整的數(shù)據(jù)集,你會發(fā)現(xiàn)面對的是分布在7個(gè)表中的5800萬行數(shù)據(jù)序仙。

特征工程需要將一組相關(guān)表中的所有信息放到一個(gè)表中

我曾經(jīng)使用傳統(tǒng)的人工特征工程花了10個(gè)小時(shí)創(chuàng)建了一組特征突颊。首先,我查閱了其他數(shù)據(jù)科學(xué)家的成果潘悼,還查看了相關(guān)的數(shù)據(jù)律秃,并研究了問題域,以獲得必要的相關(guān)領(lǐng)域知識治唤。然后我將這些知識翻譯成代碼棒动,一次創(chuàng)建一個(gè)特征。作為單一的人工特征的一個(gè)例子宾添,我找到了客戶以前貸款的逾期還款總數(shù),這一操作需要用到3個(gè)不同的表辞槐。

最終人工設(shè)計(jì)的特征表現(xiàn)的相當(dāng)好掷漱,比基線特征提高了65%,表明了正確特征設(shè)計(jì)的重要性鹿榜。

然而海雪,效率卻非常低下锦爵。對于人工特征工程,我最終花了超過15分鐘來完成每個(gè)特征奥裸,因?yàn)槲沂褂脗鹘y(tǒng)的方法一次生成一個(gè)特性险掀。

人工特征工程過程

除了單調(diào)乏味和耗時(shí)之外,人工特征工程還有以下問題:

用于特定問題:我花費(fèi)了很長時(shí)間編寫的代碼并不能應(yīng)用于任何其它的問題湾宙;

易錯(cuò):每一行代碼都會有可能導(dǎo)致其它的錯(cuò)誤樟氢;

另外,最終的人工設(shè)計(jì)的特征受到了人類創(chuàng)造力和耐心方面的限制:我們只能考慮創(chuàng)建這么多的特征侠鳄,并且只能花費(fèi)這么多的時(shí)間埠啃。

特征工程自動化的承諾是通過獲取一組相關(guān)的表,并使用可以應(yīng)用于所有問題的代碼伟恶,來自動創(chuàng)建數(shù)以百計(jì)有用的特征碴开,進(jìn)而跨越這些限制。

從人工到自動化特征工程

特征工程自動化甚至允許像我這樣的新手博秫,在一組相關(guān)的數(shù)據(jù)表中可以創(chuàng)建數(shù)以千計(jì)的相關(guān)特征潦牛。我們只需要知道表的基本結(jié)構(gòu)以及它們之間的關(guān)系,我們在一個(gè)稱為實(shí)體集的單一數(shù)據(jù)結(jié)構(gòu)中來跟蹤它們挡育。一旦我們有了一個(gè)實(shí)體集巴碗,使用一個(gè)稱為深度特征合成(Deep Feature Synthesis,DFS)的方法即寒,我們就能夠在一個(gè)函數(shù)調(diào)用中創(chuàng)建數(shù)以千計(jì)的特征了良价。

使用FeatureTools的特征工程自動化過程

DFS使用稱為“primitives”的函數(shù)來進(jìn)行聚合和轉(zhuǎn)換數(shù)據(jù)。這些primitives可以簡單到僅獲取一個(gè)平均值或列的最大值蒿叠,也可以復(fù)雜到基于主題的專業(yè)知識,因?yàn)镕eatureTools允許我們定義自己的primitives蚣常。

特征primitives包括許多人工操作市咽,但是通過使用FeatureTools,我們可以在任何關(guān)系數(shù)據(jù)庫中使用相同準(zhǔn)確的語法抵蚊,而不是再重新編寫代碼并在不同的數(shù)據(jù)集中使用相同的操作施绎。此外,當(dāng)我們將primitives相互堆疊在一起來創(chuàng)建深層次的特征時(shí)贞绳,DFS的威力就來了谷醉。

深度特征合成是靈活的,它被允許應(yīng)用于任何數(shù)據(jù)科學(xué)領(lǐng)域的問題冈闭。它同時(shí)也是很強(qiáng)大的俱尼,通過創(chuàng)建深度特征來揭示我們對數(shù)據(jù)的推斷。

我會為你省去環(huán)境設(shè)置所需的幾行代碼萎攒,但DFS只在一行中運(yùn)行遇八。在這里矛绘,我們使用數(shù)據(jù)集中的所有7個(gè)表為每個(gè)客戶生成數(shù)千個(gè)特征:

# Deep feature synthesisfeature_matrix, features = ft.dfs(entityset=es,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? target_entity='clients',? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? agg_primitives = agg_primitives,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? trans_primitives = trans_primitives)

下面是我們自動從FeatureTools獲得的1820個(gè)特征中的一部分:

客戶以前貸款的最高總額。這是在3個(gè)表中使用1個(gè)MAX 和1個(gè)SUM 的primitive得來的刃永;

客戶以前的信用卡平均債務(wù)的百分比排名货矮,這在兩個(gè)表中使用了百分比(PERCENTILE)和平均值(MEAN)的primitive;

在申請過程中斯够,客戶是否提交了兩份文件囚玫,這將使用1個(gè)AND 轉(zhuǎn)換primitive和1個(gè)表;

這些特征中的任何一個(gè)都是用簡單的聚合創(chuàng)建的读规。FeatureTools創(chuàng)建了許多與我手工創(chuàng)建的相同的特征抓督,但也有數(shù)千個(gè)是我從未考慮過的。并不是每一個(gè)特征都與問題相關(guān)掖桦,有些特征是高度相關(guān)的本昏,然而,擁有太多的特征是一個(gè)比擁有太少的特征更好解決的問題枪汪。

在進(jìn)行了一些功能選擇和模型優(yōu)化之后涌穆,與人工特征相比,預(yù)測模型中的這些特征要稍好一些雀久,總體開發(fā)時(shí)間為1小時(shí)宿稀,與人工的過程相比減少了10倍。FeatureTools速度更快赖捌,這是因?yàn)樗枰念I(lǐng)域知識更少祝沸,而且要編寫的代碼行也少的相當(dāng)多。

我承認(rèn)學(xué)習(xí)Featuretools需要一點(diǎn)時(shí)間成本越庇,但這是一項(xiàng)有回報(bào)的投資罩锐。在花了一個(gè)小時(shí)左右的時(shí)間學(xué)習(xí)Featuretools之后,你就可以將其應(yīng)用于任何機(jī)器學(xué)習(xí)問題了卤唉。

以下的圖表總結(jié)了我在貸款償還問題上的經(jīng)驗(yàn):

自動和人工特征工程按時(shí)間涩惑、特征的數(shù)量和性能之間的比較

開發(fā)時(shí)間:10小時(shí)人工與1小時(shí)自動;

該方法創(chuàng)建的特征數(shù)量:30個(gè)人工特征與1820個(gè)自動特征桑驱;

相對于基線提高了的百分比是:65% 人工 vs 66% 自動

我的結(jié)論是竭恬,特征工程自動化不會取代數(shù)據(jù)科學(xué)家,而是通過顯著地提高效率熬的,使他們在機(jī)器學(xué)習(xí)的其它方面可以花費(fèi)更多的時(shí)間痊硕。

另外,我為第一個(gè)項(xiàng)目編寫的Featuretools代碼可以應(yīng)用于任何數(shù)據(jù)集押框,而人工工程的代碼則沒法再利用岔绸。

消費(fèi)支出:創(chuàng)建有意義的特征并防止數(shù)據(jù)泄漏

第二個(gè)數(shù)據(jù)集,在線時(shí)間戳的客戶交易記錄,預(yù)測問題是將客戶分為兩個(gè)部分亭螟,消費(fèi)超過500美元的客戶和消費(fèi)不會超過500美元的客戶挡鞍。但是,不是對所有標(biāo)簽使用一個(gè)月预烙,而是每個(gè)客戶多次使用一個(gè)標(biāo)簽墨微。我們可以把他們5月份的消費(fèi)支出作為一個(gè)標(biāo)簽,然后6月份的扁掸,等等翘县。

客戶被多次用作訓(xùn)練示例

在部署中,我們永遠(yuǎn)不會有未來的數(shù)據(jù)谴分,因此無法將其用于訓(xùn)練模型锈麸。企業(yè)通常會遇到這個(gè)問題,并且經(jīng)常部署一個(gè)在實(shí)際應(yīng)用中比在開發(fā)中更糟糕的模型牺蹄,因?yàn)檫@是使用無效的數(shù)據(jù)來進(jìn)行訓(xùn)練的忘伞。

幸運(yùn)的是,要確保我們的數(shù)據(jù)在時(shí)間序列問題中是有效的沙兰,這在FeatureTools中很簡單氓奈。在深度特征合成函數(shù)中,我們傳遞一個(gè)如上圖所示的dataframe鼎天,其中截止時(shí)間表示我們不能使用任何標(biāo)簽數(shù)據(jù)中過去的時(shí)間點(diǎn)舀奶,F(xiàn)eatureTools在創(chuàng)建特征時(shí)會自動考慮時(shí)間。

客戶在指定月份的特征是使用過濾到該月份之前的數(shù)據(jù)來創(chuàng)建的斋射。請注意育勺,用于創(chuàng)建特征集的調(diào)用與添加截止時(shí)間的貸款償還問題的調(diào)用相同。

# Deep feature synthesisfeature_matrix, features = ft.dfs(entityset=es,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? target_entity='customers',? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? agg_primitives = agg_primitives,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? trans_primitives = trans_primitives,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cutoff_time = cutoff_times)

執(zhí)行深度特征合成的結(jié)果是一個(gè)特征表罗岖,每個(gè)客戶一個(gè)月一個(gè)涧至。我們可以使用這些特征來訓(xùn)練一個(gè)帶有標(biāo)簽的模型,然后可以對任何月份進(jìn)行預(yù)測桑包。此外化借,我們可以放心,模型中的特征不會使用導(dǎo)致不公平優(yōu)勢的未來信息捡多,并產(chǎn)生誤導(dǎo)訓(xùn)練的分?jǐn)?shù)。

有了自動化特征铐炫,我能夠創(chuàng)建一個(gè)機(jī)器學(xué)習(xí)模型垒手,在預(yù)測一個(gè)月內(nèi)客戶消費(fèi)支出類別的時(shí)候,與已知為0.69的基線相比倒信,ROC AUC達(dá)到0.90科贬。

除了提供令人印象深刻的預(yù)測能力之外,F(xiàn)eatureTools的實(shí)現(xiàn)還為我提供了一些同樣有價(jià)值的東西:可解釋的特征“裾疲看一下隨機(jī)森林模型中的15個(gè)最重要的特征:

15個(gè)來自隨機(jī)森林模型的最重要的特征

特征的重要性告訴我們优妙,預(yù)測客戶將在下個(gè)月花多少錢的最重要素是他們之前花了多少錢SUM,以及購物的數(shù)量SUM憎账。這些是可以手工創(chuàng)建的特征套硼,但是我們不得不擔(dān)心數(shù)據(jù)泄漏的問題,并創(chuàng)建在開發(fā)中比部署中效果要好的模型胞皱。

如果可以創(chuàng)建有意義的特征工具已經(jīng)存在了邪意,而無需擔(dān)心任何特征的有效性,那么為什么要人工實(shí)現(xiàn)呢反砌?另外雾鬼,自動化特征在問題的上下文中是完全明確的,并且可以為我們的實(shí)際推理提供信息宴树。

自動化特征工程識別出最重要的信號策菜,實(shí)現(xiàn)了數(shù)據(jù)科學(xué)的主要目標(biāo):揭示隱藏在海量數(shù)據(jù)中的規(guī)律。

即使在人工特征工程上花費(fèi)的時(shí)間比我用FeatureTools花的時(shí)間多得多酒贬,那么我也無法開發(fā)出一組性能表現(xiàn)接近的特征又憨。下圖顯示了使用在兩個(gè)數(shù)據(jù)集上訓(xùn)練的模型對未來一個(gè)月的客戶銷售情況進(jìn)行分類的ROC曲線。左上方的曲線表示更準(zhǔn)確的預(yù)測:

比較自動的和人工的特征工程結(jié)果的ROC曲線同衣,左側(cè)和頂部的曲線表示其性能表現(xiàn)更好竟块。

我甚至不能完全確定人工特征是否使用了有效的數(shù)據(jù),但是通過FeatureTools我不必?fù)?dān)心時(shí)間依賴性問題中的數(shù)據(jù)泄漏耐齐。

我們在日常生活中使用自動安全系統(tǒng)浪秘,F(xiàn)eaturetools中的特征工程自動化是在時(shí)間序列問題中創(chuàng)建有意義的機(jī)器學(xué)習(xí)特征的安全方法,同時(shí)提供了卓越的預(yù)測性能表現(xiàn)埠况。

結(jié)論

我經(jīng)過了這些項(xiàng)目之后耸携,確信特征工程自動化應(yīng)該是機(jī)器學(xué)習(xí)工作流程中不可或缺的一部分。這項(xiàng)技術(shù)并不完美辕翰,但依舊能顯著地提高效率夺衍。

主要的結(jié)論就是特征工程自動化:

將執(zhí)行時(shí)間縮短了10倍;

在同一級別或更高級別上實(shí)現(xiàn)的建模性能喜命;

交付的具有實(shí)際意義的可解釋性特征沟沙;

防止使用不正確的數(shù)據(jù)而導(dǎo)致的模型無效;

適應(yīng)現(xiàn)有的工作流程和機(jī)器學(xué)習(xí)模型壁榕;

本文作者:【方向】

作者:阿里云云棲社區(qū)

鏈接:http://www.reibang.com/p/4a51424d27fe

來源:簡書

簡書著作權(quán)歸作者所有矛紫,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牌里,一起剝皮案震驚了整個(gè)濱河市颊咬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖喳篇,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敞临,死亡現(xiàn)場離奇詭異,居然都是意外死亡麸澜,警方通過查閱死者的電腦和手機(jī)挺尿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痰憎,“玉大人票髓,你說我怎么就攤上這事∠吃牛” “怎么了洽沟?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蜗细。 經(jīng)常有香客問我裆操,道長,這世上最難降的妖魔是什么炉媒? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任踪区,我火速辦了婚禮,結(jié)果婚禮上吊骤,老公的妹妹穿的比我還像新娘缎岗。我一直安慰自己,他們只是感情好白粉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布传泊。 她就那樣靜靜地躺著,像睡著了一般鸭巴。 火紅的嫁衣襯著肌膚如雪眷细。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天鹃祖,我揣著相機(jī)與錄音溪椎,去河邊找鬼。 笑死恬口,一個(gè)胖子當(dāng)著我的面吹牛校读,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祖能,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼地熄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芯杀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揭厚,沒想到半個(gè)月后却特,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筛圆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年裂明,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片太援。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闽晦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出提岔,到底是詐尸還是另有隱情仙蛉,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布碱蒙,位于F島的核電站荠瘪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赛惩。R本人自食惡果不足惜哀墓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喷兼。 院中可真熱鬧篮绰,春花似錦、人聲如沸季惯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽星瘾。三九已至走孽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琳状,已是汗流浹背磕瓷。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留念逞,地道東北人困食。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像翎承,于是被迫代替她去往敵國和親硕盹。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容