小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

為什么說自動化特征工程將改變機器學習的方式

 Greatguy瑞 2019-02-12


大數(shù)據(jù)文摘出品

文章來源:towardsdatascience

編譯:籍緩、毅航、ZoeY、蔣寶尚


沒有什么是一成不變的,尤其是在數(shù)據(jù)科學領域。畢竟,一些庫、算法、工具一直在更新迭代。


然而,一個永遠不會消失的趨勢就是提高自動化水平。


近年來在自動化模型選擇和超參數(shù)調(diào)整方面已經(jīng)取得了進展,但機器學習流程中最重要的一點,特征工程,在很大程度上卻被忽略了。這個關鍵領域中最好的入口是Featuretools(一個開源Python庫)。在本文中,我們將使用此庫來了解自動化特征工程如何改變機器學習的方式。


Featuretools:

https://docs./#minute-quick-start


Featuretools是一個用于自動化特征工程的開源Python庫。


自動化特征工程是一種相對較新的技術,但在應用它來解決大量的基于真實數(shù)據(jù)集的數(shù)據(jù)科學問題后,我們確信它應該是任何機器學習工作的標準流程的一部分。在本文,我們將說說其中兩個項目的結果和結論,并在GitHub上以Jupyter Notebooks格式提供完整代碼。


代碼鏈接:

https://github.com/Featuretools/Automated-Manual-Comparison


每個項目都強調(diào)了自動化特征工程的一些優(yōu)點:

  • 貸款還款預測:與手動特征工程相比,自動化特征工程可將機器學習的開發(fā)時間縮短10倍,同時提供更好的建模性能。

    https://github.com/Featuretools/Automated-Manual-Comparison/tree/master/Loan%20Repayment

  • 零售支出預測:自動化特征工程通過內(nèi)部處理時間序列篩選器來創(chuàng)建有意義的特征并防止數(shù)據(jù)泄漏,從而成功部署模型。

    https://github.com/Featuretools/Automated-Manual-Comparison/tree/master/Retail%20Spending

特征工程:手動與自動化


特征工程是獲取數(shù)據(jù)集和構建解釋變量,即,那些可以用來訓練預測問題中的機器學習模型的“特征”的過程。通常,數(shù)據(jù)分布在多個表中,我們須要將它們整合到一個表中,并將各個特征作為列標題,將相應的觀察值填充到各行。


傳統(tǒng)的特征工程方法使用領域知識一次僅構建一個特征,這是一個繁瑣、耗時且容易出錯的過程,我們稱為手動特征工程。手動特征工程的代碼與問題有關,必須為每個新數(shù)據(jù)集重寫。


自動化特征工程使用一種適用于任何問題的框架,從一組相關數(shù)據(jù)表中自動提取有用且有意義的特征,改進了傳統(tǒng)手工特征工程的標準流程。它不僅減少了特征工程所花費的時間,還創(chuàng)建了可解釋的特征,并通過過濾與時間相關的數(shù)據(jù)來防止數(shù)據(jù)泄漏。


自動化特征工程比手動特征工程更高效,可重復性更高,使你能夠更快地構建更好的預測模型。


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


數(shù)據(jù)科學家面臨的家庭信貸貸款問題的主要困難(目前在Kaggle上運行的機器學習競賽,目標是預測客戶是否能夠償還貸款)是數(shù)據(jù)的大小和傳播。全部數(shù)據(jù)分散在七個表中的5800萬行中。 機器學習需要一個單獨的表進行訓練,因此特征工程意味著在一個表中合并每個客戶的所有信息。


特征工程需要將一組相關表中的所有信息合并到一個表中


我們首先嘗試了使用傳統(tǒng)的手動特征工程解決這個問題:總共花了10個小時,手工創(chuàng)建了一組特征。 首先,閱讀了其他數(shù)據(jù)科學家的文章,探索數(shù)據(jù),并研究問題所在的領域,以獲得必要的領域知識。 然后將知識翻譯成代碼,一次構建一個特征。 作為單個手動特征的一個示例,找到了客戶對之前貸款的出現(xiàn)延遲付款的總次數(shù),這項操作需要使用3個不同的表格。


最終的手工設計的特征工程表現(xiàn)相當不錯,比基線特征(相對于最高排行榜得分)提高了65%,表明了正確的特征工程的重要性。


然而,“效率低下”都不足以形容這個過程的低效。 對于手動特征工程,我最終每個特征花費超過15分鐘,因為我使用的是傳統(tǒng)方法,一次只能建立一個特征。

手動特征工程過程


除了繁瑣耗時外,手動特征工程還包括:

  • 特定問題:我寫了幾個小時的所有代碼都不能應用于任何其他問題

  • 容易出錯:每行代碼都有犯錯誤的可能


此外,最終的手工設計特征受到人類創(chuàng)造力和耐心的限制:我們只能建立能想到的特征,而且能用來建立特征的時間也是有限的。


自動化特征工程的意義是通過在一組相關表中使用可應用于所有問題的代碼,自動構建數(shù)百個有用特征,來超越這些限制。


從手動到自動特征工程


正如Featuretools中實現(xiàn)的那樣,自動化特征工程讓新手都可以從一組相關數(shù)據(jù)表中創(chuàng)建數(shù)千個相關特征。我們只需要知道我們表的基本結構以及它們之間的關系,我們在稱為實體集的單個數(shù)據(jù)結構中跟蹤它們。一旦我們有一個實體集,便使用一個名為深度特征合成(DFS)的方法,我們就能夠在一次函數(shù)調(diào)用中構建數(shù)千個特征。


使用Featuretools的自動化特征工程流程


DFS使用被稱為“基元(primitives)”的函數(shù)來聚合和轉換我們的數(shù)據(jù)。這些基元(primitives)可以像獲取列的平均值或最大值一樣簡單,或者它們可以是復雜的并且基于專業(yè)知識的,因為Featuretools允許我們定義我們自己的自定義基元。


特征基元(primitives)包括我們已經(jīng)手動完成的許多操作,但是使用Featuretools,我們可以在任何關系數(shù)據(jù)庫中使用相同的確切語法,而不是重寫代碼以將這些操作應用于不同的數(shù)據(jù)集。此外,當我們將基元堆疊在一起以創(chuàng)建深層特征時,DFS的強大更加得以顯現(xiàn)。


有關DFS技術發(fā)明人之一的博客文章:

https://blog./deep-feature-synthesis/


深度特征合成是靈活的(這也是它在數(shù)據(jù)科學問題領域被廣泛使用的主要原因)、功能強大的(通過創(chuàng)建深層特征來揭示我們數(shù)據(jù)的見解)。


我將為你提供設置所需的幾行代碼,但DFS的操作只需一行。在這里,我們使用數(shù)據(jù)集中的所有7個表為每個客戶端創(chuàng)建數(shù)千個特征(ft是導入的featuretools庫):


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


以下是我們從Featuretools自動獲得的1820個特征中的一些:

客戶以前支付的最高貸款總額。這是在3個表中使用MAX和SUM基元(primitives)創(chuàng)建的。

  • 客戶先前信用卡債務平均數(shù)的百分位排名。這是在2個表中使用PERCENTILE和MEAN基元(primitives)創(chuàng)建的。

  • 客戶是否在申請過程中提交了兩份文件。 這使用AND轉換基元(primitives)和1個表。


這些特征中的每一個都是使用簡單的聚合構建的,因此是可解釋的。Featuretools創(chuàng)建了許多與我手動構建的相同的特征,但也有成千上萬的我從未想過或沒有時間完成的特征。并非每一個特征都與問題相關,而且某些特征之間相似度很高,但是特征太多總比特征太少要好!


經(jīng)過一些特征選擇和模型優(yōu)化后,與手動特征相比,這些特征在預測模型中略勝一籌,整個模型開發(fā)時間為1小時,與手動過程相比減少了10倍。Featuretools要快得多,因為它需要更少的領域知識和明顯更少的代碼。


我承認學習Featuretools需要花費一些時間,但這是一項可以帶來回報的投資?;艘粋€小時左右來學習Featuretools后,你可以將其應用于任何機器學習問題。


以下圖表總結了我對貸款償還問題的經(jīng)驗:



自動和手動進行特征工程的耗時、特征數(shù)量和性能之間的比較。

  • 開發(fā)時間:完成特征工程代碼耗時:手動10小時,自動1小時

  • 該方法生成的特征數(shù)量:30個手動特征與1820個自動特征

  • 相對于基線的改善,即,使用受過特征訓練的模型與公共排行榜最高得分相比的增益百分比:65%(手動結果)v.s.66%(自動化結果)


我的想法是,自動化特征工程不會取代數(shù)據(jù)科學家,而是通過顯著提高效率,使數(shù)據(jù)科學家們可以將更多時間花在機器學習流程的其它方面。


此外,我為第一個項目編寫的Featuretools代碼可以應用于任何數(shù)據(jù)集,而手動的特征代碼必須被丟棄,并為下一個數(shù)據(jù)集完全重寫!


零售支出:構建有意義的特征并防止數(shù)據(jù)泄漏


對于第二個數(shù)據(jù)集,即在線時間戳客戶交易的記錄,預測任務是將客戶分為兩個部分,即下個月花費超過500美元的人和不會花費超過500美元的人。


但是,相對于僅使用所有客戶一個月的數(shù)據(jù),我們的做法是將每個客戶多次標記。我們可以將他們在5月份的支出用作一個標簽,然后是6月份支出,依此類推。


每個客戶多次被用作訓練樣本


多次使用每個客戶作為觀察變量會給創(chuàng)建訓練集造成困難:在為特定月份的客戶制作特征時,即使我們可以訪問這些數(shù)據(jù),我們也不能使用未來幾個月的任何信息。


在實際中,我們永遠不會有未來的數(shù)據(jù),因此不能用它來訓練模型。很多公司都在這個問題上掙扎,因為部署的模型是使用無效數(shù)據(jù)訓練的,所以在現(xiàn)實世界中的表現(xiàn)要比在開發(fā)中糟糕很多。


幸運的是,如果使用Featuretools,那么確保時間序列問題中的數(shù)據(jù)有效性將變得很簡單。在深度特征合成功能中,我們設置了一個如上所示的數(shù)據(jù)框,其中中止時間表示我們不能使用任何數(shù)據(jù)作為標簽的點,并且Featuretools在構建特征時自動將時間考慮在內(nèi)。


指定月份的客戶特征是利用指定月份之前的數(shù)據(jù)構建的。請注意,除了添加了中止時間,這個創(chuàng)建特征集的過程與貸款還款問題的過程相同。


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


運行DFS的結果是一個特征表,每個客戶每月有一個特征。我們可以使用這些特征來訓練帶有我們標簽的模型,然后對任何月份進行預測。此外,我們可以放心,我們模型中的特征不會使用未來的信息,否則會導致不公平的優(yōu)勢并產(chǎn)生誤導性的訓練分數(shù)。


使用自動化特征,在預測客戶月支出類別時,我能夠建立一個機器學習模型,與已知的基線0.69(猜測與上個月相同的支出水平)相比,它可以達到UOC (Roc曲線下的面積)= 0.90。


除了提供令人印象深刻的預測性能之外,F(xiàn)eaturetools的實現(xiàn)還給了我同樣有價值的東西:可解釋的特征??纯措S機森林模型中15個最重要的特征:


15個隨機森林模型中最重要的Featuretools特征


特征重要性告訴我們,客戶之前花費了多少SUM(purchases.total),以及購買數(shù)量SUM(purchases.quantity)是預測他們將在下個月花多少錢的最重要的預測因素。這些是我們可以手工構建的特征,但是我們將不得不擔心泄漏數(shù)據(jù)并創(chuàng)建一個在開發(fā)方面比在部署方面做得更好的模型。


如果已經(jīng)有了為創(chuàng)建有意義的特征而存在的工具而且無需擔心這些特征的有效性,那么為什么要手動?此外,自動化特征是簡明易懂的,并且可以告訴我們實際中的推理過程。


自動化特征工程確定了最重要的信號,實現(xiàn)了數(shù)據(jù)科學的主要目標:揭示隱藏在大量數(shù)據(jù)中的真理。


即使花在手動特征工程上的時間比使用Featuretools花費的時間多得多,我也無法開發(fā)出一組性能接近的特征。下圖顯示了在兩個數(shù)據(jù)集上訓練的模型對未來一個月的客戶銷售進行分類的ROC曲線。曲線越往左上偏說明預測能力越好:


ROC曲線比較了自動和手動特征工程結果。往左上偏的曲線表示更好的性能。


甚至不確定手動特征是否是使用有效數(shù)據(jù)制作的,但是使用Featuretools,不必擔心時間依賴問題中的數(shù)據(jù)泄漏。也許在手動設計有效特征方面的無能說明我作為數(shù)據(jù)科學家挺失敗的,但如果有工具能夠安全地為我們做到這一點,何樂而不為呢?


我們在日常生活中使用自動安全系統(tǒng),F(xiàn)eaturetools中的自動化特征工程是在時間序列問題中構建有意義的機器學習特征同時提供卓越預測性能的安全保障方法。


結論


這些項目讓我確信自動化特征工程應該是機器學習工作流程中不可或缺的一部分。該技術并不完美,但仍可顯著提高效率。


自動化特征工程的主要結論:

  • 實施時間縮短10倍

  • 實現(xiàn)相同水平或更好地建模表現(xiàn)

  • 交付具有現(xiàn)實意義的可解釋特征

  • 防止數(shù)據(jù)使用不當,使模型失效

  • 適應現(xiàn)有的工作流和機器學習模型


“工作更聰明,而不是更努力”可能是陳詞濫調(diào),但有時候陳詞濫調(diào)有道理:如果有一種方法可以在較小的時間投入中以相同的表現(xiàn)完成相同的工作,那么顯然這是一種值得學習的方法。


相關報道:

https:///why-automated-feature-engineering-will-change-the-way-you-do-machine-learning-5c15bf188b96


志愿者介紹

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多