用 Python 練習實作深度學習,主要包含 Tensorflow 以及 SVM,著重於實作範例,未深入涉及各 DL 演算法模型原理及其數學。
Reference: 本篇基於 Udemy 課程 "吳佳諺- Python 深度學習" 為架構出發衍生,其他引用資料個別在段落中標示
SVM 是一個二元分類器,也就是只能做非黑即白的分類判斷。
如果資料只有二維,如在二維直線座標系中標記了許多點,若這些點概念上可以被分成兩類,我們就可以透過迴歸分析的幫助,找出一條線來最適當的把這兩類的點切分開來,這條線如果是直線,那就是一個一元一次方程式,如果是曲線那當然就是二次三次或更高。
而該怎麼找出最佳的一個切割面?SVM 的提議也很簡單,他假設如果存在一個 hyperplane,這個 hyperplane 距離所有 A/B 類節點的距離總和最長,那他就是一個最佳的分割面,這裡的距離的概念也就是 margin。簡單理解就是,處在兩個點的「最中間」位置的那條線就是這兩點的最佳切割線。
但實際上我們都知道,兩類的點很有可能不會剛好一邊一邊各自群聚一起,往往會混在一起,此時一條線根本切不開,即使再高次也不行,這也就是非線性可分割的問題。此時 SVM 導入了第三個維度的想法,我們把每個資料點都加上 z 座標,編成座落在一個 3D 坐標系,可以想像我們就因此更有可能找出一個超平面 hyperplane 能妥善的將兩類的點給切分開來。這才是 SVM 因此強大的地方,他可以做到非線性的分類,概念可見以下影片,至於每個點的 z 座標是依據什麼規則賦予的,就不在本篇敘述了。
SVM 本身是一個二元分類器,但可以藉由組合多個二元分類器來達到多類別分類的效果。有兩種方法,一種是一對多 one-versus-rest (OVR),就是 A 一類,非A 一類,這樣 k 個類別就有 k 個 SVM,訓練時個別訓練,但判斷時要走過 k 個 SVM。另一種是一對一 one-versus-one (OVO) 或稱 pairwise,就是每兩個類別之間都訓練一個分類器,所以總共就會有 k(k-1)/2 個分類器;進行判斷時是採用投票方式,比如某樣本在 A/B, A/C, A/D 都被判斷為是 A 類,則就最有可能屬於 A 類。
範例:IRIS 鳶尾花分類
Source code: Jupyter file Iris_svm.ipynb
大綱
[Development] Deep Learning over Python 深度學習基於 Python 1/3- Basic Tools: 基於 python- numpy, matplotlib, scipy, Pandas
- Keras (基於 Tensorflow)
- Tensorflow
- Support Vector Machine (SVM) 萬用分類機
- Reinforcement Learning (RL) 強化學習
Reference: 本篇基於 Udemy 課程 "吳佳諺- Python 深度學習" 為架構出發衍生,其他引用資料個別在段落中標示
Support Vector Machine (SVM) 萬用分類機
SVM 就是用統計上風險最小化的方法,來產生一個分類的超平面 (hyperplane),也就是找到一個決策邊界 (decision boundary),該邊界可以讓「兩類」之間的邊界 margins 最大化。SVM 是一個二元分類器,也就是只能做非黑即白的分類判斷。
如果資料只有二維,如在二維直線座標系中標記了許多點,若這些點概念上可以被分成兩類,我們就可以透過迴歸分析的幫助,找出一條線來最適當的把這兩類的點切分開來,這條線如果是直線,那就是一個一元一次方程式,如果是曲線那當然就是二次三次或更高。
而該怎麼找出最佳的一個切割面?SVM 的提議也很簡單,他假設如果存在一個 hyperplane,這個 hyperplane 距離所有 A/B 類節點的距離總和最長,那他就是一個最佳的分割面,這裡的距離的概念也就是 margin。簡單理解就是,處在兩個點的「最中間」位置的那條線就是這兩點的最佳切割線。
但實際上我們都知道,兩類的點很有可能不會剛好一邊一邊各自群聚一起,往往會混在一起,此時一條線根本切不開,即使再高次也不行,這也就是非線性可分割的問題。此時 SVM 導入了第三個維度的想法,我們把每個資料點都加上 z 座標,編成座落在一個 3D 坐標系,可以想像我們就因此更有可能找出一個超平面 hyperplane 能妥善的將兩類的點給切分開來。這才是 SVM 因此強大的地方,他可以做到非線性的分類,概念可見以下影片,至於每個點的 z 座標是依據什麼規則賦予的,就不在本篇敘述了。
SVM 本身是一個二元分類器,但可以藉由組合多個二元分類器來達到多類別分類的效果。有兩種方法,一種是一對多 one-versus-rest (OVR),就是 A 一類,非A 一類,這樣 k 個類別就有 k 個 SVM,訓練時個別訓練,但判斷時要走過 k 個 SVM。另一種是一對一 one-versus-one (OVO) 或稱 pairwise,就是每兩個類別之間都訓練一個分類器,所以總共就會有 k(k-1)/2 個分類器;進行判斷時是採用投票方式,比如某樣本在 A/B, A/C, A/D 都被判斷為是 A 類,則就最有可能屬於 A 類。
範例:IRIS 鳶尾花分類
Source code: Jupyter file Iris_svm.ipynb
留言
張貼留言