2017年5月25日 星期四

scikit-learn 機器學習套件 - 分析 supervised machine learning algorithm 效率

參考資料: http://scikit-learn.org/

套件說明:
scikit-learn此python套件非常適合用於機器學習領域。
機器學習領域一般分為:監督式學習、非監督式學習、增強式學習等
在能拿過去資料並有相關特徵標籤的分析案例而言,一般採用監督式學習演算法。

由於過去研究SVM是當前分類accuracy比較高的算法, 這次透過scikit裡面的內容驗證監督式學習演算法的效率,分析各個算法的效率。

分析程式碼與資源:
相關程式碼參閱下面連結:
http://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html#sphx-glr-auto-examples-classification-plot-classifier-comparison-py

裡面的程式碼片段可以看到所有羅列出來的算法。
names = ["Nearest Neighbors", "Linear SVM", "RBF SVM", "Gaussian Process",
         "Decision Tree", "Random Forest", "Neural Net", "AdaBoost",
         "Naive Bayes", "QDA"]

下面是分析結果示意圖,右下角數值為accuracy:

實驗結論:
實驗中採用三種特性的dataset,第一個是部分特徵數值混在一起的、第二個是線性不可分的資料集合、第三個是簡易可以線性分割的資料集。由圖可知RBF-SVM是在這次實驗當中表現最好的一個算法。

關鍵解析:
重點在於SVM採用的kernel function,解決的線性不可分的資料集合所產生的問題。
其中kernel function原理就是透過內積運算原理將較低維度的空間資料及轉換到高維度的空間,使其資料集合較能夠線性可分,下方示意圖為2維轉換到3維的空間轉換示意圖。

關於kernel function原理請參閱下面連結: https://ireneli.eu/2016/09/13/two-sample-problem2-kernel-function-feature-space-and-reproducing-kernel-map/
關於RBF kernel 請參考:https://read01.com/2xMOa4.html





沒有留言:

張貼留言