[cs231n]KNN與SVM區別

部分資料來源於網絡,僅做個人學習之用

KNN

SVM

沒有訓練過程,只是將訓練數據與訓練數據進行距離度量來實現分類。基本原理就是找到訓練數據集裏面離需要預測的樣本點距離最近的k個值(距離可以使用比如歐式距離,k的值需要自己調參),然後把這k個點的label做個投票,選出一個label做爲預測

是先在訓練集上訓練一個模型,然後用這個模型直接對測試集進行分類。這兩個步驟是獨立的。

需要超平面wx+b來分割數據集(此處以線性可分爲例),因此會有一個模型訓練過程來找到w和b的值。訓練完成之後就可以拿去預測了,根據函數y=wx+b的值來確定樣本點x的label,不需要再考慮訓練集

knn沒有訓練過程,但是預測過程需要挨個計算每個訓練樣本和測試樣本的距離,當訓練集和測試集很大時,預測效率低。 svm有一個訓練過程,訓練完直接得到超平面函數,根據超平面函數直接判定預測點的label,預測效率很高

物以類聚,人以羣分。如果你的朋友裏大部分是北京人,就預測你也是北京人。如果你的朋友裏大部分是河北人,那就預測你是河北人。不管你住哪裏。

就像是在河北和北京之間有一條邊界線,如果一個人居住在北京一側就預測爲北京人,在河北一側,就預測爲河北人。但是住在河北的北京人和住在北京的河北人就會被誤判。
KNN對每個樣本都要考慮。 SVM是要去找一個函數把達到樣本可分
KNN不能處理樣本維度太高的東西 SVM處理高緯度數據比較優秀

假設每條數據有兩個特徵值x和y,一個label,即點的顏色,先將所有數據放在平面直角座標系中,如下圖1.1的紅點和藍點,紅點和藍點所構成的所有點即爲訓練集,而綠點則是測試點,k最鄰近問題的最鄰近就是直觀的鄰近的意思,即離得近,而k指的是找幾個離得最近的,如果k=3,那麼所選的點即爲實線所包含的三個點,若k=5,則爲虛線所包含的五個點,而對於預測點分類的預測則是根據所選k個點中最多個數的類別所確定,同樣以下圖爲例,如果k=3,那麼預測點的結果將爲紅色(2個紅色,1個藍色),如果k=5,那麼預測點的結果將爲藍色(3個藍色,2個紅色),由此可見,參數k的選取直接影響了預測結果的準確度。

                     

SVM 指的是這個模型是一個機器,此外它的作用是分類,所以可以理解爲一個分類用的機器,support vevtoe之後再介紹。同樣爲了簡單介紹採用二維介紹,樣本同樣是帶有顏色label的有x和y兩個屬性的訓練點集合,svm要要找一條線,使得把兩個類別的點區分開來,那麼對於接下來的測試點,看測試點位於哪一側,就將其歸類於該類,那麼問題來了,符合這個要求的線有很多條,比如圖中的黑線和灰線就是其中的兩條,那麼什麼纔是最優解呢,現在就要介紹support vector了,就是兩個類別中的點離這條分割線最近的距離,如何纔是最優解呢,就是讓兩個類別的離分割線最近的點,再回到最近的問題,什麼纔是最優解呢,那就是支持向量離分割線越遠越好,因爲距離越遠,允許容納的點越多,使得分類的越平均,更加理想。

                                    

 

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