左一鵬, 陳 輝
(上海電力大學 自動化工程學院, 上海 200090)
機器學習中的數據分類問題在機器人導航、無人駕駛、垃圾郵件過濾、手寫數字的識別等領域中扮演著不可或缺的角色[1]。常見的數據分類算法有K近鄰[2]、樸素貝葉斯[3]、決策樹[4]、Logistic回歸[5]和支持向量機(Support Vector Machines,SVM)[6]。目前應用最為廣泛的是SVM分類器,其核心思想是線性分類器,最初解決線性可分問題,然后拓展到非線性映射,將低維空間內不可分的樣本映射成高維空間線性可分的樣本,通過超平面將樣本分割成不同類別。SVM分類器的優勢在高維空間內非常有效,即使在數據維度比樣本數量大的情況下仍然可高效利用內存。SVM的核函數的通用性較強,可根據數據集的特點選擇核函數類型以及參數。SVM分類器存在的問題是對小量數據分類時易出現過擬合現象,泛化性不強。帶有核函數的SVM一般依靠經驗選擇參數,且僅能達到局部最優,手動調參方式的效率低下,實際應用困難。針對SVM參數調整問題,目前學者們已提出很多種優化算法,如人工蜂群算法結合SVM[7],基于蝙蝠算法優化的方法結合SVM[8]和結合KNN算法的改進[9]等。但是針對SVM使用過程中的參數選擇,沒有一個固定的方法。
本文從提高實際使用時效率的角度出發,針對SVM參數調整及優化問題,提出一種基于Scikit-Learn的SVM參數調整優化方法。結合網格搜索以及交叉驗證的方法對最優參數范圍進行搜索,利用Python機器學習庫Scikit-Learn對不同參數、不同核函數的分類結果進行可視化觀察,并在網格上顯示其最優參數范圍,尋找準確率高的參數分布,再通過迭代的方法提高對最優參數的求解,最終實現數據的準確分類。……