機器學習菜鳥一枚,因為沒有許多這課,但是項目中用到了機器學習相關的東西。因此有一些疑惑:在機器學習中有許多分類器,有的被稱為線性分類器,有的被稱為非線性分類器。那麼問題來了,想請教一下:什麼是線性分類器與非線性分類器?他們的核心區別在哪裡?


簡單一點來說,如果模型是參數的線性函數,並且存在線性分類面,那麼就是線性分類器,否則不是。更多詳細的內容可以參看Linear versus nonlinear classifiers和PRML第四章。

上面這張圖可以非常直觀的回答你的問題:

左邊:非線性分類器

右邊:線性分類器(又名:一刀切)

什麼叫分類器?

可以把輸入數據分類的「東西」

左邊:黑色的曲線是非線性分類器,因為它分類了黑點和白點(線左邊是白點,右邊是黑點)

右邊:黑色直線是線性分類器

如何求解分類器?

左邊:求出這條曲線方程

右邊:求出這條直線方程

以上,僅非常直觀地回答了該問題

稍微advanced topic:

如何用線性分類器分類一組線性不可分的數據?

答案:

先抓取該組數據的某些feature(更高維空間)

再線性分類這些feature

見下圖

CS


其實搜一下就有答案了。這裡只說二類的情形。所謂線性分類器即用一個超平面將正負樣本分離開,表達式為 y=wx 。這裡是強調的是平面。而非線性的分類界面沒有這個限制,可以是曲面,多個超平面的組合等。

線性與非線性更加準確的說法應該是用來描述數據本身的統計特性(statistical characteristics), 在多目標分類(multiple classes)的分類情景中,這個是否線性可分的特性由是否能夠通過構建線性分類平面(decision boundary)而決定. 而每一個分類器,無論是SVM,MLR,ELM,RF甚至1,2,3D CNN都是通過訓練樣本來歸納(generalize)所謂分類平面的過程,若數據線性可分,分類器對應的工作較為簡單,或許你稱之他為線性分類器;反而言之,若數據墒較大,在現有的數據維度(Hilbert dimension)不可分,則需要核函數(kernel trike)或者CNN更多的bias等參數的介入,投影至線性可分或者近似線性可分的數據維度,在依照線性分類器相同的方法來解決問題,或許你稱這種情況為非線性分類器. 其實不難看到,數據變換(transformation)的過程與分類器的原理是相對獨立的. 這也是SVM最早被提出後,KSVM(kernel support vector machine)卻被更廣泛的運用的原因,因為生活從來不是隻有對和錯(亂入了,心領神會心領神會哈).

如果非要對分類器做個分類的話,我覺得用不明確邊界(soft margin) 和 明確邊界(hard margin)作為劃分比較好,一個是要求完全符合,一個設有相應的置信參數,具體的不同你可以參考網路上的資料.

翻譯理解有誤的地方還請各路大神輕噴.
推薦閱讀:
相關文章