機器學習 | 深入SVM原理及模型推導(一)

2021-02-12 TechFlow

今天是機器學習專題的第32篇文章,我們來聊聊SVM。


SVM模型大家可能非常熟悉,可能都知道它是面試的常客,經常被問到。它最早誕生於上世紀六十年代。那時候雖然沒有機器學習的概念,也沒有這麼強的計算能力,但是相關的模型和理論已經提出了不少,SVM就是其中之一。


SVM完全可以說是通過數學推導出來的模型,由於當時還沒有計算機,所以模型當中的參數都是數學家們用手來算的。它有一個巨大的應用就是前蘇聯的計劃經濟體系,我們知道在計劃經濟當中,國家有多少社會資源,每樣商品需要生產多少都是國家統籌規劃的。


但是國家和社會不是一成不變的,去年消耗了多少糧食不意味著今年也會消耗這麼多,很多因素會影響。所以當時前蘇聯的科學家們用當時最先進的方法來計算參數預測各項商品的消耗來完成社會資源的調度,這個最先進的方法就是SVM。


廢話說了這麼多,下面我們就來看看這個模型實際的原理吧。


算法描述


SVM的英文全稱是Support Vector Machine,翻譯過來的意思是支持向量機。無論是英文還是中文,我們直觀上有些難以理解。


難以理解沒有關係,我們先把支持向量這個概念放一放,先來介紹一下它整體的原理。


SVM最基本的原理就是尋找一個分隔「平面」將樣本空間一分為二,完成二分類。進一步我們可以知道,對於二維的平面,我們要分隔數據需要一條線。對於三維的空間我們要分開需要一個面,發散開去對於一個n維的空間,我們要將它分開需要一個n-1的超平面。



SVM尋找的就是這樣的超平面,為了方便理解,我們以最簡單的二維場景為例。



我們觀察一下上圖,很明顯圖中的數據可以分成兩個部分。對於上圖的數據而言理論上來說我們有無數種劃分的方法,我們既可以像左邊這樣隨意的劃分,也可以像右邊這樣看起來嚴謹許多的劃分,在這麼多劃分方法當中究竟哪一種是最好的呢?我們怎麼來定義劃分方法的好和壞呢?


SVM對這個問題的回答很乾脆,右圖的劃分是最好的,原因是它的間隔最大



從圖中我們可以看到,間隔也就是被劃分成兩個部分之間最接近的距離,間隔正中的這條紅線就是SVM找到的用來劃分的超平面。


我們進一步觀察可以發現,對於間隔這個事情來說,絕大多數樣本都不起作用,能夠起作用的只有在落在虛線上也就是間隔邊緣的樣本。是這些樣本確定了間隔,從而間接確定了分隔平面,支撐起了模型。


所以SVM當中把這些落在邊緣上的樣本成為支持向量,這也是SVM得名的由來。


模型推導


我們首先來考慮最簡單的情況,即線性可分,也就是說所有樣本都可以被正確的劃分。這樣劃分出來得到的間隔是實實在在的,所以我們把線性可分的情況下的間隔稱為硬間隔


首先我們先寫出這個分隔平面的公式:



其中x表示一條n維的樣本特徵組成的向量,SVM的平面方程是用來確定平面方向的。這裡的b就是簡單的偏移量,表示平面距離原點的距離。


表示出來分隔平面之後,我們就可以表示出每一個樣本距離平面的距離:



這個公式看起來好像不太明白,其實它是由二維的點到平面的距離公式演化得到的:


這裡的L2範數,我們把它也展開可以寫成:


模型假設


這裡我們做一點假設,對於樣本當中的點,在分隔平面上方的類別為1,在分隔平面下方的類別為-1。那麼我們可以進一步得到**


我們來觀察支持向量,也就是剛好在間隔邊緣的點,它們到分割平面的距離剛好是間隔的一半。我們假設這個點的函數值是



我們令新的將函數值縮放到1,為了方便計算,我們選取恰當的參數,使得間隔剛好為1。既然如此,對於所有的樣本點,我們都可以得到


利用這點,我們可以表示出間隔:


讓這個間隔儘量大,所以這是一個帶約束的線性規劃問題,我們把整個式子寫出來:



接下來我們要做的就是在滿足約束的前提下找到使得


這部分內容我們將會在下一篇文章分享,敬請期待。


今天的文章到這裡就結束了,如果喜歡本文的話,請來一波素質三連,給我一點支持吧(關注、在看、點讚)。

相關焦點

  • 機器學習之sklearn基礎教程!
    本文在基於讀者已經基本了解這些基本算法的原理以及推導的基礎上,使用sklearn工具包進行算法實踐,如果大家沒有掌握基本算法原理,文中也會給出一些優秀的連結方便大家學習。如果大家對基本分類算法的基本原理有需求,可以在評論區寫下自己的需求,我們會根據大家的意見推出相應的分享。
  • svm是什麼?如何找到正確的超平面
    什麼是支持向量機
  • 從零推導支持向量機 (SVM) | 雷鋒網
    摘要支持向量機 (SVM) 是一個非常經典且高效的分類模型。但是,支持向量機中涉及許多複雜的數學推導,並需要比較強的凸優化基礎,使得有些初學者雖下大量時間和精力研讀,但仍一頭霧水,最終對其望而卻步。本文旨在從零構建支持向量機,涵蓋從思想到形式化,再簡化,最後實現的完整過程,並展現其完整思想脈絡和所有公式推導細節。本文力圖做到邏輯清晰而刪繁就簡,避免引入不必要的概念、記號等。此外,本文並不需要讀者有凸優化的基礎,以減輕讀者的負擔。對於用到的優化技術,在文中均有介紹。
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    原標題:機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用高級研修班通信和信息技術創新人才培養工程項目辦公室 通人辦〔2018〕 第5號 機器學習、深度學習算法原理與案例實踐暨Python
  • 萬字長文總結機器學習的模型評估與調參|附代碼下載
    作者 | Sebastian Raschka翻譯&整理 | Sam來源 | SAMshare目錄一、認識管道流1.1 數據導入1.2 使用管道創建工作流二、K折交叉驗證2.1 K折交叉驗證原理2.2 K折交叉驗證實現三、曲線調參
  • 機器學習算法系列(一):logistic回歸
    作者| Ray編輯| 安可出品| 磐創AI技術團隊目錄:一、Logistic分布二、二項Logistic回歸原理三、參數估計四、Logistic回歸的正則化五、Logistic回歸和線性回歸區別六、為什麼Logistic回歸的輸入特徵一般都是離散化而不是連續的
  • 機器學習算法一覽(附python和R代碼)
    不過,這篇文章並沒有闡述這些算法背後的統計學原理,有時候從實踐入手也是很好的學習路徑。如果你希望了解的是這些統計學原理,那麼這篇文章的內容可能並不適合你。 一般說來,機器學習有三種算法: 1.通過這些變量我們可以搭建一個模型,從而對於一個已知的預測變量值,我們可以得到對應的目標變量值。重複訓練這個模型,直到它能在訓練數據集上達到預定的準確度。 屬於監督式學習的算法有:回歸模型,,,K鄰近算法,邏輯回歸等。 2.
  • 使用Flask部署機器學習模型
    介紹我記得我早期在機器學習領域的日子。我喜歡處理多個問題,對機器學習項目的各個階段都很感興趣。和我之前的許多人一樣,我被模型整個生命周期的構建所吸引。我和領域專家談過,項目經理和所有相關人員確保他們的投入被包括在模型中。但後來我遇到了一個障礙——我到底該如何把我的模型交給我的客戶呢?我不能給他們一個Jupyter notebook!
  • 17個機器學習的常用算法!
    在機器學習領域,人們說起回歸,有時候是指一類問題,有時候是指一類算法,這一點常常會使初學者有所困惑。 決策樹:決策樹中很重要的一點就是選擇一個屬性進行分枝,因此要注意一下信息增益的計算公式,並深入理解它。信息熵的計算公式如下:
  • 科學家使用機器學習模型加速理論物理研究
    例如,強力的許多方面需要在質子大小的十分之一到百分之一的尺度上數值模擬動力學,以回答有關質子、中子和原子核性質的基本問題。物理助理教授Phiala Shanahan說:「最終,我們在使用晶格場理論研究質子和核結構方面受到了計算限制。」「我們知道原則上如何解決很多有趣的問題,但我們就是沒有足夠的計算能力,儘管我們使用的是世界上最大的超級計算機。」
  • 機器學習算法基礎(使用Python代碼)
    機器學習算法類型從廣義上講,有3種類型的機器學習算法。1.監督學習工作原理:該算法由一個目標/結果變量(或因變量)組成,該變量將從給定的一組預測變量(自變量)中預測。使用這些變量集,我們生成一個將輸入映射到所需輸出的函數。
  • 機器學習到底需要多少數據?可能並不是越多越好
    機器學習中最值得問的一個問題是,到底需要多少數據才可以得到一個較好的模型?從理論角度,有Probably approximately correct (PAC) learning theory來描述在何種情況下,可以得到一個近似正確的模型。但從實用角度看,PAC的使用範圍還是比較局限的。
  • 機器學習模型的度量選擇一
    類似地,每個機器學習模型都試圖使用不同的數據集來解決目標不同的問題,因此,在選擇度量標準之前了解背景是很重要的。最常用的度量在第一篇博客中,我們將只討論回歸中的度量。回歸度量大多數博客都關注分類指標,比如精確性、召回率、AUC等。為了改變這一點,我想探索各種指標,包括回歸中使用的指標。
  • Python機器學習7:如何保存、加載訓練好的機器學習模型
    本文將介紹如何使用scikit-learn機器學習庫保存Python機器學習模型、加載已經訓練好的模型。學會了這個,你才能夠用已有的模型做預測,而不需要每次都重新訓練模型。本文將使用兩種方法來實現模型的保存和加載:Pickle和joblib。
  • 谷歌今日上線基於TensorFlow的機器學習速成課程
    此外,據機器之心了解,這曾是谷歌內部培訓工程師的課程,有近萬名谷歌員工參與並將學到的東西用在產品的優化和增強上課程地址:https://developers.google.cn/machine-learning/crash-course/按照該課程所述,讀者可能需要初級代數知識,如變量與係數、線性方程組和函數曲線等以理解基本的機器學習模型
  • 95後哈佛小哥撰寫從零開始的機器學習入門必備,書籍資源已開放
    撰寫目的是為讀者提供獨立構建一些基本的機器學習算法的實踐指導,如果用工具箱類比的話,就是教會讀者具體使用一把螺絲刀、一盒捲尺。書中的每一章都對應一種機器學習方法。作者 Danny Friedman 介紹說,學習一種方法的最佳方式就是從零開始(無論是從理論上還是代碼上),因此本書的宗旨也是提供這些推導過程。
  • 機器學習是如何借鑑物理學思想的?從伊辛模型談起(萬字長文)
    而就真有這樣一個神奇的模型,將物理和機器學習緊密聯繫到了一起——它就是伊辛模型。  伊辛模型——一個描述物質磁性的簡單模型——會幫助闡釋兩個領域之間的廣泛聯繫。  今天,文摘菌會先從簡單物理直覺談談這個模型,然後導出物理學中著名的變分原理,從而嚴格推出這個模型。  然後我們就會發現,正是這個變分原理打開了機器學習的窗口。
  • 95後哈佛小哥撰寫《從零開始的機器學習》,入門必備,書籍資源已開放
    書中的每一章都對應一種機器學習方法。作者 Danny Friedman 介紹說,學習一種方法的最佳方式就是從零開始(無論是從理論上還是代碼上),因此本書的宗旨也是提供這些推導過程。每章分為三個部分:首先是從「概念」上進行介紹,並且從數學層面演示推導過程;然後是「構造」部分,如何使用 Python 從零開始演示這些方法;最後的「實現」部分介紹了如何使用 Python 包應用這些方法,比如 scikit-learn、 statsmodels 和 tensorflow。這本書面向的是機器學習領域的新人,或者是希望深入了解算法的學習者。
  • 利用Spark 和 scikit-learn 將你的模型訓練加快 100 倍
    在 Ibotta,我們訓練了許多機器學習模型。當我們使用 Spark 進行數據處理時,我們首選的機器學習框架是 scikit-learn。隨著計算機變得越來越便宜,機器學習解決方案的上市時間變得越來越關鍵,我們探索了加快模型訓練的各種方法。其中一個解決方案是將 Spark 和 scikit-learn 中的元素組合到我們自己的混合解決方案中。
  • 選機器學習課程怕踩雷?有人幫你選出了top 5優質課
    聊天機器人、垃圾郵件過濾、廣告服務、搜尋引擎和欺詐檢測,這些都是機器學習模型在日常生活中的應用實例。機器學習使我們為人類力不能及的事找到模式、創建數學模型。與涉及探索性數據分析、統計學、通信和可視化技術的數據科學課程不同,機器學習課程主要講授機器學習算法、數學原理,以及如何使用某種程式語言寫算法。