機器學習09支持向量機

支持向量機(Support Vector Machines)

在監督學習中,許多學習算法的性能都非常類似,因此,重要的不是你該選擇使用學習算法 A 還是學習算法 B,而更重要的是,

應用這些算法時,所創建的大量數據在應用這些算法時,表現情況通常依賴于你的水平。

如:你為學習算法所設計的特征量的選擇,以及如何選擇正則化參數,諸如此類的事。

還有一個更加強大的算法廣泛的應用于工業界和學術界,它被稱為支持向量機(Support Vector?Machine)。

與邏輯回歸和神經網絡相比,支持向量機,或者簡稱 SVM,在學習復雜的非線性方程時提供了一種更為清晰,更加強大的方式。


與Logistics回歸成本函數的不同:

1、刪去常量?1/m ;

2、Logistic:A+λ×B,SVM:?C×A+B。如果給定λ一個非常大的值,意味著給予 B 更大的權重。而這里,就對應于將 C 設定為非常小的值,那么,相應的將會給 B 比給 A 更大的權重。因此,這只是一種不同的方式來控制這種權衡或者一種不同的方法, 即用參數來決定是更關心第一項的優化, 還是更關心第二項的優化。當然你也可以把這里的參數 C 考慮成 1/λ,同 1/λ 所扮演的角色相同。

3、Logistic輸出概率,SVM直接預測y的值為0還是1。



?成本函數:




接下來會考慮一個特例:將常數 C 設置成一個非常大的值。

比如假設 C 的值為100000 或者其它非常大的數,然后來觀察支持向量機會給出什么結果?

如果 C 非常大,則最小化代價函數的時候,我們將會很希望找到一個使第一項為 0 的最優解。即不希望出現分錯的點,相當于過擬合。

此時,兩類點完全分類正確。黑線有更大的距離,這個距離叫做間距 (margin)。?

當畫出這兩條額外的藍線,看到黑色的決策界和訓練樣本之間有更大的最短距離。然而粉線和藍線離訓練樣本就非常近,在分離樣本的時候就會比黑線表現差。因此,這個距離叫做支持向量機的間距, 而這是支持向量機具有魯棒性的原因, 因為它努力用一個最大間距來分離樣本。 因此支持向量機有時被稱為大間距分類器,。



將這個大間距分類器中的正則化因子常數 C 設置的非常大,我記得我將其設置為了 100000,因此對這樣的一個數據集,也許我們將選擇這樣的決策界,從而最大間距地分離開正樣本和負樣本。 那么在讓代價函數最小化的過程中,我們希望找出在 y=1 和 y=0 兩種情況下都使得代價函數中左邊的這一項盡量為零的參數。如果我們找到了這 樣的參數,則我們的最小化問題便轉變成:?



事實上, 支持向量機現在要比這個大間距分類器所體現得更成熟。

?尤其是當你使用大間距分類器的時候,你的學習算法會受異常點 (outlier) 的影響。


在這里,如果你加了這個樣本,為了將樣本用最大間距分開,也許我最終會得到這條粉色的線,僅僅基于一個異常值就將決策界從這條黑線變到這條粉線,這實在是不明智的。而如果正則化參數 C,設置的非常大,這事實上正是支持向量機將會做的。

但是如果 C?設置的小一點,則你最終會得到這條黑線。

因此,大間距分類器的描述,僅僅是從直觀上給出了正則化參數 C 非常大的情形,同時,要提醒你 C 的作用類似于 1/λ,λ是我們之前使用過的正則化參數。這只是C 非常大的情形,或者等價地λ非常小的情形。你最終會得到類似粉線這樣的決策界,但是實際上應用支持向量機的時候,當 C 不是非常非常大的時候,它可以忽略掉一些異常點的影響,得到更好的決策界。甚至當你的數據不是線性可分的時候,支持向量機也可以給出好的結果。?


回顧 C=1/λ,因此:?
C 較大時,相當于 λ 較小,可能會導致過擬合,高方差。?
C 較小時,相當于 λ 較大,可能會導致低擬合,高偏差。?


這節課給出了一些關于為什么支持向量機被看做大間距分類器的直觀理解。它用最大間距將樣本區分開,盡管從技術上講,這只有當參數 C 是非常大的時候是真的,但是它對于理解支持向量機是有益的。?


—————————————————————————————————————————————————————————


?Mathematics Behind Large Margin Classification






—————————————————————————————————————————————————————————————————————————————


核函數

回顧我們之前討論過可以使用高級數的多項式模型來解決無法用直線進行分隔的分類問題:


為了獲得上圖所示的判定邊界,我們的模型可能是:

可以用一系列的新的特征 f 來替換模型中的每一項。例如令:

得到 hθ(x)=f1+f2+...+fn。


然而,除了對原有的特征進行組合以外,有沒有更好的方法來構造 f1,f2,f3?

可以利用核函數來計算出新的特征。




這里是一個高斯核函數(Gaussian?Kernel)。?

注:這個函數與正態分布沒什么實際上的關系,只是看上去像而已。






如果使用高斯核函數,那么在使用之前進行特征縮放是非常必要的。?

另外, 支持向量機也可以不使用核函數, 不使用核函數又稱為線性核函數 (linear kernel)。?

當不采用非常復雜的函數, 或者訓練集特征非常多而實例非常少的時候, 可以采用這種不帶核函數的支持向量機。


?
支持向量機的兩個參數 C 和 σ 的影響:?
C 較大時,相當于 λ 較小,可能會導致過擬合,高方差;?
C 較小時,相當于 λ 較大,可能會導致低擬合,高偏差;?
σ 較大時,導致高方差;?
σ 較小時,導致高偏差。


—————————————————————————————————————————————————————————


使用支持向量機

強烈建議使用高優化軟件庫中的一個, 而不是嘗試自己落實一些數據。

有許多好的軟件庫,我正好用得最多的兩個是 liblinear 和 libsvm。


高斯核函數之外我們還有其他一些選擇,如:?

多項式核函數(Polynomial Kernel)?
字符串核函數(String kernel)?
卡方核函數( chi-square kernel)?
直方圖交集核函數(histogram intersection kernel)?
等等... ?

這些核函數的目標也都是根據訓練集和地標之間的距離來構建新特征。

這些核函數需要滿足 Mercer's 定理,才能被支持向量機的優化軟件正確處理。


多類分類問題?

假設我們利用之前介紹的一對多方法來解決一個多類分類問題。 如果一共有 k 個類, 則我們需要 k 個模型,以及 k 個參數向量 θ。我們同樣也可以訓練 k 個支持向量機來解決多類分類問題。 但是大多數支持向量機軟件包都有內置的多類分類功能, 我們只要直接使用即可。 ?


盡管你不去寫你自己的 SVM(支持向量機)的優化軟件,但是你也需要做幾件事:?
1、是提出參數 C 的選擇。即誤差/方差在這方面的性質。?
2、你也需要選擇內核參數或你想要使用的相似函數,其中一個選擇是:選擇不需要任何內核參數,沒有內核參數的理念,也叫線性核函數。因此,如果有人說他使用了線性核的 SVM(支持向量機),這就意味這他使用了不帶有核函數的 SVM(支持向量機)。?


Logistics和SVM該如何選擇:

下面是一些普遍使用的準則:?

m 為訓練樣本數,n 為特征數。?

(1)如果相較于 m 而言,n 要大許多,即訓練集數據量不夠支持我們訓練一個復雜的非線性模型,我們選用邏輯回歸模型或者不帶核函數的支持向量機。?

(2)如果 n 較小,而且 m 大小中等,例如 n 在 1-1000 之間,而 m 在 10-10000 之間,使用高斯核函數的支持向量機。?

(3)如果 n 較小,而 m 較大,例如 n 在 1-1000 之間,而 m 大于 50000,則使用支持向量機會非常慢,解決方案是創造、增加更多的特征,然后使用邏輯回歸或不帶核函數的支持向量機。?


邏輯回歸和不帶核函數的支持向量機它們都是非常相似的算法, 不管是邏輯回歸還是不帶核函數的 SVM,通常都會做相似的事情,并給出相似的結果。


值得一提的是, 神經網絡在以上三種情況下都可能會有較好的表現, 但是訓練神經網絡可能非常慢,選擇支持向量機的原因主要在于它的代價函數是凸函數,不存在局部最小值。 ?


通常更加重要的是:你有多少數據,你有多熟練是否擅長做誤差分析和排除學習算法, 指出如何設定新的特征變量和找出其他能決定你學習算法的變量等方面,通常這些方面會比你使用邏輯回歸還是 SVM 這方面更加重要。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387253.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387253.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387253.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數學筆記2

數學筆記2——導數2(求導法則和高階導數)和、差、積、商求導法則設uu(x),vv(x)都可導,則:(Cu)’ Cu’, C是常數(u v)’ u’ v’(uv)’ u’ v’(u/v)’ (u’v – uv’) / v21、2不解釋,下面給出3、4的推導過程乘法法則的推導過乘法法則…

機器學習10聚類

無監督學習 在非監督學習中,我們需要將一系列無標簽的訓練數據,輸入到一個算法中, 然后讓它找這個數據的內在結構。 我們可能需要某種算法幫助我們尋找一種結構。圖上的數據看起來可以分成兩個分開的點集(稱為簇)&am…

python 的筆記

語言:Python IDE:Python.IDE 需求 做出彩虹效果 顏色空間 RGB模型:光的三原色,共同決定色相 HSB/HSV模型:H色彩,S深淺,B飽和度,H決定色相 需要將HSB模型轉換為RGB模型 代碼示例&am…

關聯分析(Association analysis)

關聯分析(Association analysis) 簡介 大量數據中隱藏的關系可以以‘關聯規則’和‘頻繁項集’的形式表示。rules:{Diapers}–>{Beer}說明兩者之間有很強的關系,購買Diapers的消費者通常會購買Beer。 除…

機器學習11主成分分析

降維(Dimensionality Reduction) : 一、 降維目的: 目的一:數據壓縮(Data Compression) 目的二:數據可視化(Visualization) 二、 主成分分析(PCA) 主成分…

使用Apriori進行關聯分析(一)

使用Apriori進行關聯分析(一)大型超市有海量交易數據,我們可以通過聚類算法尋找購買相似物品的人群,從而為特定人群提供更具個性化的服務。但是對于超市來講,更有價值的是如何找出商品的隱藏關聯,從而打包促…

主成分分析法 (PCA) 用于數據可視化實驗 -- Matlab版

第一步:下載數據集。 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#pendigits 第二步:改變數據格式。 注:此數據集的各特征值均為像素,即屬于同一量綱,故無需歸一化步驟。 原格式為&a…

后端視角下的前端框架之Vue.js初探

背景 作為常年搞后端的自己來說,除了多年前學習的一點關于HTML的皮毛,對現在的前端技術棧可謂是一竅不通。但是因為最近在做的內部業務全鏈路監控系統,負責前端的同事做到一半去搞別的項目了,為了把項目落地不得不硬著頭皮學一下前…

機器學習12推薦系統

推薦系統(Recommender Systems) 推薦系統根據瀏覽用戶過去買過什么書,或過去評價過什么電影來判斷并推薦新產品給用戶。 這些系統會為像亞馬遜和網飛這樣的公司帶來很大一部分收入。 因此,對推薦系統性能的改善,將對這些企業的有實質性和…

使用Apriori進行關聯分析(二)

使用Apriori進行關聯分析(二)書接上文(使用Apriori進行關聯分析(一)),介紹如何挖掘關聯規則。發現關聯規則我們的目標是通過頻繁項集挖掘到隱藏的關聯規則。所謂關聯規則,指通過某個…

Apache Tomcat 7 Configuration BIO NIO AIO APR ThreadPool

Apache Tomcat 7 Configuration Reference (7.0.93) - The Executor (thread pool)https://tomcat.apache.org/tomcat-7.0-doc/config/executor.html Tomat組件研究之ThreadPool - 老碼農的專欄 - CSDN博客https://blog.csdn.net/chen77716/article/details/344764 Tomcat中的線…

數學筆記3——導數3(隱函數的導數)

數學筆記3——導數3(隱函數的導數)冪函數的擴展形式f(x) xn的導數:f’(x) nxn-1,n是整數,該公式對f(x) xm/n, m,n 是整數同樣適用。推導過程:什么是隱函數引自知乎:“如果方程F(x,y)0能確定y…

機器學習13大規模數據集

大型數據集的學習(Learning With Large Datasets) 如果我們有一個低方差的模型, 增加數據集的規模可以幫助你獲得更好的結果。 我們應該怎樣應對一個有 100 萬條記錄的訓練集? 以線性回歸模型為例,每一次梯度下降…

svn認證失敗,解決方案

在svnserve.conf:文件中去掉authz-db authz前面的#號,會出現的認證失敗。 造成此原因的主要問題就是authz文件中權限沒有配置好。 例如: 創建prj1庫 svnadmin create prj1 修改配置文件 svnserve.conf: [general] anon-access read auth-access write…

Python機器學習庫sklearn的安裝

Python機器學習庫sklearn的安裝 scikit-learn是Python的一個開源機器學習模塊,它建立在NumPy,SciPy和matplotlib模塊之上能夠為用戶提供各種機器學習算法接口,可以讓用戶簡單、高效地進行數據挖掘和數據分析。 Ubuntu14.04系統上安裝 安裝num…

Java07多線程

14 多線程 操作系統的多任務(multitasking):在同一時刻運行多個程序的能力。 多線程在較低的層次上擴展了多任務的概念:一個程序同時執行多個任務。 通常,每一個任務稱為一個線程(tread)&…

MySQL字段拼接Concat

有時候,從數據庫中拿出的數據并不是我們想要的格式,比如,有以下的vendors表 如果,想以 name (location)的格式展現出來,那么就要用到MySQL的Concat了。 Concat()拼接串,即把多個串連接起來形成一個較長的串…

使用pycharm調用模塊后字體變灰 是什么原因呢?

使用pycharm調用模塊后字體變灰 是什么原因呢?點擊小燈泡提示出現以下內容:This inspection detects names that should resolve but dont. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-l…

操作系統01概述

第一章 概論 《Operating System Internals and Design Principles》 《Applied Operating System Concepts》 操作系統——裸機上的第一層軟件,它是對硬件系統功能的首次擴充,填補人與機器之間的鴻溝。 1.1 操作系統與計算機同在 1.2 對操作系統的…

CNN訓練模型 花卉

一、CNN訓練模型 模型尺寸分析:卷積層全都采用了補0,所以經過卷積層長和寬不變,只有深度加深。池化層全都沒有補0,所以經過池化層長和寬均減小,深度不變。http://download.tensorflow.org/example_images/flower_photo…