# Execution description 本次實驗會用到 libsvm 套件,請在執行程式前安裝 ``` pip install -U libsvm-official ``` 此外,本程式還使用到了常見的 `numpy`, `sklearn`, `scipy.io` 等等套件,需要事先進行安裝 環境安裝完畢後,直接執行附檔的 `SVM.py` 即可 # Experimental results ## min-max scaling ![image](https://hackmd.io/_uploads/ByukxjSUC.png) ## standard scaling ![image](https://hackmd.io/_uploads/BkSWxsHIR.png) ## robust scaling ![image](https://hackmd.io/_uploads/ryRzlsrLR.png) ## 不用scaling ![image](https://hackmd.io/_uploads/Hy-Ckjr8C.png) ## 實驗結果說明 觀察實驗結果發現,若以 testing accuracy 作為衡量模型表現的標準,則三種 scaling 的方法及不 scaling 的表現分別為 min-max scaling > standard scaling > robust scaling > 不用 scaling 需要特別留意的是,使用 robust scaling 時,training accuracy 為 100,但 testing accuracy 只有 54.32098765432099,可能發生 overfitting 的現象 # Conclusion * 使用不同的 (C ,γ) 參數組合,會對結果產生一些影響,每種 scaling 方法最適合的參數組合也可能不一樣,建議使用 grid search 的方式,把每個組合都試過一遍,以找出最好的那一組參數 * 使用不同 scaling 的方法,會對結果產生極大的影響,甚至在某些情況下會導致 overfitting 的發生;以本次實驗的結果來說,最推薦使用 min-max scaling,其次是 standard scaling # Discussion 這次實驗讓我能有機會親自使用 svm 進行手寫數字分類,其中遇到的最大困難是對 libsvm 這個套件不熟悉,不好找關於這個套件在 python 下的語法以及使用方式,不過最後還是成功克服。本次實驗最令我感到意外的便是,使用不同 scaling 的方法,對於結果會有巨大的影響,這跟我最初想的剛好相反,也讓我多累積了一些經驗,下次模型訓練的不好時,也許可以試試不同的 scaling 方法,說不定會有奇效。