如何實現AutoML--讓機器先做出Baseline
前言
我之前寫過一篇ofollow,noindex">如何實現AutoML -- 先Auto每個環節 ,大致思路是讓機器先自動化每一個小環節,每個環節輸出唯一一個結果,這樣可以極大的簡化搜尋空間。比如我們有三個環節,A,B,C,分別產出10,10,10種可能,為了得到全域性最優,我們需要10*10*10嘗試1000次完整計算。而如果每個只取一個區域性最優,那麼只需要計算30次,雖然最終結果可能不是最優的,但在現實中,這也是一個比較可行的方案。
讓機器先做出Baseline
受TransmogrifAI 啟發,我覺得可從另外一個維度去減輕演算法工程師的負擔,基本思路就是,機器先做出前面的工作,找出最好的特徵組合和演算法,然後給出詳細的結果細節,這包括:
- 機器得到的特徵工程結果
- 機器選取的最優演算法衡量指標值,比如F1,AUC等等
- 機器得到的最優演算法使用的使用的引數詳情
這可以給工程師很大的指導,讓他們一下子就知道,通過當前的資料,使用一些常見的演算法,能達到一個什麼樣的Baseline。如果資料足夠好,機器的結果可能已經讓人滿意,演算法工程師可以直接交付出去。如果機器的結果不好,演算法工程師干預下,是不是可以增加新的資料或者新的維度?另外,再次重跑的時候,是不是可以讓機器去掉一些特徵組合和跳過某些演算法的測試。
額外:對於特徵工程
以前我一直想著如何從表中獲取資料,從表中抽象資料,比如這篇文章從DataFrame自動化特徵抽取的嘗試 。但其實從表中能抽取的資訊是非常有限的,無非就是型別,規則,統計,以及人的先驗知識。TransmogrifAI給了我一個極大的啟發,就是我們需要知道我們資料的本源是什麼,我們應該往資料的源頭再前進一步,比如到網頁端去,使用者選擇了下拉列表,提交了文字款,點選了一個checkbox,在特定時間做了一次點選,這些才是是使用者的選擇,資料的本源,這些才是影響最後的結果東西,我們可以把同樣的思維,遷移到App裡,小程式裡。
通過上面的分析,我們對特徵的抽象就比較簡單了,我們抽象出來的是checkbox,textarea,textinput ,datatime,email,phone number,這些可以給我們帶來額外的資訊,比如checkbox,一般就是列舉型別,在機器學習裡該怎麼處理列舉型別呢,這個就變得更自動化了。源頭可以帶來很多新的資訊,幫助機器更好的做自動化。