1. 程式人生 > >Free Mind的支援向量機(SVM)系列

Free Mind的支援向量機(SVM)系列

本文是“支援向量機系列”的第三篇,參見本系列的其他文章

前面我們介紹了線性情況下的支援向量機,它通過尋找一個線性的超平面來達到對資料進行分類的目的。不過,由於是線性方法,所以對非線性的資料就沒有辦法處理了。例如圖中的兩類資料,分別分佈為兩個圓圈的形狀,不論是任何高階的分類器,只要它是線性的,就沒法處理,SVM 也不行。因為這樣的資料本身就是線性不可分的。

對於這個資料集,我可以悄悄透露一下:我生成它的時候就是用兩個半徑不同的圓圈加上了少量的噪音得到的,所以,一個理想的分界應該是一個“圓圈”而不是一條線(超平面)。如果用 來表示這個二維平面的兩個座標的話,我們知道一條二次曲線(圓圈是二次曲線的一種特殊情況)的方程可以寫作這樣的形式:

注意上面的形式,如果我們構造另外一個五維的空間,其中五個座標的值分別為 ,,,,,那麼顯然,上面的方程在新的座標系下可以寫作:

關於新的座標 ,這正是一個 hyper plane 的方程!也就是說,如果我們做一個對映 ,將 按照上面的規則對映為 ,那麼在新的空間中原來的資料將變成線性可分的,從而使用之前我們推導的線性分類演算法就可以進行處理了。這正是 Kernel 方法處理非線性問題的基本思想。

再進一步描述 Kernel 的細節之前,不妨再來看看這個例子對映過後的直觀例子。當然,我沒有辦法把 5 維空間畫出來,不過由於我這裡生成資料的時候就是用了特殊的情形,具體來說,我這裡的超平面實際的方程是這個樣子(圓心在

軸上的一個正圓):

因此我只需要把它對映到 ,, 這樣一個三維空間中即可,下圖(這是一個 gif 動畫)即是對映之後的結果,將座標軸經過適當的旋轉,就可以很明顯地看出,資料是可以通過一個平面來分開的:

現在讓我們再回到 SVM 的情形,假設原始的資料時非線性的,我們通過一個對映 將其對映到一個高維空間中,資料變得線性可分了,這個時候,我們就可以使用原來的推導來進行計算,只是所有的推導現在是在新的空間,而不是原始空間中進行。當然,推導過程也並不是可以簡單地直接類比的,例如,原本我們要求超平面的法向量 ,但是如果對映之後得到的新空間的維度是無窮維的(確實會出現這樣的情況,比如後面會提到的 Gaussian Kernel ),要表示一個無窮維的向量描述起來就比較麻煩。於是我們不妨先忽略過這些細節,直接從最終的結論來分析,回憶一下,我們上一次得到的最終的分類函式是這樣的:

相關推薦

Free Mind支援向量SVM系列

本文是“支援向量機系列”的第三篇,參見本系列的其他文章。 前面我們介紹了線性情況下的支援向量機,它通過尋找一個線性的超平面來達到對資料進行分類的目的。不過,由於是線性方法,所以對非線性的資料就沒有辦法處理了。例如圖中的兩類資料,分別分佈為兩個圓圈的形狀,不論是任何高階的分類器,只要它是線性的,就沒法處理

4.支援向量SVM演算法(下

1.SVM演算法的特點  1.1 訓練好的模型的演算法複雜度是由支援向量的個數決定的,而不是由資料的維度決定的。 所有SVM不太容易產生overfitting 1.2 SVM訓練出來的模型完全依賴於支援向量(Support Vectors),即使訓練集裡面所有非支援向量的點都

3.支援向量SVM演算法(上

SVM 1.基本概念 支援向量機(Support Vector Machine, SVM)的基本模型是在特徵空間上找到最佳的分離超平面使得訓練集上正負樣本間隔最大。SVM是用來解決二分類問題的有監督學習演算法,在引入了核方法之後SVM也可以用來解決非線性問題。  一般SVM有下面三

1. 支援向量SVM原理

1. 前言 在我沒有學習接觸機器學習之前,我就已經聽說了SVM這個機器學習的方法。SVM自它誕生以來就以優秀的分類效能牢牢佔據了霸主地位。 2. SVM原理 支援向量機(Support Vector Machine, SVM)的基本模型是在特徵空間上找到最佳的分離超平面使得訓練集上正負樣本間隔最大。SV

3. 支援向量SVM核函式

1. 前言 之前介紹了SVM的原理和SVM的軟間隔,它們已經可以很好的解決有異常點的線性迴歸問題,但是如果本身是非線性的問題,目前來看SVM還是無法很好的解決的。所以本文介紹SVM的核函式技術,能夠順利的解決非線性的問題。 2. 多項式迴歸 在線性迴歸一節中我們有介紹線性迴歸解決非線性的一個方法就是多項

邏輯迴歸LR支援向量SVM的區別和聯絡

1. 前言 在機器學習的分類問題領域中,有兩個平分秋色的演算法,就是邏輯迴歸和支援向量機,這兩個演算法個有千秋,在不同的問題中有不同的表現效果,下面我們就對它們的區別和聯絡做一個簡單的總結。 2. LR和SVM的聯絡 都是監督的分類演算法。 都是線性分類方法 (不考慮核函式時)。 都是判別

支援向量SVM實現MNIST手寫體數字識別

一、SVM演算法簡述 支援向量機即Support Vector Machine,簡稱SVM。一聽這個名字,就有眩暈的感覺。支援(Support)、向量(Vector)、機器(Machine),這三個毫無關聯的詞,硬生生地湊在了一起。從修辭的角度,這個合成詞最終落腳到”Machine”上,還以

第七章 支援向量SVM

1.1 支援向量機 1.1.1 定義 支援向量機(support vector machine)是一種二分類模型,它的基本模型是定義在特徵空間上的間隔最大的線性分類器間隔最大使它有別於感知機。支援向量機的學習策略是間隔最大化,支援向量機的學習演算法是求解凸二次規劃的最優化演算法。 

支援向量SVM | 文末有福利,絕不是標題黨

1、什麼是SVM 支援向量機(SVM)是一個有監督的機器學習演算法,它可用於分類和迴歸分析,最主要是用在分類問題中。 在這個演算法中,根據特徵值,構建一個n維空間(其中n即使特徵數量)把每個資料點投影到此空間內。 2、資料如何分類 通過查詢一個超平面,把資料區分成兩類。換句話說,演算法

python opencv3.x中支援向量svm模型儲存與載入問題

親自驗證,可以解決svm的模型載入問題:     import numpy as np     from sklearn import datasets         &nb

支援向量SVM和python實現

6. python實現 根據前面的一步步推導獲得的結果,我們就可以使用python來實現SVM了 這裡我們使用iris資料集進行驗證,由於該資料集有4維,不容易在二維平面上表示,我們先使用LDA對其進行降維,又因為該資料集有3類樣本,我們編寫的SVM是二分類的,所以我們將

支援向量SVM和邏輯迴歸(LR)

開篇 為什麼把這兩個機器模型放在一起呢,主要是因為它們經常會在面試中同時出現,這邊把它們放在一起,解析一下它們之間的聯絡和區別。我們先看一下問題 經典演算法問題 LR 與 SVM 的相同和不同? 講一下其中的LR、SVM,以及區別和聯絡(2018京東演算

簡單粗暴理解支援向量SVM及其MATLAB例項

目錄 SVM概述 QP求解 SVM概述 SVM已經是非常流行、大家都有所耳聞的技術了。網路上也有很多相關的部落格,講解得都非常詳細。如果你要從零開始推導一個SVM,細緻摳它全程的數學原理,我建議可以閱讀此篇文章:Zhang Hao的《從零構建支援向

[譯] 支援向量SVM教程

原文地址:Support Vector Machine (SVM) Tutorial 原文作者:Abhishek Ghose 譯文出自:掘金翻譯計劃 本文永久連結:github.com/xitu/gold-m… 譯者:zhmhhu 校對者:TrWestdoor, 1

機器學習-支援向量SVM演算法學習筆記

假設有訓練集D={(x1, y1), (x2, y2), ..., (xm, ym)},yi{-1, 1},分類學習最基本的想法就是基於訓練集D在樣本空間中找到一個劃分超平面,將不同類別的樣本分開。

機器學習筆記支援向量SVM

支援向量機是目前機器學習的眾多演算法中使用得最為廣泛的演算法之一,本文主要介紹支援向量機的概念與原理。 目錄 什麼是支援向量機 硬間隔線性支援向量機 軟間隔線性支援向量機 非線性支援向量機     一、什麼是支援向量機 &nbs

時間序列arima+支援向量svm+優化=組合預測

看見大家想學習組合預測,我今晚就準備加班,給大家上一個arima+svm的組合預測,有什麼不足的請指出了,時間序列是一個大類,我今天主要是給大家展示的是最常用的arima. 這裡原理就不介紹了,只講應用,你可以自己搜尋網上原理或者關注我後面論文,我會專門寫一個

TensorFlow深度學習框架學習:TensorFlow實現線性支援向量SVM

SVM的原理可以參考李航的《統計學習方法》 具體程式碼如下,程式碼都有註釋的 #1、匯入必要的庫 import matplotlib.pyplot as plt import numpy as np import tensorflow as tf fro

機器學習——支援向量SVM

本文主要參考吳恩達《機器學習》課程,以及網上各個大牛們的博文。 支援向量機,是一種對線性和非線性資料進行分類的方法。它按以下方法工作:使用一種非線性對映,把原訓練資料對映到較高的維上,在新的維上,它搜尋最佳分離超平面。使用到足夠高維上的、合適的非線性對映,兩個類的資料總可以

機器學習筆記——支援向量SVM

支援向量機 除了之前講的機器學習的方法,還有一種常用的方法叫做支援向量機。我們將logistic迴歸的假設函式以及代價函式稍加更改就可以得到支援向量機的模型 另外還有不同的是SVM的輸出並不是一個概率值,而是0或1 大間隔 我們說SVM是一種大間隔演算法,意思是我們