<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能開發者 正文
      發私信給黃善清
      發送

      0

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      本文作者: 黃善清 2019-08-19 20:26 專題:KDD 2019
      導語:獨家專訪~

      雷鋒網 AI 開發者按:素有數據挖掘“奧運會”之稱的 KDD CUP ,其頒獎儀式于 2019 年 8 月 7 號在美國安克雷奇市落下帷幕。今年的 KDD CUP 共設有三個賽道,分別為 Regular ML、AutoML 與 Humanity RL ,最終結果顯示,三個賽道的冠軍皆由華人隊伍奪得。作為 AutoML 賽道的冠軍隊伍,深蘭科技在儀式結束后接受了 AI 開發者專訪,不嗇分享其在賽事中奪魁的點滴。

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      賽事獎狀

      問:今年 KDD 的 AutoML 賽道題目與“binary classification problems for temporal relational data”相關(題目詳情請戳:https://www.4paradigm.com/competition/kddcup2019),能否請你們談一談相關工作的意義和挑戰?

      答:時序關系型數據在在線廣告、推薦系統、金融市場分析、醫療等應用場景中非常常見,人們往往需要利用這樣的數據去構建機器學習模型,并應用機器學習模型提升對應業務的效果。以在線廣告點擊率預測問題為例,每個樣本就是向用戶展示廣告,樣本標記為用戶是否點擊廣告。因為是實際的服務系統,所有樣本都是時序產生。

      在傳統的機器學習應用中,需要經驗豐富的專家才能從時序關系型數據中挖掘出有效的時序信息,并加以利用來提升機器學習模型的效果。即使具備較深的知識儲備,專家也需要通過不斷的嘗試和試錯,才能構建出有價值的時序特征,并且利用好多個相關聯表來提升機器學習模型的性能。此外,選擇合適的機器學習模型和超參數也需要強大的機器學習專業知識作為支撐。

      此次競賽針對時序關系型數據的 AutoML 挑戰賽,希望讓更多的數據科學家和開發者加入其中,集思廣益,從而讓 AutoML 更好地利用時序關系型數據,提升模型的預測性能,讓 AutoML 解決方案能夠更加符合實際應用的需求。

      賽題的難點主要有5個方面:

      • 賽題數據來自于多個實際業務場景,參賽者設計的自動化機器學習算法將會在未知的五個數據集中進行學習和評估,根據五個數據集的評估結果進行綜合排名。

      • 比賽中每個數據集只給出數據類型不給出數據含義,自動根據特征類型挖掘出有效特征是一個難點。

      • 賽題數據是時序相關的,相比較無時序的數據需要模型具備更好的泛化能力。

      • 賽題的數據由多表給出,這就要求參賽選手能夠構建一個處理多表之間多樣的連接關系的自動化機器學習系統。多表數據無疑提升了對系統的穩定性的要求。

      • 時間和內存限制嚴格。

      本次AutoML競賽一方面展示出了我們團隊在這個領域的充分積累,另一方面我們自研的AutoML系統可以在工程項目中完美落地,為客戶提供頂級的機器學習解決方案。

      問:能否向我們詳盡解讀你們的解決方案?

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      答:如上圖所示,我們團隊基于所給數據實現了一套支持多表的AutoML框架,包括自動表連接、自動特征工程、自動特征選擇、自動模型調參、自動模型融合等步驟,在時間和內存的控制上我們也做了很多優化工作。

      注:深蘭科技已開源相關解決方案,感興趣者可訪問  https://github.com/DeepBlueAI/AutoSmart 進行查看

      數據預處理

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      我們通過對表結構及其屬性的分析,針對不同類型的數據制定不同的數據預處理方案。如上圖所示,我們去除了方差極小的數值特征,也去除了所有值都不同的類別特征。同時,在多表間的多個連接key中,我們在主表中種類最多的一個key識別為user。基于識別出的user,可以嘗試在主表的category中識別出session。另外,我們嘗試在category數據中識別出只有兩類有效值的binary數據。我們對category、user、session、key進行重新編碼,對numerical數據嘗試將其轉換為占用內存更少的類型,將time數據轉換為容易操作的datetime類型。

      多表連接

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      比賽給的數據結構如上圖所示,表和表之間的連接關系可以分為四種,分別是1-1、1-M、M-1、M-M。因為時間和內存的限制,所以我們需要在盡可能保留信息的同時,讓最后生成的表的數據規模不至于過大。而處理多表連接的方式,直接影響到后面的結果。我們針對不同的連接方式采用了不同的方法。首先將四種連接方式分成了兩種類型:類型1包含了1-1、M-1,類型2包含了1-M、M-M。對于類型1,我們可以直接將副表的數據通過key合并到主表上。對于類型2,我們首先對副表做一些聚集操作,生成聚集的結果,而這些聚集的結果可以理解為和主表是類型1的關系。接下來,我們只要對生成聚集的結果做類型1的操作,直接將其合并到主表上即可。并且,對于主表和副表都有時間戳的情況下,我們將副表上離主表當前數據早且最近并且為相同key值的數據合并到主表上。

      采樣

      因為AutoML比賽方給定的數據集大小未知,在對其進行操作處理之前首先要判斷當前環境是否能夠支持整個數據集共同參與特征工程及模型訓練過程。我們在讀入數據進入預處理之前做了一次判斷,即要求訓練集與測試集的總樣本數不超過某一個可以接受的閾值。如訓練集與測試集的總樣本數過多,我們就考慮對其進行采樣。

      此外,在特征工程的組合特征模塊中,同樣用到了采樣的思想。組合特征的特點是產生的特征數量多、特征工程的時間長、內存峰值高、起作用的特征數量少。因此,為了避免內存溢出,我們在做組合特征之前,在小數據集上進行特征工程,經過篩選后得到真正起作用的特征,再在整個數據集上僅做出這些有效的特征這樣不僅可以減少系統運行時間也能避免內存溢出的風險。

      自動特征工程

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      特征工程部分往往是數據挖掘競賽的關鍵核心內容,也是我們團隊在比賽中取得顯著優勢的重要因素。我們通過LightGBM模型來驗證特征效果和進行自動化特征選擇,如上圖所示,在自動特征工程階段,我們將特征工程根據特征組合的階段分為多個階段,在每一個階段結束后,我們都會做一次特征選擇來篩掉那些在這一階段做出而不起作用的特征,來避免內存溢出并且加速最終的模型訓練。為了在更短的時間內得到更有效的組合,我們先進行數據的采樣,根據不同數據集的數據量大小以及特征重要性篩選出適量的不同類型的特征兩兩組合形成新的特征,然后在全量數據上重現有用的特征 ,在希望挖掘到有用的特征的同時,盡量減小內存溢出的風險。我們通過結合特征重要性及序列后向選擇算法,設置一個閾值,將在參與模型訓練中,篩出重要性較低的特征而盡可能小地損失模型精度。我們還嘗試了基于特征的信息增益來對特征進行篩選,亦或是對兩種篩選方法進行結合,但因為沒能找到更好的切分點,最終還是使用了基于特征重要性的方法。

      我們將特征分成幾個模塊。第一個模塊是分類特征,我們對分類特征進行了均值編碼,頻率編碼等,更充分地提取類別信息。第二個模塊是實體特征,我們對每個表中的主鍵進行識別,將其區分出user、key、session等時序場景常見的實體(key是某種未知的實體),我們通過特征工程對這些實體進行建模,對實體的歷史信息(數值特征、分類特征、時間特征等)進行不同方式的聚合。第三個模塊是時序特征,我們根據時間將數據劃分為多塊,將上一個時間塊的特征通過實體聯結到下一個時間塊的相同實體作為特征,這樣使得模型可以有更好的時序預測能力以及泛化能力。第四個模塊是組合特征,我們基于前面模塊所產生的一階特征(包括時間、類別、數值、多值類別等特征)進行多種不同組合。

      同時,因為本次競賽的時間和內存的控制比較嚴格,在面對百萬級的數據量上,每個特征生成幾乎都要控制在幾秒內生成,為了滿足這一要求,我們的代碼加入了許多優化。比如對于類別數據在多類別數據中的位置這一特征,如果用傳統的Pandas實現,時間會達到幾個小時,而加入多線程之后,情況會有所改善,但是仍舊要消耗大量的時間。我們退而求其次,使用numpy來實現該特征,特征的生成時間直接到達了幾十秒的級別,但是這仍舊不能滿足我們的要求。最后我們對這塊代碼使用cython去優化,并且對cython代碼進行精雕細琢,最后該特征的生成只需要幾秒。

      類別不平衡問題處理

      我們對類別不平衡的數據在訓練時做了處理。正負樣本比例超過1:3時,我們采用欠采樣的方式,緩和正負樣本不平衡。此外,我們還嘗試通過增加正樣本的權重等方式來優化類別不平衡帶來的問題。在模型融合的部分,我們在保留原始較少的正樣本的同時,換一批負樣本來進行訓練,這樣能夠盡可能保留更多的原始數據的信息,同時緩解類別不平衡的問題。

      建模

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      由于LightGBM在訓練速度和性能都表現得很不錯,我們使用LightGBM作為我們的模型。

      對于參數調優,我們加入了先驗知識,設置了多組不同的學習率,通過early-stopping來選擇合適的學習率保證模型能訓練一定的輪數,并且通過驗證集選擇最好的學習率。如上圖所示,我們通過學習率衰減來使得LightGBM更快地收斂。由于時間的限制,我們對數據進行采樣,通過對采樣后的數據進行參數搜索,加快了參數調優速度,對性能只有很小的損失。

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?


      由于比賽環境對時間和內存做了嚴格的限制,我們在模型融合方面考慮了bagging、blending、stacking等方案,最終選用了使用bagging的方法。如上圖所示,我們模擬一次簡單的訓練來預估真實數據集所需要的訓練和預測時間,如時間不足則選擇在訓練時early-stopping,允許精度上的損失來保證代碼能夠在規定時間內運行完畢。如時間充裕,則通過當前剩余時間計算允許多少個模型進行融合。

      運行時間優化

      我們的時間控制在各個過程中都有體現。在自動化數據處理和自動化特征工程的過程中,我們使用Cython對編碼以及一些生成效率較慢的特征進行加速。這里舉一個特征為例,對于兩列數據,一列為category類型的數據,一列為multi-category類型的數據,我們提前判斷了兩列數據的數據項集具有交集,我們要計算這一category列中的數據項在multi-category列對應的數據項集中的位置信息。比如說有有一條數據。data : [ 2137 ,  (134,2137,576,816) ] ,前者2137在后者的第2個位置上。所以這條數據該特征為2。如果沒有出現的話,規定為0。對于這一特征,如果我們使用pandas提供的apply接口來實現,在本次競賽的環境下,該類特征的生成需要大約幾個小時的時間。考慮到DataFrame不適合做遍歷,以及接口泛化性帶來的性能上的損失。我們使用Numpy,做遍歷來實現該特征,能夠讓特征的生成達到分鐘級。而本次競賽的時間和內存有嚴格的控制,像那些需要超過10秒才能生成的一類特征就算非常耗時的了。之后我們采用Cython,應用Cython提前編譯,靜態類型等機制我們將該特征的生成時間控制在了10秒內。其中生成該特征的過程中有一些細節。比如如果在Cython中繼續使用Python原生類型,那么遍歷的效率還是比較緩慢。但是multi-category類型的數據存儲又不好離開Python原生類型的支持。考慮我們在生成特征的過程中,主要是對multi-category類型做遍歷操作,所以可以使用一個數組去存儲multi-category的每個數據項,并且用額外一個數組去保存每個multi-category的數據項集的長度。這樣根據其長度數組和數據數組,我們就能做一個高效的遍歷。在測試這段優化的過程中,純粹的Python代碼經過Cython優化,效率大概能到60秒。而經過這段優化,很輕松就能到達10秒內(測試環境就是以我們的本地計算機為主,線上環境會多一些時間)。

      在模型集成部分,我們會做提前計算,記錄到當前用時,通過訓練模型幾個輪次來計算出模型啟動的時間以及模型訓練每一輪數據所消耗的時間,通過這兩個時間,我們能夠預估出后續的參數調優,模型訓練的時間。從而決定最后模型融合的數量。

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      時間優化前后對比

      運行內存優化

      在內存控制方面,我們首先實現了一個內存的監聽器。我們首先完整運行一輪我們的系統,記錄下內存情況,對不同數據集的內存峰值進行分析。可以發現的是,內存峰值往往就出現在幾個典型的地方。比如:數據合成時、在模型開始訓練時、某些特征生成時。經過分析,可以概括為幾個點,其中比較典型的是數據合成時,如果使用pandas的接口pandas.concat進行數據合并,其合并過程中,會生成大約兩倍當前數據內存的量。這個是顯然的,因為其合并返回的結果不是就地的,而是創建出第三塊內存。因此,我們將合成的過程改為按列賦值,這樣合并時就幾乎不存在內存峰值了。但是這么做,同時會帶來較差的時間效率。所以在系統的早期,內存比較寬松的情況下,我們仍舊采用pandas的接口來進行對數據的合并。

      另外,我們同樣對訓練預測時內存的情況進行了提前計算,在最后的特征篩選的過程中,我們會計算模擬出在生成多大的數據量下,能夠完整進行系統后續的過程。從而來控制最后篩選出來的數據量。并且在最后一次特征篩選前,生成特征時,我們也會先時候小數據集進行一個模擬過程,來計算出整個過程中的內存情況,來對生成期生成的特征數量進行一個控制。

      最后,我們會做一些比較精細的內存管理,在變量生命周期結束的時候,我們都會對其進行內存回收。以下是我們內存優化前后的一個對比。里面包含了比賽中給的5個數據集的運行過程中的內存情況。

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      內存優化前后對比

      系統測試

      對于系統的測試,我們分為了兩個方面進行。第一個方面是測試系統的擴展性,第二個方面是測試系統的性能。

      對于系統的擴展性,我們測試過如下:

      • 對于不同的數據類型缺失的情況。

      • 對于不同數據類型數值全為空的情況。

      • 對于表的結構為單表、復雜多表的情況。

      以及其他一系列的極限狀態。而對于系統的性能方面,我們測試過如下:

      • 擴大數據的條目,就本次競賽的5個數據集而言,我們擴展每個數據集數據條目2倍,3倍,6倍都能夠在規定的時間和內存下順利運行。

      • 擴大數據的字段數量,同樣,我們擴展5個數據集的字段數量2倍也能夠順利運行。

      • 構造特定的數據集,觀察是否會因為某些組合特征而系統崩潰。最后測試了大約數十個構造的極端數據集都能夠運行成功。

      • 限制數據集允許運行時間,我們通過調整數據集允許運行時間,觀察我們的系統是否能夠自適應調整自身的運行時間。我們調整本次競賽中原本時間就比較緊張的A數據集以及數據量較大的B數據集,將其允許的運行時間變為原來的1/2,1/3,甚至是1/4。我們的系統都能夠順利運行。

      問:您認為該模型得以奪魁的原因是什么?

      答:在這次競賽中我們的工作圍繞著競賽的挑戰而進行,主要有幾個比較重要的過程:自動化多表數據處理、自動多表連接、自動化特征工程、自動化模型構建、選擇和融合。同時為了滿足競賽的時間和內存的需求,我們在代碼上做了非常多的優化工作,比如使用了多線程、Cython、預處理、提前估算等方法。最后我們的成績相當不錯,A,B榜單上均在多個任務集上有比較大的優勢。

      問:AutoML競賽和其他機器學習競賽有哪些不同?

      答:與傳統數據挖掘競賽不同的是,AutoML競賽中,參賽選手只知道數據的類型(數值變量、分類變量、時間變量、多值分類變量等),而不知道數據的含義,這毫無疑問會增加特征工程的難度,如何挖掘到有效的通用特征成為一個難點。

      AutoML競賽主要包含兩個階段,Feedback階段和AutoML階段,這兩個階段所使用的任務數據集是不一樣的,而傳統數據挖掘競賽的A/B榜階段都是在同一個任務不同數據集上進行測試,因此AutoML競賽更要求參賽選手構建一套通用的AutoML系統,在不同任務上都能夠取得很好效果。

      AutoML競賽嚴格限制運行時間和內存,如果未能在規定時間和內存內完成系統建模則無法參與最終排名,因此在系統運行過程中需要精確預估時間和內存,對耗時耗內存的部分代碼需要進行深入優化。

      問:當初選擇參加這個比賽的原因是什么?與深蘭科技的業務有哪些結合之處?

      答:傳統機器學習極為耗費人力、技術門檻高,也讓沒有機器學習背景的人無法高效利用時序關系型數據。AutoML 近年來成為了機器學習重要的研究方向。該技術在模型選擇、神經架構搜索、特征工程等方面取得了較大的成功,大幅降低了機器學習的應用門檻,讓沒有機器學習背景的人同樣可以輕松使用。這次AutoML競賽針對時序關系型數據的 AutoML 挑戰賽,希望讓更多的數據科學家和開發者加入其中,集思廣益,從而讓 AutoML 更好的利用時序關系型數據,提升模型的預測性能,讓 AutoML 解決方案能夠更加符合實際應用的需求。因此,我們認為這次AutoML競賽對推動AutoML的發展具有重要意義。

      深蘭科技在自身產品的開發中也已使用了自研AutoML系統,以深蘭科技應用于建青實驗學校的AI教育“一手通”為例,通過這款系統設備采集的數據,再經過AutoML系統自動建模可以分析出學生的興趣愛好,隨后進行個性化教學。在堅持加強基礎研究的道路上,深蘭科技披荊斬棘、不忘初心,將繼續把更多搭載先進技術的產品推向市場,真正實現服務民生。

      問:據了解,除了 KDD CUP,深蘭科技近期還斬獲了多個比賽的冠軍(如 IEEE ISI 、CVPR FGVC 等),能向我們介紹一下深蘭科技在這方面的投入情況嗎?

      答:深蘭科技成立之初即完整地規劃了深蘭科學院的架構,并陸續成立了五大研究院,致力于人工智能基礎研究和應用開發。在核心技術的基礎研究方面,包括計算機視覺、自動駕駛、生物識別和認知智能等四大領域。每次國際會議競賽都是驗證深蘭科技基礎算法和技術實力的機會,我們同時也希望這些方案能為更多行業提供借鑒。尤其本屆KDD Cup AutoML競賽開源了解決方案,其中有許多優秀的思路和方法在競賽中得以驗證,不但共同推進了AutoML的發展,也提供了交流學習的機會。深蘭科技矢志不渝,不但為自身的商業化應用落地持續注入強勁能量,更希望賦能更多行業,將“人工智能,服務民生”的理念落實到底。

      問:對于有興趣參賽的青年 AI 開發人員,深蘭科技有何建議給到他們?

      答:有興趣參加機器學習競賽的AI開發人員主要分為兩種,一種是在校學生,另一種是在職的。對于在校的同學來說,參加機器學習競賽可以快速提升自己的專業技能,也能積累實戰經驗,對找實習和找工作都有很大幫助;對于在職的同學來說,希望在業余競賽的同時能把競賽中學習到的東西應用到當前工作中來,由于競賽需要花費不少時間,也建議隊伍中有時間相對比較多的在校學生,這樣能夠更好的平衡工作和競賽的時間。

      多學習一些競賽的Top隊伍的分享,從這些分享中多總結多思考,對于特定任務可以結合實際業務場景深入探索。

      在機器學習競賽中取得 top 的成績不僅要實力也需要一定的運氣,放松心態,帶著學習的態度去玩比賽,在玩的過程中,不僅能接觸各種AI應用場景,也能提升自己的能力并認識更多相同興趣的朋友,這就是最大的收獲。

      雷鋒網 AI 開發者雷鋒網

      雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知

      深蘭科技:我們是如何拿下今年 KDD CUP AutoML 賽道冠軍的?

      分享:
      相關文章
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 18禁黄无遮挡网站免费| 久久国产精品久久久久久| 男人天堂2025| 人妻在线无码一区二区三区| 人妻[21p]大胆| 日韩欧美中文字幕公布| 成人性生交大片免费看r链接| 丁香久久婷婷| 亚洲Av秘?无码一区二区下载| 欧美国产日韩在线三区| 中文字幕日韩熟女av| 亚洲精品欧美综合二区| 国产在线观看免费观看| 亚洲精品92内射| 久久久精品波多野结衣| 男女性高爱潮免费网站| 无码18禁成人免费| 日韩精品自在a| 亚洲男人天堂网| 久久亚洲v无码专区成人| 国产热A欧美热A在线视频| 色老大久久综合网天天| 精品国产午夜福利在线观看| 国产又黄又爽又刺激的免费网址| 国产熟妇勾子乱视频| 91中文字幕一区二区| 天堂…中文在线最新版在线| 高陵县| 少妇粉嫩小泬喷水视频www| 亚洲熟女VS国产对比| 天天成人综合网| 麻豆国产| 日韩高清无码一卡二卡| 尹人香蕉久久99天天拍| 一个色的导航| 99国产精品永久免费视频| 亚洲人成伊人成综合网久久久| 国产精品一区二区av片| 美日韩精品综合一区二区 | 久久精品99久久久久久久久| 人妻无码|