logo
Loading...

SVM 不同kernel function使用時機 - Cupoy

雖然看過Scikit learn中文件有提到SVM的幾個kernel function(https:...

svm,kernel function

SVM 不同kernel function使用時機

2020/10/02 下午 01:33
機器學習共學討論版
Eliana
觀看數:695
回答數:3
收藏數:2
svm
kernel function

雖然看過Scikit learn中文件有提到SVM的幾個kernel function(https://scikit-learn.org/stable/modules/svm.html#svm-kernels)

但還是不確定這些kernel function的使用時機、要如何選擇等等

謝謝

回答列表

  • 2020/10/03 上午 08:57
    陳明佑 (Ming You Chen)
    贊同數:1
    不贊同數:1
    留言數:0

    實務上, SVM因為計算的"時間複雜度"較高 (演算法名詞, 需要解釋請google)

    所以當資料大到一定數量以上, SVM就很難跑得動

    如果用sklearn的SVM, 超過一萬筆就有失敗機率

    用libsvm, 能撐到十萬左右, 更多還是不行


    簡單的說, 資料數量夠少的機器學習才能用SVM

    不是預測效果的問題, 是會跑不動

  • 2020/10/03 下午 10:45
    Jeffrey
    贊同數:2
    不贊同數:0
    留言數:0

    回歸基本的解釋說明:

    1. SVM的學習方法,用統計風險最小化的原則來估計一個分類的超平面(hyperplane),其基礎的概念就是找到一個決策邊界(decision boundary)讓兩類之間的邊界(margins)最大化,使其可以完美區隔開來

    2. SVM 演演算法使用一組定義為內核的數學函數。內核的功能是將數據作為輸入,並將其轉換為所需的形式。

    3. 不同的 SVM 演演演算法使用不同類型的內核函數。


    使用場景- 創建非線性超平面: 

    1. Polynomial: 它在圖像處理中很受歡迎。

    2. RBF: 它是一個通用內核;在事先對數據沒有瞭解時使用

    3. Sigmoid:可以用它作為神經網路的代理。


    SVM 的一些常見應用是:

    • 人臉檢測 – SVM 將圖像的某些部分分類為人臉和非人臉,並在人臉周圍創建方形邊界。
    • 文本和超文字分類– SVM 允許對歸納模型和轉導模型進行文本和超文本分類。他們使用培訓數據將文檔分類為不同的類別。它根據生成的分數進行分類,然後與閾值進行比較。
    • 圖像分類 –使用 SVM 可提高圖像分類的搜尋精度。與傳統基於查詢的搜索技術相比,它提供了更高的精度。
    • 生物資訊學 – 包括蛋白質分類和癌症分類。我們使用SVM來識別基因的分類,患者基於基因和其他生物問題。
    • 蛋白質摺疊和遠端同源檢測– 應用 SVM 演算法進行蛋白質遠端同源檢測。
    • 手寫辨識– 我們使用 SVM 來識別廣泛使用的手寫字元。
    • 通用預測控制 (GPC) – 使用基於 SVM 的 GPC 使用有用的參數控制混沌動力學。

  • 2020/10/05 上午 01:23
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:0

    嗨,這是一個好問題


    先稍微講一下 kernal function 的目的,目標是在當資料在原始空間中無法被線性分類器有效的分類時,經由非線性投影後的資料能在更高維度的空間中可以更區隔開。例如下圖,將原本二維不同分類的資料轉換成容易分類的三維:




    Kernel 的手法是將資料投到更高維度的空間進行分類,但也有可能需要再搭配降維的操作。常用的 kernel function 有: Linear、polynomial、RBF ,根據不同的資料會有不同的效果跟選擇(這部分我覺得比較難有個標準的解法,實務上建議多試試看)。以下整理幾點重要的特性:


    1. Linear Kernel:最簡單的 kernel 建議先嘗試使用,缺點是難以處理非線性的資料

    2. Polynomial Kernel:在經過非線性轉換後,適合將非線性的資料做更好的區分

    3. RBF kernel:Gaussian 可以作到無限多維的轉換,適用的資料量更彈性,缺點是在於被轉換到無限多維後,模型沒辦法容易的被解讀


    最後還是要強調一點,kernel 的選擇我覺得比較難有個標準的解法,實務上建議多試試看


    很高興可以在這次問答進行討論,如果還有不懂或是模糊的部分也歡迎持續追問。期待你的互動與鼓勵創造出不同更深度的討論。歡迎加入我自己經營的Line 群組社群,會有不定時舉辦的分享活動,一起來玩玩吧!