1. 程式人生 > >機器學習演算法——SVM(支援向量機)

機器學習演算法——SVM(支援向量機)

文章目錄

1. SVM簡介

邏輯迴歸函式的不足:泛化能力不夠強。通過最小化損失函式找到一個決策邊界,通過決策邊界來進行分類。沒有考慮到位置資料的情況。

SVM演算法也是找到決策邊界, 但是SVM讓這條決策邊界離兩邊的資料儘可能的遠(即SVM要最大化margin),這樣不僅對資料進行了一個很好的劃分,而且還考慮了未來的泛化能力。

SVM是一個二元分類演算法,線性分類非線性分類都支援。經過演進,現在也可以支援多元分類,同時經過擴充套件,也能應用於迴歸問題。

2. SVM的一些概念

2.1 函式間隔與幾何間隔

超平面的函式表示式為 w

T x + b = 0 w^Tx+b=0 時:
函式間隔: d
= y ( w T x + b ) d^{'}=y(w^Tx+b)

幾何間隔: d = y ( w T x + b ) w = d w d=\frac{y(w^Tx+b)}{||w||} =\frac{d^{'}}{||w||}

幾何間隔才是點到超平面的真正距離,SVM模型裡用到的距離就是幾何距離。

2.2 支援向量

兩個類別的資料點都儘可能的遠實際上是這兩個類別離決策邊界最近的這些點離決策邊界也盡肯能的遠。其中,最近的這些點被稱為支援向量點

支援向量到超平面的距離為 1 w \frac{1}{||w||} 兩個支援向量之間的距離為 2 w \frac{2}{||w||}

3. SVM模型目標函式與優化

3.1 SVM模型目標函式的推導(線性可分)

對於二維平面上的資料
在這裡插入圖片描述
最大化margin 最大化d
在二維平面d怎麼求?(點到直線的距離公式)
( x , y ) (x,y) A x + B y + C = 0 Ax+By+C=0 的距離用以下公式表示
d = A x + B y + C A 2 + B 2 d=\frac{|Ax+By+C|}{\sqrt{A^2+B^2}}
拓展到n維空間有: θ T x b = 0 \theta^Tx_b=0 w T x + b = 0 w^Tx+b=0

  • θ T \theta^T 裡有n+1個元素, θ 1 , θ n \theta_1,\cdots \theta_n 對應 x 1 , x n x_1,\cdots x_n ,還有一個 θ 0 \theta_0 為截距
  • x b x_b 裡有n+1個元素, x 1 , x n x_1,\cdots x_n ,其中, x 0 = 1 x_0=1
  • w T w^T 裡有n個元素, w 1 , w n w_1,\cdots w_n 對應 x 1 , x n x_1,\cdots x_n
  • b為截距

在n維空間 d怎麼求?
d = w T x + b w d=\frac{|w^Tx+b|}{||w||}
w = w 1 2 + w 2 2 + + w n 2 ||w|| = \sqrt{w_1^2+w_2^2 +\cdots + w_n^2}

{ w T x i + b w d y i = 1 w T x i + b w d y i = 1       { w d T x i + b d 1 y i = 1 w d T x i + b d 1 y i = 1 \begin{cases} \frac{w^Tx^i+b }{||w||}\geqslant d & \forall y^i=1 \\ \frac{w^Tx^i+b}{||w||}\leqslant -d & \forall y^i=-1 \\ \end{cases} \implies \begin{cases} w_d^T x^i + b_d\geqslant 1 & \forall y^i=1 \\ w_d^T x^i+ b_d \leqslant -1 & \forall y^i=-1 \\ \end{cases}

相關推薦

機器學習演算法——SVM(支援向量)

文章目錄 1. SVM簡介 2. SVM的一些概念 2.1 函式間隔與幾何間隔 2.2 支援向量 3. SVM模型目標函式與優化 3.1 SVM模型目標函式的推導(線性可分)

機器學習實戰——SVM支援向量 實現記錄

問題:TypeError: data type not understood alphas = mat(zeros(m,1)) 原因是zeros(())格式不對,更改後: alphas = mat(zeros((m,1))) 問題:關於IDLE中換行,回車前面出現很多空格的情況

PYTHON機器學習實戰——SVM支援向量

支援向量機不是很好被理解,主要是因為裡面涉及到了許多數學知識,需要慢慢地理解。理論知識參考:http://www.cnblogs.com/steven-yang/p/5658362.html 一下附上原始碼:#-*- coding:utf-8 -*- #!/usr/bin/

機器學習之&&SVM支援向量入門:Maximum Margin Classifier

概率論只不過是把常識用數學公式表達了出來。 ——拉普拉斯 0. 前言 這是一篇SVM的入門筆記,來自我對PlusKid、JerryLead、July等大神文章的拜讀心得,說是心得還不如說是讀文筆記,希望在自己理解的層面上給予SVM這個偉大的機

Python/scikit-learn機器學習庫(SVM支援向量)

SVM SVM用於分類、迴歸、異常檢測。 優點: 高維空間有效。 維度小於樣本數時依然有效。 樣本少時表現不好。 分類 多分類: SVC、NuSVC、LinearSVC。SVMs決策函式依賴於訓練資料中一部分,這些向量稱為支援向量。 NuSVC

機器學習筆記(13)---支援向量SVM

前言 學習前幾章很順利,然後就覺得機器學習也不過如此,但學到這章時,發現如果沒有一點理論基礎,是看不懂的(如果不想看懂理論,可直接使用MLiA書上例子,只要知道怎麼把資料組織成演算法支援的資料型別即可),回想起看前幾章為什麼能這麼順利,原因是之前看過一堆相關視

機器學習實戰-55:支援向量分類演算法(Support Vector Machine)

支援向量機分類演算法 支援向量機(Support Vector Machine)分類演算法屬於監督學習演算法。常用分類演算法包括:邏輯迴歸(Logistic Regression, LR)、K最近鄰(k-Nearest Neighbor, KNN)、樸素貝葉斯

python機器學習庫sklearn——支援向量svm

支援向量機的優勢在於: 在高維空間中非常高效.即使在資料維度比樣本數量大的情況下仍然有效. 在決策函式(稱為支援向量)中使用訓練集的子集,因此它也是高效利用記憶體的. 通用性: 不同的核函式與特定的決策函式一一對應.常見的 kernel 已經提供,也

王小草【機器學習】筆記--支援向量SVM

標籤(空格分隔): 王小草機器學習筆記 1.SVM的原理與目標 1.1 分割超平面 來看上圖,假設C和D是兩個不想交的凸集,則存在一個超平面P,這個P可以將C和D分離。 這兩個集合的距離,定義為兩個集合間元素的最短距離。 做集合C和集合

機器學習 --- 軟間隔支援向量

一、軟間隔支援向量機直觀理解 之前所介紹的支援向量機形式都是要求所有的樣本都要能被正確地劃分,這又被稱作"硬間隔支援向量機",當資料是帶有噪聲的,就可能會產生一些脫離群體的點。在實際情況中,採用硬間隔的方式難以確定合適的核函式使得訓練樣本在特徵空間中線性可分,即使能確定某個核函式能進行很好的劃分

機器學習筆記之支援向量

目的:給定二分類樣本集,想要找一個分離超平面。(魯棒性最好)其基本模型定義為特徵空間上的間隔最大的線性分類器,其學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。 分析:超平面可以由以下方程確定 b為超平面和原點之間的距離,wT決定超平面的方向。樣

Stanford機器學習筆記-8. 支援向量(SVMs)概述

8. Support Vector Machines(SVMs) Content 8. Support Vector Machines(SVMs)       8.1 Optimization Objection       8.2 Large margin intuition       8.

機器學習實戰】支援向量----分類庫和簡單訓練mnist

前面已經對mnist資料集進行了讀取,現在我們可以直接使用sklearn.svm模組中的演算法庫對mnist資料集進行訓練。 【svm模組】 演算法庫: sklearn.svm模組中提供了這些庫: 大概分成這幾類(除了svm_l1_min_c

機器學習筆記8-支援向量(3/3)

機器學習筆記8-支援向量機(3/3) scikit-learn中的SVM函式 機器學習庫scikit-learn中也集成了SVM的函式,可以方便的進行呼叫,可用來分類、迴歸和異常點檢測。 支援向量機的優點有: i)在高維空間效果很好 ii)當維度數大於樣本點數時,效果仍然不錯 i

吳恩達機器學習筆記 —— 13 支援向量

本章講述了SVM,相比於《統計學習方法》,從邏輯迴歸的角度更容易理解了。 從邏輯迴歸來看,看損失值與Z的值的關係: 代入原來的是指,可以化簡公式: 總結來說:如果y=1,我們希望z的值大於等於1,如果y=0,我們希望z的值小於-1,這樣損失函式的值都會為0. 線性可分的決策邊界: 但是這種情況對於

機器學習實戰》支援向量的數學理解及程式實現

一、 引言最近在機器學習課上,學到的《機器學習實戰》第六章的支援向量機,這部分內容非常多,不僅要會程式設計和測試,還要理解它的數學基礎,這裡對這部分的學習進行一些總結。二、 SVM的數學原理從一個簡單的二分問題開始說吧:我們要把這兩類不同的點區分開,那麼在這個二維平面上就是找

斯坦福CS229機器學習筆記-Lecture8- SVM支援向量 之核方法 + 軟間隔 + SMO 演算法

作者:teeyohuang 本文系原創,供交流學習使用,轉載請註明出處,謝謝 宣告:此係列博文根據斯坦福CS229課程,吳恩達主講 所寫,為本人自學筆記,寫成部落格分享出來           博文中部分圖片和公式都來源於CS229官方notes。      

機器學習演算法-python實現】svm支援向量(3)—核函式

1.背景知識 前面我們提到的資料集都是線性可分的,這樣我們可以用SMO等方法找到支援向量的集合。然而當我們遇到線性不可分的資料集時候,是不是svm就不起作用了呢?這裡用到了一種方法叫做核函式,它將低

SVM支援向量-《機器學習實戰》SMO演算法Python實現(5)

經過前幾篇文章的學習,SVM的優化目標,SMO演算法的基本實現步驟,模型對應引數的選擇,我們已經都有了一定的理解,結合《機器學習實戰》,動手實踐一個基本的SVM支援向量機,來完成一個簡單的二分類任務。建立模型之前,首先看一下我們的資料,然後再用支援向量機實現分類:     

[機器學習]svm支援向量介紹

1 什麼是支援向量機 支援向量機是一種分類器,之所以稱為 機 是因為它會產生一個二值決策結果,即它是一個決策機。 ​​​Support Vector Machine, 一個普通的SVM就是一條直線罷了,用來完美劃分linearly separable的兩類。但這又不是一條