支持向量機(Support Vector Machine,SVM)是一種常見的機器學習演算法,主要用於監督式學習的二元分類問題。關於監督式學習是甚麼東西,可參考筆者過去寫的文章說明(https://reurl.cc/jDk4QD),SVM的基本想法是在數據點之間找到一條最優的超平面,如圖表 1的黃線,將不同類別的數據點分開,以達到分類的目的。
圖表1 SVM示意圖
SVM架構主要由核心函式(Kernel Function)與超平面(Hyper-place)兩項組成,這兩項的選擇也會影響整體模型的好壞。SVM算法有不同的核函數可以選擇,例如線性核函數、多項式核函數和高斯核函數等。
線性核函數(Linear)是最簡單的核函數,可以處理線性可分的數據。在醫學應用中,線性核函數常用於分類器的訓練,因為它具有較低的計算複雜度和較好的解釋性。例如,研究人員使用SVM和線性核函數對心臟病患者進行分類,結果顯示線性SVM能夠達到85%的準確率,這表示線性SVM對於心臟病患者的分類具有良好的表現。
非線性核函數可以處理非線性可分的數據,擴展了SVM的應用範圍。常用的非線性核函數包括多項式核函數、高斯(RBF)核函數等。這些函數的選擇對於SVM的性能和結果具有重要影響。一項研究使用SVM和RBF核函數對乳腺腫瘤進行分類,結果顯示RBF-SVM達到了90%的準確率,優於其他方法,這表明RBF核函數能夠更好地捕捉乳腺腫瘤的非線性特徵,提高了分類的準確性。透過多維度的投影技巧,原本在二維空間中難以分割的點在更高維度的空間變得可分。然而,值得注意的是,隨著資料量增加,SVM的運算複雜度也會增加,導致執行速度的下降。
除了核函數的選擇,SVM還涉及到相關參數的調整。例如,C值是SVM中的一個重要參數,控制分類器的容忍錯誤和過擬合程度。在醫學應用中,參數的合理調整可以改善模型的性能和準確性。一項研究使用SVM和遺傳算法來調整SVM的參數,以改善心電圖數據的分類準確率,結果顯示調整後的SVM在心臟病風險預測方面表現出優異的性能,這顯示了通過參數調整,SVM可以更好地適應醫學數據,提高模型的預測準確性。
筆者在整理SVM的相關資料時,有找到一個網站(https://reurl.cc/lgeGkl)可以練習SVM的建模及預測,如圖表 2所示,網站提供兩種輸入資料的方式,一種(左邊)是使用者鍵入Y (分組變項)、X (連續變項)的內容,另一種(右邊)則是透過複製excel的內容貼到網站,但這邊必須配合最右邊是Y,左邊都是X的順序,只需要保留SVM會用到的變項就好。當資料貼好並選擇對應的核函數後,就可以按下TRAIN DATA or CALCULATE。
圖表2 輸入資料畫面
如圖表 3所示,執行SVM後(選擇Linear核函數),可以得到模型的訓練結果,此模型的準確率(accuracy)為100%,其他指標也都為100%,網站也提供視覺化混淆矩陣(confusion matrix)的結果,以下指標也是由混淆矩陣的四個細格去計算的。
- Accuracy(準確率)= (TP+TN)/(TP+FP+FN+TN)
- Precision(準確率) = TP/(TP+FP)
- Recall(召回率) = TP/(TP+FN)
- F1-score = 2 * Precision * Recall / (Precision + Recall)
圖表3 SVM結果
確認模型後,如果要透過此模型去預測新的資料的分類結果,使用者可以自行鍵入用來預測的X數值,然後按下PREDICT後即可以得到模型預測的分組情況,如圖表 4所示。
圖表4 SVM預測結果
總結來說,在醫學應用中,支持向量機(SVM)是一種重要的機器學習算法,SVM的核函數選擇和參數調整對其性能和結果具有重要影響。線性核函數常用於線性可分數據的分類,而非線性核函數可以處理非線性可分數據的問題,提高模型的準確性。通過合理調整相關參數,如C值,可以進一步提高SVM的性能。這些結果強調了在醫學應用中選擇適當的核函數和進行參數調整的重要性,以確保SVM在醫學領域的有效應用。