iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 26
1
AI & Data

人工智慧 vs.工人智慧系列 第 26

Day 26:第二招 分類器最佳化

前面用三種分類計算得到的結果非常令我不甚滿意,於是只好想辦法怎麼修正這個問題。

好啦,坦白說、其實也沒有什麼招數 ?

就我所知的部分,分類器要改善最終的辨識率時,如果在不對資料進行任何處理 (例如:正規化 或是 維度降低) 為前提的話,唯一能嘗試的動作就是更改分類器的參數了。

在這邊我們用了一個最偷懶的方法就是:Auto-Weka 了。

這是啥?可以吃嗎 ?

根據 Auto-Weka 官網上的說明如下:

Many different machine learning algorithms exist that can easily be used off the shelf, many of these methods are implemented in the open source WEKA package. However, each of these algorithms have their own hyperparameters that can drastically change their performance, and there are a staggeringly large number of possible alternatives overall. Auto-WEKA considers the problem of simultaneously selecting a learning algorithm and setting its hyperparameters, going beyond previous methods that address these issues in isolation.

翻譯成白話就是:你只要把 資料丟進去 Auto-Weka ,它就會自動幫你從 Weka 內現有的分類器執行一次並找出最好的參數來得到最佳的分類結果

有沒有 … 很 厲害呢 ?


Auto-Weka 的操作還蠻簡單的,首先就是從 Weka 的工具列進行安裝,之後進入 Weka 後直接執行即可;這邊快速地講解一下怎麼安裝。

打開 Weka 後選取上方的 Tools

https://ithelp.ithome.com.tw/upload/images/20190927/20119726K86r8mXtJZ.png

接著選取 “Package manager”

https://ithelp.ithome.com.tw/upload/images/20190927/20119726T0AatJxSyn.png

然後會進入到 package 選擇的頁面,只要在 Package 內找到 “Auto-Weka” 選取後按下上方的 “Install” 後它就會自己安裝了。

https://ithelp.ithome.com.tw/upload/images/20190927/201197262oRezef73F.png


事不宜遲,那就直接來跑跑看了。

直接選取 Auto-Weka,在 “Test options” 選擇 “Cross-validation”, Fold = 10 下去執行。

https://ithelp.ithome.com.tw/upload/images/20190927/20119726uCKJMdjth2.png

另外,在執行的時間最好也調整一下。先在 “AutoWEKAClassifier” 這邊按下左鍵,會跳出 ObjectEditor 的畫面。在最下方的 “timeLimit” 預設是 15分,可以的話儘量調大,因為時間越久可以跑的測試越多。

https://ithelp.ithome.com.tw/upload/images/20190927/20119726TSjGueGsoD.png

解讀分析結果 / Classification Result

依據上述的條件跑了我們在 Day 23 你好還是我好? 轉換好的資料集:

https://github.com/deternan/PTT_Stock/blob/master/source/tagging_fasttxt_cc.arff

先講一下,整個 Auto-Weka 執行的時間還花費不少時間,佔據的資源大概是 1/3 至 1/2 的 CPU使用率。

https://ithelp.ithome.com.tw/upload/images/20190927/20119726DNFox6aNOD.png

執行時間大約花了一個早上吧 :早上 09:41 跑到中午 12 點多一些。

https://ithelp.ithome.com.tw/upload/images/20190927/20119726BnKQmnF3Un.png

得到的結果居然 …

推薦使用的分類器與演算法為:

Classifier classifier = AbstractClassifier.forName("weka.classifiers.meta.Vote", new String[]{"-R", "MAX", "-S", "1", "-B", "weka.classifiers.trees.REPTree -M 24 -V 0.004862874952330014 -L -1 -P", "-B", "weka.classifiers.functions.Logistic -R 3.0904722260537598E-12", "-B", "weka.classifiers.bayes.BayesNet -D -Q weka.classifiers.bayes.net.search.local.K2"});

但正確率卻只有 …

Correctly Classified Instances         167               56.229  %
Incorrectly Classified Instances       130               43.771  %

看到這結果 .. 我好想哭 ?

因為這結果跟 SVM 差不多,結果還更低啊 ?

Day 23 你好還是我好? 計算出之結果:

  • 支持向量機 (Support Vector Machine, SVM):56.39%
  • 貝氏分類器 (Naïve-Bayes):50.22 %
  • 隨機森林(Random Forest):52.42 %

怎麼辦?

我先假設還是分類氣的問題好了,繼續往下看結果發現有一個可能的原因,或許是 Auto-Weka 跑的次數還不夠多吧 ?

For better performance, try giving Auto-WEKA more time.
Tried 53 configurations; to get good results reliably you may need to allow for trying thousands of configurations.

Auto-Weka 給他的時間越多,可以嘗試的組合也越多。這邊只跑了 53 種的組合,似乎有點少啊;不然,再多給他跑一些時間看看好了 ?

其實,除了可能演算法的問題,我們是覺得資料面或許也有可以被修正的可能性,這部分我們也有做了一些實驗,在下一篇會繼續討論。那剩餘的時間就 ...繼續用 Auto-Weka 找參數囉。


註1:我自己在執行 Auto-Weka 遇到了問題,在 macbook pro 上執行時會有錯誤,但在 Windows 環境執行時卻都沒問題,挺妙的。


Auto-Weka 2.0 原始 paper
https://www.cs.ubc.ca/labs/beta/Projects/autoweka/papers/16-599.pdf


免責聲明:本文章提到的股市指數與說明皆為他人撰寫文章內容,包括:選股條件,買入條件,賣出條件和風險控制參數,只適用於文章內的解釋與說明,此提示及建議內容僅供參考之用,並不構成投資研究、認購、招攬或邀約任何人士投資任何投資產品或交易策略,亦不應視為投資建議。


上一篇
Day 25:第一招 改進資訊辨識成果
下一篇
Day 27:第三招 資料面改善
系列文
人工智慧 vs.工人智慧30

尚未有邦友留言

立即登入留言