Auto-ML之自動化特徵工程

2021-02-13 機器學習AI算法工程


向AI轉型的程式設計師都關注了這個號👇👇👇

機器學習AI算法工程  公眾號: datayx

1. 引言

機器學習是朝著更高的易用性、更低的技術門檻、更敏捷的開發成本的方向去發展,且Auto-ML或者Auto-DL的發展無疑是最好的證明。因此花費一些時間學習了解了Auto-ML領域的一些知識,並對Auto-ML中的技術方案進行歸納整理。

眾所周知,一個完整的機器學習項目可概括為如下四個步驟。

其中,特徵工程(提取)往往是決定模型性能的最關鍵一步。而往往機器學習中最耗時的部分也正是特性工程和超參數調優。因此,許多模型由於時間限制而過早地從實驗階段轉移到生產階段從而導致並不是最優的。

AI項目體驗地址 https://loveai.tech

自動化機器學習(AutoML)框架旨在減少算法工程師們的負擔,以便於他們可以在特徵工程和超參數調優上花更少的時間,而在模型設計上花更多的時間進行嘗試。

本文將對Auto-ML中的自動化特徵工程模塊的現狀展開介紹,以下是目前主流的有關AUTO-ML的開源包。


獲取項目代碼

關注微信公眾號 datayx  然後回復 特徵工程 即可獲取。


2. 什麼是自動化特徵工程?

自動化特徵工程旨在通過從數據集中自動創建候選特徵,且從中選擇若干最佳特徵進行訓練的一種方式。

3. 自動化特徵工程工具包3.1 Featuretools

Featuretools使用一種稱為深度特徵合成(Deep Feature Synthesis,DFS)的算法,該算法遍歷通過關係資料庫的模式描述的關係路徑。當DFS遍歷這些路徑時,它通過應用於數據的操作(包括和、平均值和計數)生成綜合特徵。例如,對來自給定欄位client_id的事務列表應用sum操作,並將這些事務聚合到一個列中。儘管這是一個深度操作,但該算法可以遍歷更深層的特徵。Featuretools最大的優點是其可靠性和處理信息洩漏的能力,同時可以用來對時間序列數據進行處理。

例子:

假設有三張表,分別為clients、loans、payments。

clients :有關信用合作社客戶的基本信息表。每個客戶端在此數據框中只有一行。

loans:向客戶提供的貸款表。每筆貸款在此數據框中只有自己的行,但客戶可能有多筆貸款。

payments:貸款償還表。每筆付款只有一行,但每筆貸款都有多筆付款。

以每個client_id為對象構造特徵:

傳統的特徵工程方案是利用Pandas對所需特徵做處理,例如下表中的獲取月份、收入值的對數。

 

同時,也可以通過與loans表關聯獲取新的特徵(每個client平均貸款額度、最大貸款額度等)。

而Featuretools通過基於一種稱為「 深度特徵合成 」的方法,即通過堆疊多個特徵來完成特徵工程。

深度特徵合成堆疊多個轉換和聚合操作(在特徵工具的詞彙中稱為特徵基元),以通過分布在許多表中的數據創建特徵。

Featuretools有兩個主要概念:

首先,需要創建一個存放所有數據表的空實體集對象:

在添加實體和形式化關係之後,entityset就完成了。

需要注意,featuretools 是通過以下兩種操作進行特徵構造:

Aggregations:分組聚合

Transformations:列之間計算

在 featuretools 中,可以使用這些原語自行創建新特性,也可以將多個原語疊加在一起。下面是featuretools中的一些功能原語列表:

此外,我們也可以定義自定義原語,詳見: https://docs.featuretools.com/guides/advanced_custom_primitives.html。

接下來是進行特徵構造,這也是自動化特徵工程中最重要的一步:

3.2 Boruta

Boruta主要是用來進行特徵選擇。所以嚴格意義上,Boruta並不是我們所需要的自動化特徵工程包。

Boruta-py是brouta特徵約簡策略的一種實現,在該策略中,問題以一種完全相關的方式構建,算法保留對模型有顯著貢獻的所有特徵。這與許多特徵約簡算法所應用的最小最優特徵集相反。boruta方法通過創建由目標特徵的隨機重排序值組成的合成特徵來確定特徵的重要性,然後在原始特徵集的基礎上訓練一個簡單的基於樹的分類器,在這個分類器中,目標特徵被合成特徵所替代。所有特性的性能差異用於計算相對重要性。

Boruta函數通過循環的方式評價各變量的重要性,在每一輪迭代中,對原始變量和影子變量進行重要性比較。如果原始變量的重要性顯著高於影子變量的重要性,則認為該原始變量是重要的;如果原始變量的重要性明顯低於影子變量的重要性,則認為該原始變量是不重要的。其中,原始變量就是我們輸入的要進行特徵選擇的變量;影子變量就是根據原始變量生成的變量

生成規則是:

使用python來實現影子特徵,類似於:

下面是Boruta算法運行的步驟:

首先,它通過創建混合數據的所有特徵(即影子特徵)為給定的數據集增加了隨機性。

然後,它訓練一個隨機森林分類的擴展數據集,並採用一個特徵重要性措施(默認設定為平均減少精度),以評估的每個特徵的重要性,越高則意味著越重要。

在每次迭代中,它檢查一個真實特徵是否比最好的影子特徵具有更高的重要性(即該特徵是否比最大的影子特徵得分更高)並且不斷刪除它視為非常不重要的特徵。

最後,當所有特徵得到確認或拒絕,或算法達到隨機森林運行的一個規定的限制時,算法停止。

3.3 tsfresh

tsfresh是基於可伸縮假設檢驗的時間序列特徵提取工具。該包包含多種特徵提取方法和魯棒特徵選擇算法。

tsfresh可以自動地從時間序列中提取100多個特徵。這些特徵描述了時間序列的基本特徵,如峰值數量、平均值或最大值,或更複雜的特徵,如時間反轉對稱性統計量等。

 

這組特徵可以用來在時間序列上構建統計或機器學習模型,例如在回歸或分類任務中使用。

時間序列通常包含噪聲、冗餘或無關信息。因此,大部分提取出來的特徵對當前的機器學習任務沒有用處。為了避免提取不相關的特性,tsfresh包有一個內置的過濾過程。這個過濾過程評估每個特徵對於手頭的回歸或分類任務的解釋能力和重要性。它建立在完善的假設檢驗理論的基礎上,採用了多種檢驗方法。

需要注意的是,在使用tsfresh提取特徵時,需要提前把結構進行轉換,一般上需轉換為(None,2)的結構,例如下圖所示:

例子:

此外,對於進行時間序列特徵工程後的數據集進行特徵選擇,進一步提高模型指標。

這裡,可以利用tsfresh.select_features方法進行特徵選擇,然而由於其僅適用於二進位分類或回歸任務,所以對於6個標籤的多分類,我們將多分類問題轉換為6個二元分類問題,故對於每一種分類,都可以通過二分類進行特徵選擇:

注意:在Windows開發環境下,會拋出「The "freeze_support()" line can be omitted if the program is not going to be frozen to produce an executable.」多進程的錯誤,導致無限循環,解決方法是在代碼執行時引入」 if __name__ == '__main__』:「 。可參考: https://github.com/blue-yonder/tsfresh/issues/185 。

以下是分別使用tsfresh進行特徵工程、未進行特徵工程以及使用tsfresh進行特徵工程+特徵選擇後的模型效果:


4. 總結

自動化特徵工程解決了特徵構造的問題,但同時也產生了另一個問題:在數據量一定的前提下,由於產生過多的特徵,往往需要進行相應的特徵選擇以避免模型性能的降低。事實上,要保證模型性能,其所需的數據量級需要隨著特徵的數量呈指數級增長。

https://www.cnblogs.com/wkang/p/10380500.html

閱讀過本文的人還看了以下:

分享《深度學習入門:基於Python的理論與實現》高清中文版PDF+原始碼

《21個項目玩轉深度學習:基於TensorFlow的實踐詳解》完整版PDF+附書代碼

《深度學習之pytorch》pdf+附書源碼

將機器學習模型部署為REST API

FashionAI服裝屬性標籤圖像識別Top1-5方案分享

重要開源!CNN-RNN-CTC 實現手寫漢字識別

yolo3 檢測出圖像中的不規則漢字

同樣是機器學習算法工程師,你的面試為什麼過不了?

前海徵信大數據算法:風險概率預測

【Keras】完整實現『交通標誌』分類、『票據』分類兩個項目,讓你掌握深度學習圖像分類

VGG16遷移學習,實現醫學圖像識別分類工程項目

特徵工程(一)

特徵工程(二) :文本數據的展開、過濾和分塊

特徵工程(三):特徵縮放,從詞袋到 TF-IDF

特徵工程(四): 類別特徵

特徵工程(五): PCA 降維

特徵工程(六): 非線性特徵提取和模型堆疊

特徵工程(七):圖像特徵提取和深度學習

如何利用全新的決策樹集成級聯結構gcForest做特徵工程並打分?

Machine Learning Yearning 中文翻譯稿

螞蟻金服2018秋招-算法工程師(共四面)通過

全球AI挑戰-場景分類的比賽源碼(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(列印收藏)

python+flask搭建CNN在線識別手寫中文網站

中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特徵工程

不斷更新資源

深度學習、機器學習、數據分析、python

 搜索公眾號添加: datayx  

長按圖片,識別二維碼,點關注

AI項目體驗

https://loveai.tech

相關焦點

  • Auto Machine Learning 自動化機器學習筆記
    在機器學習中的分類模型中:常規 ML framework 如下圖灰色部分:導入數據-數據清洗-特徵工程-分類器-輸出預測值auto部分如下圖綠色方框:在ML framework 左邊新增 meta-learning,在右邊新增 build-ensemble,對於調超參數,用的是貝葉斯優化
  • 特徵工程是啥東東?為何需要實現自動化?
    而特徵工作的關鍵是找到假設的最佳組合。特徵工程至關重要,因為如果我們提供錯誤的假設作為輸入,ML無法做出準確的預測。任何提供的假設的質量對於ML模型的成功而言至關重要。從準確性和可解釋性的角度出發,特徵質量至關重要。為何特徵工程需要實現自動化?
  • 如何高效快速準確地完成ML任務,這4個AutoML庫了解一下
    數據預處理、特徵工程、特徵提取和特徵選擇等任務皆可通過 AutoML 自動構建。在本文中,作者詳細介紹了四種自動化的 ML 工具包,分別是 auto-sklearn、TPOT、HyperOpt 以及 AutoKeras。如果你對 AutoML 感興趣,這四個 Python 庫是最好的選擇。作者還在文章結尾文章對這四個工具包進行了比較。
  • 面向Kaggle 和離線比賽實用工具庫 nyaggle,解決特徵工程與驗證兩...
    在 GitHub 上,作者 Nomi(專注於計算機視覺與嵌入式技術,也是 tiny-dnn 的原作者)向我們介紹了一個面向 kaggle 數據科學和離線競賽的實用工具庫 nyaggle,可供開發者專用於特徵工程與驗證。
  • 如何高效、快速、準確地完成ML任務,這4個AutoML庫了解一下
    數據預處理、特徵工程、特徵提取和特徵選擇等任務皆可通過 AutoML 自動構建。圖源:https://unsplash.com/photos/pjAH2Ax4uWk自動機器學習(Automated Machine Learning, AutoML)是一個新興的領域,在這個領域中,建立機器學習模型來建模數據的過程是自動化的。
  • Pycaret -- 理想的AUTO ML 平臺
    對於最終客戶來說,自動化的機器學習工具
  • 自動化機器學習來幫你!
    不過最耗時的,要數特徵工程和超參數調優,以及模型的上線部署環節。特徵工程的麻煩,參數調優之苦惱,資深的機器學習調包俠和煉丹師們一定早有體會。但是機器學習模型的部署過程難度何在呢?主要在於算法需要針對每個不同的實際場景進行配置和調整,因此經常變動,這使得部署過程也非常耗費人工,效率不高且容易出錯。
  • HyperparameterHunter 3.0:一文教你學會自動化特徵工程
    開發者可以使用這一工具自動化地進行特徵工程。歡迎使用 HyperparameterHunter 3.0。使特徵工程的語法清晰化、可定製的函數列表。構建特徵工程工作流的一致性框架,流程自動記錄。特徵工程步驟優化,包括對過去實驗的檢測,以進行快速啟動優化。
  • 專業篇之電氣工程及自動化
    一、專業概況有「電氣工程師搖籃」之稱的「電氣工程及其自動化」專業,是電氣信息領域的一門新興學科, 也是一門專業性很強的學科,主要研究在工程中如何對電進行管理,內容涉及工程中的供電設計、自動控制、電子技術、運行管理、信息處理與計算機控制等技術。
  • 使用 Auto-sklearn 開啟自動機器學習之旅
    AutoML 之 Auto-sklearn0AutoML 定義首先我們來為自動機器學習 AutoML 下一個定義,定義1 自動機器學習 AutoML: 對於 給定訓練數據集和從與之具有相同數據分布中得出的測試數據集的特徵向量
  • 機器學習|Python實現35種可解釋特徵工程方案
    特徵的挖掘,是一個 算法工程師 or 數據挖掘工程師,最最最基本的能力。實際業務中,許多數時候數據源和建模目標都是確定的,這時候特徵工程幾乎就決定了最終模型的業務效果。即使是表示學習橫行的當下,在風控和推薦系統中依然大量的使用著手工的特徵進行建模。本文將介紹機器學習中的2大類特徵深入挖掘方法(特徵聚合&特徵交叉),以及其中35種特徵衍生方案。
  • 技術衝擊波 | 奪冠神器「深蘭自研Auto ML」在KDD Cup 2019再下一城
    日前,素有「大數據奧運會」之稱的KDD Cup 2019在美國阿拉斯加成功舉行,現場公布了各項競賽結果,深蘭科技DeepBlueAI團隊獲得KDD Cup 2019 AutoML Track挑戰賽第一,並戰勝了新加坡國立大學
  • Windows-UI自動化:如何選擇合適的測試框架
    因此,本篇文章,小編帶領大家認識幾種基於windows系統的UI自動化框架(appium/AirTest/pywinauto),並分析其各自的優劣。相信只要了解過一點UI自動化測試的朋友,一定不會對Appium感到陌生。作為移動端UI自動化界的元老和王者,appium幾乎是所有UI自動化測試和UI自動化框架嵌套的首選。
  • 清華汪玉等電子設計自動化ML論文綜述:180篇文獻、ACM TODAES接收
    論文連結:http://nicsefc.ee.tsinghua.edu.cn/media/publications/2021/TODAES21_331.pdf電子設計自動化 (EDA) 作為應用計算機 / 電子工程的一個重要領域,有著悠久的歷史,並且仍在積極融合前沿算法和技術。
  • 理科生考研熱門專業選擇之電氣工程及其自動化
    電氣工程及其自動化  青睞指數:★★★★☆  畢業生/年:30000—50000人  主要課程  電路理論、電子技術基礎、計算機軟體技術基礎、自動化控制理論、微機原理及其應用、電力電子技術、電機學、電力系統穩態分析
  • 機器人工程:自動化的終極理想
    相同之處在於強調實驗和實踐,強調嵌入式軟體編程,開設課程一般覆蓋統一機器人學(Unified Robotics)涉及的換能、感知、驅動和導航,還有面向智能製造的工業機器人系統課程。」 由於機器人工程專業是個交叉學科,每個學校的行業背景、研究基礎和優勢學科各不相同,培養方案和課程體系也不盡相同,這從機器人工程專業在各校的所屬院系可見一斑。
  • 電氣工程及其自動化
    說在前面:是電氣工程及其自動化,而不是電器工程及其自動化!我們不是修電器的,也不是電工,我們更不會爬電線桿拉電線。你最想看的來了 大的定義:電氣工程及其自動化涉及電力電子技術,計算機技術,電機電器技術,信息與網絡控制技術,機電一體化技術等諸多領域,是一門綜合性較強的學科。
  • Python進行自動化測試綜合介紹
    目前大家對Python都有一個共識,就是他對測試非常有用,自動化測試裡Python用途也很廣,但是Python到底怎麼進行自動化測試呢
  • 2.2w字長文詳解推薦系統之數據與特徵工程,碼起來慢慢看
    具體來說,我們會從推薦算法建模的一般流程、推薦系統依賴的數據源介紹、數據處理與特徵工程簡介、常用推薦算法之數據與特徵工程、推薦系統數據與特徵工程未來趨勢等5個部分來介紹相關知識點,期望本文的講解能夠讓讀者更加深入地理解推薦系統依賴的數據源的特點、數據預處理方法以及基於這些數據之上的特徵工程方法與技巧。