機器學習小白最想看的SVM

我通過這篇博客https://blog.csdn.net/d__760/article/details/80387432,對SVM的理解學到很多,具體的推導過程大家可以看裏面,我通過用一種最好不用數學的方式把我的理解展示出來,給一些新手,就像我一樣,以前只會用不知道怎麼來的。

SVM也叫做支持向量機,所謂的支持向量是指在多維空間下進行分類任務中用到的點。簡單來說,SVM主要用來分類,在一個二維空間中,對兩個點進行分類,一條線足矣。那麼在三維,甚至n維空間中對點分類,那麼就沒有一條線了,取而代之是二維空間中直線對應n維空間的超平面,通常是n-1維的,那麼此時距離這個超平面最近的點(兩側到這個面的點,兩個點,一邊一個,每個點都是個向量,n維嘛)就叫做支持向量。

SVM推導用到的知識

  • 點到直線距離(點到超平面距離)
  • 最大間隔的優化
  • 拉格朗日乘子法
  • KKT條件約束
  • 鬆弛變量
  • 核函數

大家不用擔心,這些我會用我大白話來說,保證您能聽懂^_^,拒絕數學公式,哈哈哈

點到(點、直線、超平面)的距離:
首先SVM是一個分類任務,所以就想把兩類東西分開。比如說在一個空間中,可以一維,可以二維,也可以多維。一維的話,兩類東西分佈在一條直線上,那麼一個點就可以把這兩類東西分隔開。二維的話,兩類東西分佈在一個平面上,那麼一條直線就可以把這兩類東西分隔開。同理,三維空間用一個平面分隔,n維空間用一個n-1維的超平面分隔開。那麼好,我們需要關注的是在各個維度下,各個點到該維度的分隔(點、直線、超平面)的距離,這個距離是我們的第一步。

最大間隔的優化:
現在我們知道了點到(點、直線、超平面)的距離,那麼在這一步裏,我們要做的是,找個一個(點、直線、超平面)使得其到它兩側最近點的間隔最大。這就是分類的目的,找到中間那個“面“,並求其表達式就歐了。
在這個推導過程中會用到拉格朗日乘子法和KKT條件約束。簡單說,拉格朗日乘子法是一種尋找極值的策略,KKT條件將拉格朗日乘子法中的等式約束優化問題推廣至不等式約束,我理解就是求極值並優化問題,結果就是爲了找到一個解所用的手段。

鬆弛變量:
鬆弛變量這個概念是爲了允許分類有一點小錯誤,目的是不想因爲個別點而使整個點到“面“的間距變小。這裏引入了一個C,C越大表示允許犯的錯誤越多。
這裏寫圖片描述
就像這個圖,有一個藍點離得非常遠,如果照顧這個點的話,分割線爲黑色虛線,如果不照顧這個點,允許犯點錯誤,那麼分割線就是紅色實線,我們可以清晰看出,紅色實線和黑色虛線所帶來的最大分隔距離是不一樣的,允許犯點錯誤可能會帶來更好的效果。

核函數:
我的理解是,核函數提供了一種非線性的方法進行分類。
這裏寫圖片描述
實際問題中給出的數據並不是都是線性可分的,那麼這種非線性可分的數據是否就不能用svm算法來求解呢?答案是否定的。事實上,對於低維平面內不可分的數據,放在一個高維空間中去就有可能變得可分。以二維平面的數據爲例,我們可以通過找到一個映射將二維平面的點放到三維平面之中。理論上任意的數據樣本都能夠找到一個合適的映射使得這些在低維空間不能劃分的樣本到高維空間中之後能夠線性可分。

當然,核函數的表達式有很多,非線性掰彎的能力也不同。
這裏有個表格,我截圖的,感興趣可以看看。
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章