AI產品經理必懂算法:支持向量機SVM

2020-12-15 人人都是產品經理

作為AI產品經理必懂算法的第二篇,來了解一下支持向量機SVM算法,英文全稱是「Support Vector Machine」。在機器學習中,SVM是監督學習下的二分類算法,可用於分類和回歸任務。

首先我們來玩兒一個分豆子的經典遊戲,可以想像一堆的紅豆、綠豆,散布在一個高維空間中,豆子的特徵有多少,空間的維數就有多少。相應的,各個豆子的位置就是其對應各特徵的坐標值。如果想儘可能完美地一下把豆分開,SVM就是用來找到分豆神器的方法,換個比較專業的說法就是尋找最優的「超平面」。

備註:超平面是純粹的數學概念,不是物理概念,它是平面中的直線、空間中的平面的推廣,只有當維度大於3,才稱為「超」平面。

SVM的核心任務就是:構建一個N-1維的分割超平面來實現對N維樣本數據放入劃分,認定的分隔超平面兩側的樣本點分屬兩個不同類別。

我們還是從一個最為簡單的示例開始講起(二維平面):

情況1:請大家觀察一下,A、B、C三條直線哪一條才是正確的分類邊界呢?顯而易見,只有A「完整」的區分了兩種數據的決策邊界。

情況2:與情況1不同的是,上圖中,A、B、C三條線都完整的區分了邊界,那我們應該如何選擇呢?既然能分豆的工具這麼多,那我們理所當然應該找一個最好的是不是?最佳答案應該是B,因為B與邊數據的距離是最遠的,之所以選擇邊距最遠的線,是因為這樣它的容錯率更高,表現更穩定,也就是說當我們再次放入更多的豆的時候,出錯的概率更小。

那麼由此推導出,SVM的分類方法,首先考慮的是正確分類;其次考慮的優化數據到邊界的距離。

接下來更麻煩的情景出現了,請看下圖,這堆豆子要怎麼分?如果這是在一個二維平面上,這些豆子應該用一條什麼線來劃分呢?

難道我們真的要在畫一條無限曲折的線去劃分嗎?如果再怎樣曲折還是無法區分又該怎麼做呢?這就是線性不可分的情況,其實在現實生活中,大量的問題都線性不可分,而SVM正是處理這種線性不可分情況的好幫手。

處理這類問題的辦法就是,將二維平面轉化到一個三維空間,因為往往在低維空間下的非線性問題,轉化到高維空間中,就變成了線性問題。比如說上面的圖也許就變成了下方的情況。

如上圖所示,即三維樣本數據被二維平面劃分,在二維空間中的不可分問題也被轉換成了三維線性可分問題,可以被支持向量機處理。基於這個思想,SVM採用核函數來實現低維空間到高維空間的映射,從而在一定程度上解決了低維空間線性不可分的問題。

下面我們簡述一下關於核函數的定義,以利於進一步理解他的作用。

核函數:任意兩個樣本點在擴維後的空間的內積,如果等於這兩個樣本點在原來空間經過一個函數後的輸出,那麼這個函數就叫核函數。

作用:有了這個核函數,以後的高維內積都可以轉化為低維的函數運算了,這裡也就是只需要計算低維的內積,然後再平方。明顯問題得到解決且複雜度極大降低。總而言之,核函數它本質上隱含了從低維到高維的映射,從而避免直接計算高維的內積。

常用的核函數有如下一些:例如線性核函數、多項式核函數、徑向基核函數(RBF)、高斯核函數、拉普拉斯核函數、sigmoid核函數等等。

簡單的理解了SVM的原理,我們再來了解一下模型的訓練過程。

被所有的樣本和其對應的分類標記交給算法進行訓練。如果發現線性可分,那就直接找出超平面。如果發現現行不可分,那就映射到n+1維的空間,找出超平面。最後得到超平面的表達式,也就是分類函數。最後,我們要了解的是SVM的優勢以及缺陷,以便進一步加深理解。

優點:

效果很好,分類邊界清晰;在高維空間中特別有效;在空間維數大於樣本數的情況下很有效;它使用的是決策函數中的一個訓練點子集(支持向量),所以佔用內存小,效率高。缺點:

如果數據量過大,或者訓練時間過長,SVM會表現不佳;如果數據集內有大量噪聲,SVM效果不好;SVM不直接計算提供概率估計,所以我們要進行多次交叉驗證,代價過高。

相關焦點

  • 支持向量機(SVM)算法總結
    版權所有©德塔精要,轉載請註明出處 支持向量機算法作為機器學習領域的經典算法,從被提出開始提出後快速發展,在很多場景和領域都取得了非常好的效果
  • 如何學習SVM(支持向量機)以及改進實現SVM算法程序?
    MLNLP」,選擇「星標」公眾號重磅乾貨,第一時間送達編輯:憶臻https://www.zhihu.com/question/31211585/answer/640501555本文僅作為學術分享,如果侵權,會刪文處理如何學習SVM(支持向量機
  • 機器學習算法筆記-SVM支持向量機簡介及JAVA小實現
    前言最近開始學習一些機器學習裡的主要算法,SVM支持向量機是我目前產品裡用到的核心算法,想在這裡把我學到的一些東西記錄下來。
  • 機器學習的分類算法之SVM(支持向量機)
    引言SVM(Support Vector Machine,支持向量機)是機器學習中的有監督線性分類算法
  • 支持向量機SVM原理(參數解讀和python腳本)
    這是線性支持向量機,LSVM非線性SVM可以轉換為多維空間支持向量機支持向量缺點:1.如果數據特徵(維度)大於樣本量,支持向量機表現很差2.支持向量機不提供概率區間估計支持向量機,在sklearn裡面,有兩種,SVC支持向量分類,用於分類問題,SVR,支持向量回歸,用於回歸問題。
  • 【典型算法】SVM算法
    支持向量機是一個相對較新和較先進的機器學習技術,最初提出是為了解決二類分類問題,現在被廣泛用於解決多類非線性分類問題和回歸問題。繼續閱讀本文,你將學習到支持向量機如何工作,以及如何利用R語言實現支持向量機。支持向量機如何工作?
  • 支持向量機(SVM)原理剖析
    這顯示出支持向量機的一個重要性質:「訓練完成後,大部分的訓練樣本都不需要保留,最終模型僅與支持向量有關」。綜合以上討論,我們可以得到「線性支持向量機」學習算法如下:「輸入」:訓練數據集 對於輸入空間中的非線性分類問題,可以通過非線性變換將它轉化為某個維特徵空間中的線性分類問題,在高維特徵空間中學習線性支持向量機。
  • 關於支持向量機(SVM)的原理,你了解多少?(萬字長文 速收)
    其實Coursera的課堂上Andrew Ng講過支持向量機,但顯然他沒有把這作為重點,加上Ng講支持向量機的方法我一時半會難以完全消化,所以聽的也是一知半解。真正開始了解支持向量機就是看的這篇「三重境界」,之後才對這個算法有了大概的概念,以至如何去使用,再到其中的原理為何,再到支持向量機的證明等。總之,這篇文章開啟了我長達數月的研究支持向量機階段,直到今日。」
  • 機器學習算法入門之「支持向量機」
    在之前的文章中,我們已經介紹過兩個分類算法,一個是KNN算法,一個是邏輯回歸算法。其中,KNN算法的分類依據是距離,邏輯回歸算法的分類依據是概率。本文要介紹的支持向量機,也是在分類問題中被廣泛應用的一種算法,先來看一下它的定義。
  • 動手寫機器學習算法:SVM支持向量機(附代碼)
    ,其中:線性可分的,指定核函數為linear:'''data1——線性分類'''data1 = spio.loadmat('data1.mat')X = data1['X']y = data1['y']y = np.ravel(y)plot_data(X,y)model = svm.SVC
  • 支持向量機SVM來預測晶片未知信息
    本文是用支持向量機SVM的方法去預測未知樣本的信息。
  • 如何學習SVM?怎麼改進實現SVM算法程序?答案來了
    【導讀】在 3D 動作識別領域,需要用到 SVM(支持向量機算法),但是現在所知道的 SVM 算法很多很亂,相關的程序包也很多,有什麼方法可以幫助我們更好地理解
  • 經典算法解讀:一文看懂支持向量機以及推導
    還有一個更加強大的算法廣泛的應用於工業界和學術界,它被稱為支持向量機(Support Vector Machine)。與邏輯回歸和神經網絡相比,支持向量機,或者簡稱SVM,在學習複雜的非線性方程時提供了一種更為清晰,更加強大的方式。因此,在接下來的視頻中,我會探討這一算法。在稍後的課程中,我也會對監督學習算法進行簡要的總結。
  • 一個簡單的案例帶你了解支持向量機算法(Python代碼)
    相反,「支持向量機」就像一把鋒利的刀—它適用於較小的數據集,但它可以再這些小的數據集上面構建更加強大的模型。現在,我希望你現在已經掌握了隨機森林,樸素貝葉斯算法和模型融合的算法基礎。如果沒有,我希望你先抽出一部分時間來了解一下他們,因為在本文中,我將指導你了解認識機器學習算法中關鍵的高級算法,也就是支持向量機的基礎知識。
  • 【機器學習基礎】數學推導+純Python實現機器學習算法8-9:線性可分支持向量機和線性支持向量機
    但實際上在神經網絡興起之前,基於感知機的另一種模型——支持向量機,同樣可以解決非線性問題。     支持向量機一般來說有三種任務類型:線性可分情況,近似線性可分情況以及線性不可分情況。針對這三種分別線性可分支持向量機、線性支持向量機和線性不可分支持向量機。筆者將分三次對這三種支持向量機進行介紹。
  • SVM 支持向量機算法-實戰篇
    1,SVM 的實現SVM 算法即可以處理分類問題,也可以處理回歸問題。sklearn 庫的 svm 包中實現了下面四種 SVM 算法:LinearSVC:用於處理線性分類問題。SVC:用於處理非線性分類問題。
  • 如何學習SVM(支持向量機)以及改進實現SVM算法程序 - 雷鋒網
    雷鋒網 AI 科技評論按,本文為韋易笑在知乎問題如何學習SVM(支持向量機)以及改進實現SVM算法程序下面的回覆,雷鋒網 AI 科技評論獲其授權轉載。以下為正文:學習 SVM 的最好方法是實現一個 SVM,可講理論的很多,講實現的太少了。
  • AI產品經理必懂算法:決策樹
    AI產品經理必懂算法的第三篇終於來了,今天想和大家聊的是決策樹,閒言少敘,切入正題。接下來了解下決策樹算法的演進歷史,這其中就包含了主流的幾種決策樹算法,順便我們也可以了解一下這幾種決策樹的差別。1. ID3(Iterative Dichotomiser 3)J.R.Quinlan在20世紀80年代提出了ID3算法,該算法奠定了日後決策樹算法發展的基礎。ID3採用香濃的信息熵來計算特徵的區分度。
  • 支持向量機(SVM)說明及示例
    支持向量機(SVM)可以解決支持分類和回歸問題,這兩個問題的解決都是通過構造函數h來實現的,該函數將輸入向量x與輸出y進行匹配:y = h(x )優缺點優點:該算法可以基於內核對線性和非線性問題的極限進行建模。它對於「過擬合」也非常可行,尤其是在大空間中。
  • 從零推導支持向量機 (SVM) | 雷鋒網
    3.3 支持向量定理 14 (線性支持向量機的 KKT 條件). 線性支持向量機的 KKT 條件如下。序列最小化 (SMO) [10]是一個利用支持向量機自身特性高效的優化算法。SMO 的基本思路是坐標下降。定義 7 (坐標下降). 通過循環使用不同坐標方向,每次固定其他元素,只沿一個坐標方向進行優化,以達到目標函數的局部最小,見算法 1.