湯姆和傑瑞,第70集(譯者註:直到暑假去了上海Disney,我才知道它和兔八哥、啄木鳥伍迪都和迪士尼木有關係=-=)--按鍵貓(1952)
作者 | Denis Vorotyntsev
譯者 | 呀啦呼
編輯 | 唐里
任何行業,挖掘數據的原因,無外乎是為了利潤。而ML和data viz能幫助公司的決策者低成本的抽絲剝繭降維分析自己的商業需求。
我在多個機器學習競賽中為了融合主要的模型使用了AutoML,並且我參與了兩個AutoML的競賽。我認為AutoML作為使建模過程自動化的一種想法非常出色,但是該領域被過度炒作(overhyped)。一些關鍵概念,例如特徵工程(features engineering)或用於參數優化的元學習(meta-learning),將釋放其潛力,但就目前而言,將封裝的AutoML作為工具只是浪費金錢。
以下所有文本均與表格數據有關。
一、AutoML是嘛玩意?
Data Science projects數據科學項目
任何數據科學項目都包含幾個基本步驟:從業務角度提出問題(選擇成功的任務和度量標準),收集數據(收集,清理,探索),建立模型和評估其性能,在生產環境中部署模型並觀察模型在生產中的表現。
跨行業的數據挖掘標準流程
過程的每個部分對於項目的成功都至關重要。但是,從機器學習的最擅長角度來看,建模部分至關重要,因為完善的ML模型可能會為公司帶來很多價值。
在建模階段,數據科學家正在解決優化任務:使用給定的數據集,目標-最大化所選指標。這個過程很複雜,它需要不同類型的技能:
1. 特徵工程有時被視為藝術,而非科學(譯者:我猜作者表達的是很多時候我們需要直覺或者經驗總結,但是我不同意歸為藝術);
2. 參數優化需要對算法和核心ML概念有深入的了解;
3. 需要軟體工程技能(碼畜們存在的意義)來讓輸出的代碼易於理解、部署。
這就是為啥我們需要AutoML。
ML建模和軟體工程一樣,像是藝術和科學的結合體
AutoML
AutoML的輸入是數據和任務(classification, regression, recommendations等),輸出-生產就緒模型,該模型能夠預測隱藏的數據。數據驅動管道中的每個決定都是一個參數(譯者:鬧不懂作者的意思,有點玄學)。AutoML的基本想法是找到這樣的參數,這些參數可以在合理的時間內給出良好的分數。
AutoML選擇了一種預處理數據的策略:如何處理不平衡的數據;如何處理不平衡的數據;如何填充缺失值;outlier的刪除,替換或保留;如何編碼類別和多類別列;如何避免目標泄漏;如何防止內存錯誤;等等。
AutoML生成很多新的特徵並且選擇當中有意義的;
AutoML自動選擇適合的模型(Linear models, K-Nearest Neighbors, Gradient Boosting, Neural Nets, 等等);
AutoML為選擇的模型進行參數優化(比如tree-based的模型有多少子樹數量和子採樣數, 神經網絡的learning rate和epochs數量
AutoML建立了一個模型集成(譯者:大雜燴,嘛都有)來儘可能的讓模型分數更高。
二、AutoML的動機
AutoML將填補數據科學市場中供需之間的缺口
如今,越來越多的公司要麼開始收集數據,要麼想變現已收集數據的潛力:他們希望從中獲得價值(譯者:作者應該表達的是商業價值)。可是沒有太多具有適當背景的數據科學家可以滿足需求,因此巨大的缺口出現了。AutoML有可能會填補上。
但是這樣的封裝解決方案能給公司帶來任何價值嗎?我認為答案是「否」。
這些公司需要一個過程,但是AutoML只是一個工具。先進的工具無法彌補戰略上的不足。在開始使用AutoML之前,請考慮先找諮詢公司來個項目(譯者:瓜娃子作者是諮詢公司的托吧),這可能首先幫助您制定數據科學策略。大多數AutoML解決方案提供商也提供諮詢服務並不是巧合。
看起來不像是一個完美計劃,對吧(「South Park」, s2e17)
AutoML將會大幅節省數據科學團隊的時間
根據2018 Kaggle ML and Data Science Survey, 一個數據可選的項目15-26%的時間花費在建模或者模型選擇。
無論是考慮「員工工時」還是消耗的計算時間,這都是一項艱巨的任務。如果目標或數據發生更改(例如添加新特徵),之前的過程就會被重複。AutoML可以幫助公司內的數據科學家節省時間,並將其更多地花費在更重要的事情上(例如在椅子上擊劍)。
而我們在開始使用AutoML之前僅僅需要幾行代碼。
但是,如果數據科學團隊的建模部分不是最關鍵的任務,則你的公司流程中顯然存在問題。通常,即使模型性能的小幅提高也可能為公司賺取大量金錢,在這種情況下,建模時間是值得開銷的時間:
讓你的數據科學團隊給日常任務編寫腳本而不是使用封裝的解決方案是一個好主意。 我為日常任務的自動化編寫了一些腳本:自動特徵生成,特徵選擇,模型訓練和參數tuning,而這些我現在每天都在使用。
AutoML比普通的數據科學家更厲害
除了"An Open Source AutoML Benchmark」, 我們沒有任何有用的「AutoML vs 人類」的benchmarks。
該論文的作者在2019年7月1日發布了幾個AutoML庫與優化後的Random Forest性能的比較結果。
我挺好奇的,然後來做我自己的benchmarks.我在三個數據集( credit, KDD Upselling, 和 mortgages)上比較了我的模型和AutoML的性能。我把數據集分為訓練集(按目標分層隨機分配了60%的數據)和測試集(剩餘40%).
我的基準解決方案相對簡單。 我沒有深入研究數據,也沒有創建任何高級特徵:
5-StratifiedKFold;
用於分類列的Catboost編碼器,如果您對CatBoost編碼器不熟悉,請查看我之前的文章:Benchmarking Categorical Encoders;
數字列對的數學運算(+-* /)。 新特徵數量的上限:500;
模型: 默認參數的LightGBM;
混合(OOF ranked predictions)
我用了兩個AutoML的庫: H2O 和 TPOT。我分階段、次數訓練了這倆寶貝:從15分鐘到6小時。使用以下指標,我得到了令人驚訝的結果:
首先,在幾乎所有情況下,我的baseline都超過了AutoML。 我有點難過,因為我計劃在辦公室里放鬆一下,而AutoML會做所有勞累的工作,但是無所謂咯 ~~
其次,AutoML的得分並沒有隨著時間的推移而提高,這意味著我們等待多長時間都沒有關係:它在15分鐘內和6小時內的得分一樣低。
AutoML與高分無關。
三、總結
如果你的公司想第一次使用其數據,整個諮詢顧問先。
你應該讓你的工作儘量的自動化。。。
。。。可是封裝的解決方案得分很低,看起來並不像是正確的選擇。
PS: 引擎並不代表一輛完整的車
在本文中,我談論的是工具,但是請記住,建模部分只是整個數據科學項目管道的一部分,這一點很重要。 我喜歡將項目比作汽車。 這樣,建模(機器學習模型)的輸出就是一個引擎。
毫無疑問,發動機是必不可少的,但它並不是整車。 你可能需要花費大量時間來設計令人難以置信,周到和複雜的特徵,選擇神經網絡的體系結構或調整Random Forest的參數,從而創建強大的引擎。 但是,如果你沒有注意汽車的其他部分,則所有工作可能都沒有用。
該模型本身可以顯示很高的分數,但是由於你解決了錯誤的問題(業務理解)或數據有偏見,並且必須對其進行重新訓練(數據探索)或由於模型過於複雜,因此使用該模型不會被部署。
最後,你可能會發現自己很傻:在經過數天或數周的艱苦建模工作後,你駕駛的是一輛裝有跑車發動機的慢速自行車。
工具必不可少; 策略才是至關重要。
本文編譯自技術博客 https://towardsdatascience.com/automl-is-overhyped-1b5511ded65f, 雷鋒字幕組編譯。
文章來源: https://twgreatdaily.com/zh-tw/jdGs8G0BMH2_cNUgrGdN.html