AutoML 在表数据中的研究与应用
導讀:大家好,今天分享的題目是 AutoML 在表數(shù)據(jù)中的研究與應用。對于 AutoML,大家聽到比較多的可能是神經(jīng)網(wǎng)絡結構搜索 ( NAS,Neural Architecture Search ),NAS 主要應用于圖像,而我們的工作主要應用于解決表數(shù)據(jù) ( Tabular Data ) 中的建模問題。目前 NAS 在表數(shù)據(jù)中的研究較少,有興趣的小伙伴可以嘗試。
第四范式 AutoML?Tables?的效果
我們選取了10個 Kaggle 比賽數(shù)據(jù),分別通過第四范式 AutoML Tables 和 Google Cloud AutoML Tables 產(chǎn)生結果并提交,然后分別計算每種方法的在整個排行榜中的相對排名,如圖所示,第四范式的 AutoML 在表數(shù)據(jù)上的效果大部分要優(yōu)于 Google Cloud AutoML,其中圖中青色代表第四范式,藍色代表 Google,柱狀圖越高表示效果越好。
下面我主要從五個方面進行介紹:
-
AutoML?Tables 的背景
-
AutoML?Tables 的自動特征工程
-
AutoML?Tables?的自動參數(shù)尋優(yōu)
-
第四范式 AutoML Tables 的落地案例
-
對未來工作的展望
▌AutoML Tables 的背景
1.?什么是機器學習?
Tom Mitchell?在1997年《機器學習》的教材中講到,定義如下:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
2.?什么是 AutoML?
-
機器學習步驟
以現(xiàn)實中的場景“反欺詐”為例,介紹下機器學習的步驟。
① 形式化的定義問題
② 收集數(shù)據(jù)
③ 特征工程
④ 模型的訓練
⑤?模型的評估
⑥ 部署和應用(如果效果達到目標)
上述所有的工作基本都是由機器學習的專家來完成的。該過程可能是一個迭代的過程,需要根據(jù)模型的效果,多次選擇數(shù)據(jù)、特征和調(diào)整模型等。
-
AutoML 做什么?
AutoML ( Automated Machine Learning ) 是利用機器來完成機器學習步驟中的某部分工作,而不是全部由專家來完成。目前,在相當多的領域缺乏有機器學習背景的開發(fā)人員。因此,利用 AutoML 可以使得機器學習更好的應用到更多的行業(yè)、更快地造福于社會。
現(xiàn)在 AutoML 主要側(cè)重于特征工程、模型訓練和模型評估,對于問題的形式化研究較少。
3.?什么是 AutoML?for?Tables?
通常大家對于 AutoML 的印象更多來自于 Google 的 NAS 方面的文章,例如自動在 CIFAR10 或者 ImageNet 上搜索網(wǎng)絡結構。這些通常是應用于圖像數(shù)據(jù)的。
AutoML for tables 的工作主要是面對通過業(yè)務邏輯拼接成的寬表,不涉及圖像數(shù)據(jù)或者 NLP。圖中示例的數(shù)據(jù)集是來自 UCI 的數(shù)據(jù),主要預測是否給客戶貸款,是否有風險,用到的特征有年齡、工作、教育、資產(chǎn)等。
▌AutoML Tables?自動特征工程
根據(jù)前面提到的機器學習的 pipeline,我們先介紹 AutoML Tables 的自動特征工程。在參加競賽中,大家會提到一個說法“特征決定了效果的上限,模型只是決定趨近于這個上限的程度”。在我們的實際工作中,特征也是一個提升空間更大的地方。
自動特征工程主要是由下面幾個模塊組成:
-
自動拼表
-
自動特征生成
-
自動特征選擇
-
自動特征增強
1. 自動拼表
現(xiàn)實中完成一個業(yè)務場景的任務,是需要很多張表的。例如一張表描述用戶信息,一張表描述商品信息,還有一張表描述其他的補充信息(例如上下文,瀏覽記錄等)。
2.?自動特征生成
在自動特征生成中,我們主要是有下面四類的算子:
① 一元算子
基于特征做線性和非線性的變換,例如歸一化、log 變換等。n 個特征,復雜度是 O(n)。
②?二元操作算子
例如加減乘除,笛卡爾積等。n 個特征,進行二元操作,則復雜度為 O(n2)。
③ group-by 算子
Group-by operator 是比較特殊的一種算子,它需要先做 partition,然后做 aggregation。此外,如果牽扯到時序性 ( 時序可能放在 group by,或者放在 window function ),算子的復雜度會比較高,同時需要小心穿越。
④?高階的算子 ( high-order?)
例如有 k 階,則從 n 個特征中選擇 k 個進行操作,數(shù)量為?Cnk,再從這些特征中進行選擇的話,就是指數(shù)的指數(shù)級,指數(shù)空間的搜索問題很難。
3.?自動特征選擇
特征是不是越多越好?答案是否定的。一方面有的特征是有害的,另一方面特征較多對于系統(tǒng)性能都會增加要求。所以,在自動生成了很多特征后,我們需要考慮如何從自動生成的特征中選取有效的特征。
首先,最直觀的做法是將特征放入模型中,如果模型效果好就保留,效果不好就舍棄。這個方法有兩個問題,一是如果應用到全量數(shù)據(jù),進行計算會比較貴;另一個是一個特征本身沒有用,和其他的特征組合有用。
經(jīng)典的特征選擇主要有 Filter、Wrapper、Embedded 三種方式,可以去查看相關的資料。我們做的工作的目標是快速地,低代價的進行特征選擇。這次主要介紹一個 PFI ( permutation feature importance ) 特征重要性的方法和 ( field-wise logistic regression ) 的方法。
-
PFI ( permutation?feature?importance ) 方法
下面舉例來介紹 PFI 方法,假設我們有10個特征待評估,首先進行一個模型訓練,得到了模型的效果評估值 ( performance ) AUC 為0.8。然后,固定9個特征不變, shuffle 第一個特征,再次進行模型訓練,得到新的評估值 AUC 為0.7。判定特征的重要性為兩次的差值0.8-0.7,為0.1。重復上面的過程,如針對第二個特征,固定除這個特征外的9個特征,只是對第二個特征進行 shuffle,這個時候模型為0.75,則第二個特征的重要性為0.8-0.75,為0.05。該方法既可以做特征重要性,亦可做特征可解釋性。該方法的動機是,特征越重要,對其擾動后,模型的效果抖動越大。
-
逐域?qū)?shù)幾率回歸 ( field-wise logistic regression,FLR ) 方法
當我們有10個特征,可分別用每個特征單獨訓練 LR 模型,但是這樣代價比較高。我們主要進行了兩方面的改進。
① 并行化改進
我們的改進之一是借鑒 boosting 的思想,并行來完成對于特征的建模。部分特征建模后,固定其權重,再進行剩余部分特征的建模。例如,當原始表有100個特征,又增加10個特征時,我們先利用100個特征訓練的模型得到的特征權重,固定好這100個特征權重后,也即讓 LR 有一個起始點,然后在這個起始點再去訓練其他10個特征的權重。請注意:這10個特征的學習過程互相獨立,即權重互不影響。
② 工程化改進
如果每次讀取數(shù)據(jù),只針對一個特征訓練相應的 LR 模型,頻繁 IO 導致性能下降。所以,我們結合參數(shù)服務器,實現(xiàn)掃描一次數(shù)據(jù),訓練出所有特征對應的 LR 模型,也即掃描一次數(shù)據(jù),得到所有的特征重要性。
我們采用這兩種方法得到特征重要性,然后進行迭代,最后得到有效的特征組合。
4.?自動特征增強
我們做的另一個工作是自動特征增強,由于里面仍然有很多問題較為困難,仍需要進一步研究。表數(shù)據(jù)中可能有各種數(shù)據(jù),如 NLP 類型 ( 一個 user 的 profile 為文本 ),image 類型 ( user 的頭像 ),audio 類型。另外還有 graph 類型 ( 例如考察團伙作案 ),以及 user 的住址等 Knowledge graph 的信息等。處理的方法一方面是進行直接處理 ( nlp 直接分詞 ),另一種是 embedding 的方法,可以進行微調(diào) ( fine tune ),也可以不做。
我們最后將其應用到不同的數(shù)據(jù)集中,如下圖。有的數(shù)據(jù)集上的效果很好,有的數(shù)據(jù)集上的提升效果較小,但也可以提升建模效果。
5.?AutoCross 介紹
下面介紹下我們在 KDD 2019 上面的一個工作:自動特征組合?( AutoCross ),詳細可以參看文獻 AutoCross: Automatic Feature Crossing for Tabular Data in Real-World Applications,地址:
https://arxiv.org/abs/1904.12857?
5.1?AutoCross 的系統(tǒng)設計
該系統(tǒng)包含從右到左三個部分:
①?基礎設施
我們基于已有的大規(guī)模分布式的機器學習平臺,搭建了一個并行處理機器學習算法。主要有參數(shù)服務器,cache 的優(yōu)化, feature 的優(yōu)化管理等。
②?算法集合
-
Beam?Search 方法
基于 Beam search 解決了如何從原始特征選出2階、5階乃至10階的高階特征生成與選擇方法。主要是采用貪婪算法,首先進行2階選擇,然后將重要的特征放入下一步,逐次迭代生成多階特征組合。形象地解釋,beam 就是一束光,光照到的就會進行特征驗證,沒有照到的就不會被衍生下去。
-
逐域?qū)?shù)幾率回歸方法 (?field-wise logistic regression,FLR )
如前文所述,它可以快速地選擇特征。
-
連續(xù)批訓練梯度下降 ( successive mini-batch gradient descent )
即使有50個原始特征 ( 現(xiàn)實較為常見 ) 兩兩組合后特征就上千,在全部數(shù)據(jù)上掃一遍會代價很高。為了加速迭代,我們借用調(diào)參算法的思想,將評估特征逐步砍半,降低評估代價。
-
多粒度離散化 ( multi-granularity discretization ) 方法
當組合離散特征和連續(xù)特征進行建模的時候,需要進行連續(xù)特征變換。傳統(tǒng)的方法是 log,或者分桶。我們在實際過程中發(fā)現(xiàn),在一些數(shù)據(jù)集合上,連續(xù)特征離散化對于桶的個數(shù)很敏感 ( 效果有5%的差異 )。為此,我們采用多粒度的離散化方法,對數(shù)值特征,根據(jù)不同粒度做離散化,同時生成多個不同粒度離散化對應的離散特征,然后采用逐域?qū)?shù)幾率回歸挑選出最優(yōu)的離散特征。多個劃分粒度既可以由用戶指定,也可以由 AutoCross 根據(jù)數(shù)據(jù)大小和計算環(huán)境來自適應地選擇,使得用戶不需要反復調(diào)整離散化的粒度。
③?工作流實現(xiàn)
對數(shù)據(jù)進行基本的預處理后,我們將特征組合和特征選擇迭代,最終選出來 Top-K 個的特征。
5.2?AutoCross 的效果
基于5個公開的數(shù)據(jù)集和5個實際業(yè)務數(shù)據(jù)集,我們驗證 AutoCross 的效果。數(shù)據(jù)集范圍從幾萬到幾千萬。
① 線性模型
首先對比利用生成特征和無該特征的建模效果的差異性,具體如下面的 LR ( base ) 和 AC+LR 的對比,可知 AutoCross 可以提升線性模型的建模效果。
②?非線性模型
此外,可以發(fā)現(xiàn) AC+W&D 結合后,模型效果不比 xDeepFM,因此 AutoCross 對非線性模型 ( DNN ) 也可以提升效果。
▌AutoML Tables 自動參數(shù)尋優(yōu)
關于超參數(shù)優(yōu)化,常用方法有 Random search ( 方法較為簡單,而且效果夠好 ),論文中常用的 Grid search 方法,以及貝葉斯優(yōu)化方法。我們這次不再講解,主要介紹隨機坐標收縮、連續(xù)減半算法、基于種群的優(yōu)化和雙層優(yōu)化四種方法。
超參數(shù)尋優(yōu)過程主要面臨下面兩個問題:
-
用什么樣的模型刻畫超參數(shù)空間和效果,例如貝葉斯模型為高斯過程的,random search 是 Model free 的。
-
當有了模型效果評估后,如何選取采樣策略,生成下一個組采樣點和下一組超參數(shù)配置。
1.?優(yōu)化算法
① 隨機坐標收縮 ( RAndom COordinate Shrinking, RACOS )
該方法基于分類的思想,利用分類器將一個較大的超參數(shù)空間分成好壞兩部分。其將一個超參數(shù)的組合定為一個坐標,操作過程中,每一維是獨立的,操作顯示為圖中的矩形方式。其中,離散值是要或者不要該點,連續(xù)值為左移或者右移。在劃分為好的超參數(shù)區(qū)間以一定的概率進行采樣,同時兼顧探索和開發(fā),隨后逐漸將這些坐標收縮到某一點。具體為,在最小化的過程中,逐漸縮小分類器的閾值,逐漸縮小好的參數(shù)空間的范圍。
②?連續(xù)減半算法 ( SHA )
該方法思想樸素,然而非常有效。例如有30組參數(shù),先在十分之一的數(shù)據(jù)上運行,選擇出最好的十組,相當于砍掉了三分之二。然后利用這十組的數(shù)據(jù),再跑一定的數(shù)據(jù)。如圖,后面的數(shù)據(jù)只跑了一輪,所以它的代價一般較小。
③?基于種群的優(yōu)化
PBT 主要有提前停止、熱啟動和分支限界三個特征。右邊的圖中,紅色的點為起始點,組成了初始的種群,好的點會進行交叉變異等操作,進行生長直到生成下面藍色的點 ( 效果比較好 )。
④?雙層優(yōu)化
該方法屬于層次優(yōu)化的范疇。具體來說,機器學習會在訓練集 ( training set ) 求得模型的參數(shù),在驗證集 ( validation set ) 上優(yōu)化超參數(shù)。可以將訓練集中對模型本身參數(shù)的選取作為一層,超參數(shù)在驗證集上的優(yōu)化作為一層,兩層可以進行交互迭代。但該方法一個問題顯著問題是:兩層優(yōu)化需要求二階導數(shù),會使得計算代價較高,對此也有些近似的方法可以替代。
2.?算法實例-AutoDSN
我們針對推薦等大規(guī)模稀疏數(shù)據(jù),構建深度稀疏神經(jīng)網(wǎng)絡 ( DSN,Deep Sparse Network ) 方法。由于神經(jīng)網(wǎng)絡對于參數(shù)敏感,我們針對深度稀疏網(wǎng)絡利用前面提到的方法進行自動超參數(shù)尋優(yōu)。自動調(diào)整神經(jīng)網(wǎng)絡 ( AutoDSN ) 在五個數(shù)據(jù)集上面的效果都較好。在3-9倍代價內(nèi),可以達到專家調(diào)參效果的99%以上。
▌AutoML Tables?落地案例
1. 學習圈理論
公司基于庫伯經(jīng)典學習圈提煉了機器學習的閉環(huán)流程。庫伯的學習圈指的是人有理論后可以指導行動,行動有反饋,也即生成了經(jīng)驗,不斷反思可以補充完善理論。這個對應機器學習就是收集行為數(shù)據(jù),得到反饋數(shù)據(jù),不斷進行模型訓練,然后進行模型的應用,模型應用后又可以收集數(shù)據(jù)。
我們基于學習圈理論做了一個 AutoML 產(chǎn)品,如左邊為一個學習圈的全流程閉環(huán)設計圖。它可以支持一鍵建模,也支持 AI 模型的可解釋和特征可解釋性,并可以進行數(shù)據(jù)自動回流和指標自動計算等。
2.?實際應用場景
我們利用閉環(huán)的機器學習的產(chǎn)品給一個大型的互聯(lián)網(wǎng)公司做了一個項目,目前看項目的效果不錯,具體見圖中描述。
▌AutoML Tables?展望
下面主要考慮未來我們還可以做什么,主要包括效率、效果和交互式三個方面。
1.?效果和效率
AutoML 是需要同時追求效果和效率的,一要降低成本,二要提高效果。如果不達到一定建模效果,那就不可以用。但如果為了達到一定的效果代價太高,也是不可行的。效果方面,從問題定義到模型上線都有可以優(yōu)化的點。效率方面,一是可以應用更好的硬件,軟硬一體,另一方面可以優(yōu)化算法,例如通過特征空間劃分等提高效率。
2.?可交互
當前的 AutoML 比較封閉,人的參與度不高。我們希望可以達到人需要的時候 AutoML 幫助我們,不需要 AutoML 時用戶自定義,來提高建模效率。當人在建模流程中,不想要做某方面的選擇,可以給定目標函數(shù)、輸入,讓機器來優(yōu)化 ( 機器較為擅長 )。在優(yōu)化的過程中,人可以隨時介入到學習過程中,提前終止或修改搜索空間和方向。
總結
以上是生活随笔為你收集整理的AutoML 在表数据中的研究与应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字节跳动Deep Retrieval召回
- 下一篇: Spring是如何利用“三级缓存“巧妙解