統計學習方法(四) 支撐向量機
又再一次看到SVM這一章了啊,其實每次想起SVM我內心都是十分?敬畏(誤)?的,其原始思想倒是易懂,但其中涉及到的對偶問題轉換,凸二次規劃問題,核函式,正定核,SMO,這些用法裡面每一個都包含太多公式,太多推導。對於其中的一些數學思想,我以為自己不應當去深究了,但同時我又對知識充滿了?渴求(大誤)?,額。。
一.支撐向量機
模型:超平面w*x+b=0, 決策函式f(x) = sign(w*x+b)
策略:軟/硬間隔最大化(軟間隔最大化等價於最小化合頁損失函式,正則化的--結構風險最小化)
演算法:凸二次優化演算法,SMO...
因為決策函式是sign(), 所以SVM用於二分類;分類面是超平面,所以本質上是線性分割(後面介紹的核技巧,雖是對輸入空間的非線性分割,但實質上還是對高維特徵空間的線性劃分)。因為是凸優化問題,所以實際handle的時候會涉及到對偶問題(有利於求解,同時引出了核技巧中的思想)。
軟間隔最大化,實際等價於合頁損失函式最小化問題,合頁損失函式比0-1損失函式更為複雜,其只有在確信度足夠高的時候損失才為0。
二.函式間隔與幾何間隔
函式間隔定義為 r^ = yi*(w*xi+b),
幾何間隔定義為r = yi*(w*xi+b)/||w|| 這樣使得對同一個超平面和同一樣本點而言幾何間隔是確定的(因同一超平面有不同的表示式,通過等比例變化w和b)
三.間隔最大化
在感知機中,我們也是使用超平面來分離兩類樣本點,其中超平面的選擇是通過最小化誤分類點到超平面的總距離。
而SVM中,直觀思想是:對訓練資料找到幾何間隔最大的超平面意味著以充分大的確信度分類訓練資料。
1)硬間隔最大化:
對於線性可分的資料集,直接通過硬間隔最大化來進行優化(因為函式間隔並不影響最優化問題的解,令其為1)。
其優化問題是凸二次規劃,上面講到可以用對偶問題來handle,通過拉格朗日對偶性。(前面說到對偶形式有助於引入核技巧,是因為對偶形式中只涉及到輸入x的內積。)
在該策略下,不存在誤分類的點,在整個優化過程中只有距離決策面最近的點影響了最終的優化結果,我們稱之為支撐向量。只有支撐向量變化才會引起決策面的變化。
2)軟間隔最大化
對於線性可分的資料集,實際中也可能存在一些特異點outlier(比如噪聲點),這時候我們引入一個鬆弛變數來放鬆要求。
同樣,也將原始優化問題轉化成對偶問題,方便求解。
因為引入了鬆弛變數,分類超平面並不能完美的正確分割所有樣本點。那麼此時,支撐向量包括了在間隔邊界上,在間隔邊界與分離超平面之間,以及在超平面誤分一側的點(也就是除了在正確分類間隔一側的點),因為這些點都會影響分離超平面(最優化結果)。
上面講到,軟間隔最大化等價於最小化合頁損失函式,合頁損失函式比0-1損失函式更為複雜,其只有在確信度足夠高的時候損失才為0。
四.非線性支撐向量機與核函式
1)核技巧的思想:
實際中存在很多非線性可分的資料集,但是將其進行合適的升維之後可以變成線性可分的。這就是核技巧的思想--將輸入空間通過非線性對映到高維特徵空間,就可以使用SVM進行線性分割了。
2)核技巧的使用方法:
上面講到要學習的對偶問題只涉及x之間的內積,通過引入正定的核函式(正定如何證明,看起來太複雜,被我略了),可以用核函式替代內積表示式(在這個過程中我們不需要知道輸入空間到特徵空間的具體對映關係,實際應用中只需要選擇合適的常用核函式就好了)
五.序列最小化演算法
上面講到SVM學習演算法要解決的是一個凸二次優化問題,有許多的最優化演算法可用於解決這一問題,但是當樣本容量很大時,它們的都變得十分低效。所以實際應用中,我們要尋找更高效的快速實現演算法。SMO ( Sequential Minimal Optimization ) 就是一個常用的高效快速實現演算法,用於SVM的學習。
SMO演算法的基本思想就是將大優化問題分解為多個小優化問題(因為對它們進行順序求解的結果與它們作為整體來求解的結果是一致的),基本思路是:如果所有變數都滿足此最優化問題的KKT條件,那麼該最優化問題的解就得到了。SMO是一種啟發式演算法。演算法的基本實現方法是:每次在每個子問題中選擇兩個變數( alpha_i,alpha_j ),因為所有alpha之和固定,選擇兩個變數,實質上只有一個變數(一個可以用另一個來表示),於是問題就變成了一個簡單地二次規劃,其基本形式為對a*x^2+b*x+c求極值,不過同時還要注意約束條件(對所求極值進行剪輯)。【變數具體如何選擇我也沒怎麼看- -】
【問:為什麼要同時選擇兩個變數進行優化呢? 答:因為原問題存在一個約束條件就是所有alpha之和固定,若要改變其中一個變數,必然要改變另一個。】
相關文章
- 學習Opencv2.4.9(四)---SVM支援向量機OpenCV
- 學習型組織的資訊化支撐
- 統計學習方法筆記-感知機學習方法筆記
- 統計學習方法——感知機模型模型
- 統計學習方法
- 如何利用資料來支撐設計?
- 系統學習NLP(十四)--句子向量與篇章向量
- 監督學習之支援向量機
- 【統計學習方法|筆記】第1章 統計學習方法理論筆記
- 支撐程式設計師的三種精神程式設計師
- 統計學習方法筆記筆記
- 關於公司系統支撐工作的建議
- 學習SVM(四) 理解SVM中的支援向量(Support Vector)
- 統計學習方法c++實現之一 感知機
- 私有云如何執行深度學習?看ZStack+Docker支撐GPU業務實踐深度學習DockerGPU
- 架構視覺化支撐系統演進探索架構視覺化
- 什麼是電信業務運營支撐系統?
- 《統計學習方法》第11章習題
- 分析如何支撐高併發?
- 雲端計算支撐電商生態鏈健康發展
- 模式識別問題——支援向量機、數理統計方法、聚類分析模式聚類
- 支撐無伺服器計算,傳統儲存方案已經行不通了伺服器
- UA MATH567 高維統計II 隨機向量5 亞高斯隨機向量H5隨機
- [譯] 支撐現代儲存系統的演算法演算法
- 統一PaaS架構支撐IT應用開發敏捷化架構敏捷
- 統計學習方法——實現AdaBoost
- 統計學習方法(二)決策樹
- 智慧時代,企業需要怎樣的計算力支撐?
- 如何支撐微服務架構落地微服務架構
- UA MATH567 高維統計II 隨機向量1 隨機向量的範數H5隨機
- 阿里雲:雲端計算支撐雙11成就人類歷史上最大人機協同阿里
- 《統計學習方法》思維導圖-中
- 《統計學習方法》思維導圖-上
- 支撐百萬併發的資料庫架構如何設計?資料庫架構
- UA MATH567 高維統計II 隨機向量2 各向同性的隨機向量H5隨機
- 計算機網路傳輸層學習筆記---(四)計算機網路筆記
- 中國工業機器人需求支撐日本製造業業績機器人
- 看SparkSql如何支撐企業數倉SparkSQL