數據挖掘演算法——SVM
在介紹SVM之前,需要先解釋幾個概念。第一個概念叫:線性可分數據。
先來直觀的看一下,什麼叫線性不可分數據,就在下面的四張圖片中,可以看到混雜在一起的兩組數據(小圓點和小方點)。你很難用一條線去將兩組數據分隔開來,這就叫線性不可分數據。(僅限低緯空間,如果將這兩組數據映射到高維空間,情況就不同了。此處僅做簡單假設)
下面再看一下線性可分數據,在下面的四張圖中,A圖的兩組數據(小圓點和小方點),很明顯看得出是線性可分數據,你可以像B、C、D圖中的任意一種情況一樣,用線條把數據給劃分開來。
將數據集劃分開來的這條直線,我們稱之為:分隔超平面(separating hyperplane)。上面的這個例子中的分隔超平面之所以是一條直線,是因為這是在二維平面上。如果說數據集是三維的,那用來分隔數據的就會是一個平面。更高維的情況則以此類推,如果數據集是1024維的,那就需要一個1023維的一個對象,來對數據進行分隔,這個對象就是超平面。超平面也就是分類的決策邊界,在決策邊界一側的是某個類別,在決策邊界另一側的又是某個類別。
所以很顯而易見的一點就是,分隔超平面每一側的數據點離這個超平面越遠的話,預測就越準確,反之,如果數據點和超平面離得太近,預測就會模糊,可能就會出錯。所以我們回過頭看上一張圖的B、C所用的分割線,直觀上就能感覺出,不如D分隔的徹底。
那這樣的最佳直線,該如何找呢?我們有一個念起來有些繞口的表述:我們需要找到離超平面最近的點,然後確保它們離分隔面的距離儘可能的遠。這樣的點到分隔面的距離就被稱為:間隔(margin)。換句話說,間隔就是分割線可以移動的範圍。我們希望這個間隔儘可能的大,這樣的分類器才足夠健壯。
而那些離超平面最近的點,其實就是向量(從坐標系原點出發,坐標系任意位置的點,都有一個坐標,它們都是向量)。這些支持我們尋找到最佳超平面的向量,就叫做支持向量。這也就是支持向量機名字的由來。
支持向量機是在1995年,由Vapnik領導的AT&T Bell實驗室研究小組提出。SVM是一種基於統計學習理論的模式識別方法,主要應用於模式識別領域。在當時這些研究還不完善,在解決模式識別問題中過於保守,且數學上比較艱澀,所以這些研究沒有得到充分的重視。
到了90年代,統計學習理論 (Statistical Learning Theory,SLT)的實現和由於神經網路等較新興的機器學習方法的研究遇到一些重要的困難,比如如何確定網路結構的問題、過學習與欠學習問題、局部極小點問題等,使得SVM迅速發展和完善,在解決小樣本、非線性及高維模式識別問題中表現出許多特有的優勢,並能夠推廣應用到函數擬合等其他機器學習問題中。從此迅速的發展起來,已經在許多領域(生物信息學,文本和手寫識別等)都取得了成功的應用。
在地球物理反演當中解決非線性反演也有顯著成效,例如(支持向量機在預測地下水涌水量問題等)。已知該演算法被應用的主要有:石油測井中利用測井資料預測地層孔隙度及粘粒含量、天氣預報工作等。
支持向量機中的一大亮點是在傳統的最優化問題中提出了對偶理論,主要有最大最小對偶及拉格朗日對偶。
而SVM的關鍵在於核函數。由於低維空間向量集通常難於劃分,解決的方法是將它們映射到高維空間。但這個辦法帶來的困難就是計算複雜度的增加,而核函數正好巧妙地解決了這個問題。也就是說,只要選用適當的核函數,就可以得到高維空間的分類函數。在SVM理論中,採用不同的核函數將導致不同的SVM演算法。
在確定了核函數之後,由於確定核函數的已知數據也存在一定的誤差,考慮到推廣性問題,因此引入了鬆弛係數以及懲罰係數兩個參變數來加以校正。在確定了核函數基礎上,再經過大量對比實驗等將這兩個係數取定,該項研究就基本完成,適合相關學科或業務內應用,且有一定能力的推廣性。當然誤差是絕對的,不同學科、不同專業的要求不一。
支持向量機的理解需要數據挖掘或機器學習的相關背景知識,在沒有背景知識的情況下,可以先將支持向量機看作簡單分類工具,再進一步引入核函數進行理解。
TAG:硬科技觀察 |