羅曉牧 門韶洋 弓偉 崔曼曼
摘要:機(jī)器學(xué)習(xí)自動(dòng)化(Automated Machine Learning, AutoML)指的是為預(yù)測(cè)模型任務(wù)自動(dòng)選擇表現(xiàn)優(yōu)異的模型。TPOT 是一個(gè)開(kāi)源的數(shù)據(jù)庫(kù),可以使用 Python 語(yǔ)言實(shí)現(xiàn)機(jī)器學(xué)習(xí)自動(dòng)化,可以用于分類任務(wù)和回歸任務(wù),自動(dòng)發(fā)掘出表現(xiàn)最好的模型。本文將簡(jiǎn)介TPOT 的作用與用法,為機(jī)器學(xué)習(xí)課程的教學(xué)提供參考。
關(guān)鍵詞:自動(dòng)化;TPOT
一、基于 TPOT 的自動(dòng)化機(jī)器學(xué)習(xí)
TPOT 的全稱是 Tree-based Pipeline Optimization Tool,簡(jiǎn)稱 TPOT,與 scikit-learn 的數(shù)據(jù)預(yù)處理和機(jī)器學(xué)習(xí)算法模型結(jié)合在一起,是一個(gè)自動(dòng)化機(jī)器學(xué)習(xí)的Python 庫(kù)[1]。TPOT 使用基于樹(shù)的結(jié)構(gòu)為預(yù)測(cè)任務(wù)自動(dòng)尋找最優(yōu)的表現(xiàn)模型,包括了數(shù)據(jù)清洗,特征選取,特征預(yù)處理,特征構(gòu)建,模型選擇,模型參數(shù)調(diào)優(yōu)等,如圖 1 所示。
二、TPOT的使用
使用 TPOT首先需要建立一個(gè) TPOTRegressor或者 TPOTClassifier 的對(duì)象實(shí)例,然后將在數(shù)據(jù)庫(kù)上表現(xiàn)最好的那個(gè)模型輸出。配置實(shí)例主要包括兩個(gè)部分:
1)模型的評(píng)價(jià)指標(biāo),包括交叉驗(yàn)證的方案和衡量的性能指標(biāo)等。最好通過(guò)在配置中明確定義。例如,在回歸問(wèn)題中,可以指定RepeatedKFold 以及‘neg_mean_absolute_error‘;在分類問(wèn)題中,指定RepeatedStratifiedKFold 和‘a(chǎn)ccuracy’.
2)全局隨機(jī)搜索過(guò)程的設(shè)置。對(duì)于一個(gè)進(jìn)化算法的過(guò)程,包括的設(shè)置有,種群的大小、迭代的代數(shù)、交叉和變異的比率等。前面幾個(gè)參數(shù)對(duì)于控制搜索的范圍極端重要,后面的幾個(gè)參數(shù)則可以使用默認(rèn)的參數(shù)。
(三)一個(gè)TPOT 用于分類任務(wù)的例子
聲吶數(shù)據(jù)是一個(gè)標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)數(shù)據(jù)集,有 208 行數(shù)據(jù),每行 60 個(gè)數(shù)值輸入變量,以及二值化的輸出值,即一個(gè)二分類問(wèn)題[2]。一個(gè)簡(jiǎn)單的模型就可以達(dá)53%的準(zhǔn)確性。一個(gè)表現(xiàn)最好的模型,則可以達(dá)到 88%的準(zhǔn)確性。這就為這個(gè)數(shù)據(jù)集提供了一個(gè)期望的性能表現(xiàn)范圍。
第一步,定義模型的評(píng)價(jià)指標(biāo)。我們會(huì)用 3 次重復(fù)的 10 折交叉驗(yàn)證(repeated stratified k-fold cross-validation)。第二步,在遺傳算法中指定種群的大小為 50,然后迭代 5代。需要注意的是,每次的運(yùn)行結(jié)果都可能不同。這是由于遺傳算法隨機(jī)的本質(zhì)所決定的,又或者是數(shù)值精度的不同所決定的。在運(yùn)行的過(guò)程中,表現(xiàn)最好的模型的精度將會(huì)在屏幕打印出來(lái)。
在本例子中,我們可以看到表現(xiàn)最好的 pipeline 可以達(dá)到 86.6%的精度。pipeline中最好的模型將保存到一個(gè)名字叫做”tpot_sonar_best_model.py” 的文件中,如圖 2 所示。
需要注意的是,這些生成的代碼并不是可以運(yùn)行的。這只是一個(gè)模板,需要復(fù)制到自己的項(xiàng)目中,然后更改相應(yīng)的地方,如數(shù)據(jù)來(lái)源,存儲(chǔ)路徑等。從生成的代碼中可以看出,表現(xiàn)最好的 pipeline 包含了樸素貝葉斯和 Gradient Boosting模型。學(xué)生可以通過(guò) TPOT 生成的代碼,對(duì)比自己搭建的模型,然后從中學(xué)習(xí),提高機(jī)器學(xué)習(xí)建模的水平。
參考文獻(xiàn):
[1]周志華,機(jī)器學(xué)習(xí),清華大學(xué)出版社,2016
作者簡(jiǎn)介:
羅曉牧(1980-),男,廣東省廣州市(籍貫),現(xiàn)職稱:副教授,學(xué)歷:工科博士研究生畢業(yè),研究方向:機(jī)器學(xué)習(xí),無(wú)線傳感器網(wǎng)絡(luò),生物信息獲取。工作單位:廣東省廣州市番禺區(qū)廣州大學(xué)城廣州中醫(yī)藥大學(xué)醫(yī)學(xué)信息工程學(xué)院。
基金來(lái)源:廣州中醫(yī)藥大學(xué)教學(xué)改革項(xiàng)目 A3-0433-181-427-039