不寫代碼,用圖形界面搞機器學習:MIT發布“全球最快AutoML”
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
△ 來自《鐵男》科幻劇情里,沒有看過哪位大佬拿Python寫代碼。
眼前凈是藍汪汪的全息畫面,用手指拖幾下,再點幾下,就算出了結果。
“我夜觀星象,算出你上班時間看P站。” (誤)
回到現實,雖說是沒有全息圖,但不寫代碼、拖拖拽拽就能搞機器學習,這等美事已經達成了:
MIT和布朗大學聯合開發了交互式數據科學系統,名字叫Northstar。
團隊說,這是“全球最快的交互式AutoML工具”;除了速度,它生成模型的成績,也已經在DARPA D3M AutoML比賽上超越了所有對手。
作為用戶,你只要加載好數據集,再把想預測的目標,拖進一個預測器。幾 (十) 秒的光景,系統便會幫你找出最適合的機器學習模型。
有位不愿透露姓名的評論員說:
比用TNT還容易。
即便不是數據科學家,也可以充分利用手上的數據,來分析各種行業的現實問題。
并且,這套系統支持多人協作,不管是用同一臺設備還是多臺設備。電腦、平板、交互式白板……各種設備已支持。
現在,Northstar在工業界和學界都有了用戶,Adobe便是其中之一。
能做些什么?
先拿醫學研究人員舉個栗子。
MIT在波士頓,那么就把整個波士頓的ICU患者健康信息全部投喂給Northstar。
加載完成之后,性別、年齡、BMI、有沒有消化疾病、心臟衰竭等等,各種參數都會進入“屬性 (Attributes) ”這一欄。
△ 滑動的部分,就是各種屬性
機器學習出場前
可以先觀察不同屬性之間的聯系。
比如,通常認為男性比女性更容易發生心臟衰竭 (Heart Failure) ,就來驗證一下這個規律適不適用。
把“心衰”和“性別”兩個屬性拖出來,然后相連,發現女性的發病人數稍低。但把兩個屬性拖近彼此就會看到,按照比例計算,反而是女性比男性發病率高:
△ 拖到靠近的位置,就可以計算比例
另外,還可以輕松觀察多類疾病共存的概率。
比如,傳染病、血液疾病和代謝疾病。
除了把三者相連之外,Northstar還有一種更簡潔的工具,叫frequent itemset:
它可以把三類疾病的所有可能組合,概率全部計算出來:
最容易并發的是代謝疾病和血液疾病,而代謝疾病單獨存在的概率是全部可能性里最高的。
這時候,再用“年齡”屬性篩選出50歲以上的患者,代謝疾病的百分數飆升到了73%。
注:發現數據里,有很多患者年齡填了零,也可以一鍵清除他們,只留有效部分。
數據就觀察到這里。
機器學習出場了
如果要預測某個患者有沒有心臟衰竭,就從算法欄里拽出一個預測器 (Predictor) 。
然后把要預測的“心臟衰竭”,拖到預測器的“目標 (Target) ”里去。
這樣,預測器的右邊,便會產出一系列模型,每個模型的預測準確率都會顯示出來。
模型生成完畢之后,可以選擇一個成績最好的模型,打開來仔細查看:
這個準確率92.25%的方案,一共有8個步驟。
現在可以把這個模型導出為Python腳本,今后可以手動優化,也可以直接投入使用。
除此之外,還可以看到各個不同參數的權重:
其中,對預測心衰最有幫助的是一個叫“heart_ischemic”的特征。
意思是心臟缺血,常常是伴隨著心臟衰竭而生。
所以下一步,就把這個特征也扔進預測器的目標里。
這樣的話,再生成的模型就不依靠這個癥狀來預測了。
還有,可以把自己選中模型的預測結果,和Ground Truth對比觀察。
像上圖這樣直接拖進去,就會得出假陰和假陽的情況。
選中這兩部分,把它們和“年齡“擺在一起,就知道AI在哪個年齡段的預測更容易出錯。
這個模型的錯誤率,幾乎是隨時間線性增長。
到這里,一個栗子就講完了。
可問題是,AutoML找出的模型一定是有效的么?
并不,如果預測成績看上去很迷,可能是因為屬性欄里的數據集,并不是有用的預測工具。
但沒關系,系統自帶數據集搜索工具datamart,輸入關鍵字,可以查找相關的數據集。
比如,輸入“貧困 (Poverty) ”,就能看到美國各個縣的人口數據。
有了這些數據,系統找出的貧困預測器,表現也會有所提升。
怎么做到的?
Northstar的英勇體現在三個角度,一是速度,二是生成模型的質量,三是交互能力。
團隊說,這是由系統的四個部分共同決定的 (第三部分高能) 。
第一部分叫Vizdom,就是前端,人類最直觀感受到的部分,像一個沒有邊界的畫板,可以在上面自在地發揮。
之所以自在,是因為背后有個強大的數據引擎:
第二部分叫IDEA,就是這個引擎。全稱“交互式數據探索加速器“,可以理解成樣本管理器。
它把內存分成三份,一是結果緩存 (Result Cache) ,二是樣本存儲 (Sample Store) ,三是索引 (Indexes) 。
當用戶開始操作,IDEA就會從各種數據源吸取數據,推測性地 (Speculatively) 執行運算,然后把結果緩存下來,支援用戶后面可能下達的指令。
同時,IDEA還會把所有傳入的數據,緩存到“樣本存儲”的位置。如果沒空間了,IDEA就開始更新緩存:用水塘抽樣 (Reservoir Sampling),給數據集生成一個代表性樣本 (Representative Sample) ,就算數據流有偏差也是后面再處理:
要避免數據流的偏差 (Bias) 帶來的影響,IDEA利用了許多數據庫都有的采樣算子,以及這些數據的隨機偏移 (Random Offsets) 。
IDEA還可能把水塘樣本分成幾個分層 (Stratified) 的子樣本,用來過度表示 (Overrepresent) 一個分布的尾端,或者用來創建專門的索引。
它所有的決定,都要根據用戶過往和當下的操作不斷優化:
比如,當用戶把一個新屬性拖進畫布,系統就會分配更多資源到這個新屬性上,為用戶可能發出的請求提前做好準備。
另外,隨著計算的進行,IDEA還會把精確度越來越高的結果,不斷傳輸到前端,也包括這些結果的完整性和誤差分析。
這樣,即便用戶任意發揮,系統也能快速待命,不論數據大小,不論數據類型。
第三部分叫Alpine Meadow,重中之重。
在IDEA準備好數據之后,就是它負責選出最適合的算法,最適合的超參數。
2013年,團隊曾經開發出MLbase:用一種簡單的聲明式方法 (Declarative Way) ,來說明ML任務是什么 (但不發出具體指令) ;還提供一個新的優化器,選出一個學習算法,并且能夠動態地適應當前的任務。
只不過,MLbase不是為了和人類交互而生的,調參常常要幾小時。
所以,團隊在此基礎上一頓操作,獲得了快速有效的Alpine Meadow:
先是證明了,把基于規則的優化 (Rule-Based Optimization) 方法,和多臂老虎機、貝葉斯優化以及元學習,巧妙結合在一個系統里,能有效找到最好的ML模型。
并設計了一個自適應的選擇算法,通過對比訓練集和驗證集的誤差,早期就可以剪掉 (Prune) 一些不靠譜的pipeline。這在訓練實例的樣本越來越大的情況下,有助于達到更高的效率。
結果是,Alpine Meadow廣泛支持各類任務,多才多藝的程度,遠遠超過其他AutoML系統:
并且,它在從前沒見過的數據集上,有80%的情況超越了作為基線的專家系統:
下面看速度。
綠色是Alpine Meadow找出第一個方案需要的時間。在成功的數據集數量相同的情況下,用時遠低于其他算法:
方案在數據集上的相對排名,依然明顯超過其他算法 (越低越好) :
然后,是DARPA比賽的分數 (已Normalized) :
截至目前,它已經超越了DARPA D3M AutoML比賽上的全部對手。
雖然,Alpine Meadow單打獨斗也沒有問題。但在這個四部分組成的系統里,還有最后一個部分:
第四部分是QUDE,它可以監控用戶的每一個交互動作,對常見的錯誤和問題給出警告。
這些模塊合在一起,才是完整的Northstar。
美中不足,現在似乎還沒有個人用戶的入口。
“全MIT最聰明的人”
MIT和布朗大學組成的團隊,已經在NorthStar上面耗時四年。
領隊是Tim Kraska副教授,來自MIT赫赫有名的CSAIL實驗室。
項目已經發射了許多篇論文,其中核心的Meadow Alpine論文,登上了SIGMOD ’19。
論文一作名叫尚澤遠,也來自CSAIL,是Kraska的博士生。
少年的校園主頁,域名矚目:http://smartest.mit.edu/
下方還有一行傲嬌的說明:
如果想知道誰是MIT最聰明的人,請前往https://www.shangzeyuan.com/
Alpine Meadow論文傳送門:
http://sci-hub.tw/https://dl.acm.org/citation.cfm?id=3319863
NorthStar論文傳送門:
http://www.vldb.org/pvldb/vol11/p2150-kraska.pdf