羅曉牧 門韶洋 弓偉 崔曼曼


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