:::

Weka簡介與實作:資料探勘的分群、異常偵測、關聯規則探勘、分類 / Practice Data Mining with Weka: Clustering, Outlier Detection, Associations and Classification

11-Weka_Practice_Data_Mining_with_Weka.png

啊囉哈~~這裡是整理投影片整理得超久的布丁。

今天要來談的Weka是知名的資料探勘自由軟體,它含括了資料探勘中的三大議題:分群(clustering)關聯規則探勘(association rule mining)以及分類(classification)。想要學習資料探勘的基本概念,並快速開始進入資料探勘實作的話,Weka是個不需要寫程式也可以輕鬆上手的好方法。

這一篇是我在2019年研習班中講授的課程投影片。這篇的做法改進了我之前製作的「巨量資料探勘與統計應用」課程內容,不僅更加掌握Weka的功能與參數,也直接採用ODS開放文件格式試算表作為練習資料的格式。如果你對資料探勘有興趣的話,不妨也試著一起玩玩看吧。


課程架構 / Guideline

2019-1003-000016.png

這門課程將資料探勘分成兩大類、三種分析,而各種分析有不同的技術可採用。這兩大類為:沒有預設答案的「非監督式學習」,對應的是「探索性分析」;有預設答案的「監督式學習」,對應的是「比較性分析」和「預設性分析」。

每種分析都有對應的資料探勘技術,這些技術都可以用Weka來實作。在探索性分析中,為了瞭解資料的狀況,我們可以採用的資料探勘技術為「分群」和「異常偵測」。在比較性分析中,我們想要瞭解不同類型的資料有何差異,可以使用的技術為「關聯規則探勘」。在預測性分析中,我們想要以歷史資料建立規則模型,用來預測未來的未知資料,可以採用的資料探勘技術為「分類」和「迴歸」。

跟傳統定義不同的是,我將關聯規則探勘作為一種比較性分析,並將它隸屬於監督式學習中。傳統關聯規則探勘大多作為非監督式學習,但探勘結果往往難以應用。相反的,在有預設答案的情況下去找出不同類型資料的差異,這種問題更適合採用關聯規則探勘來分析。所以我把它特別獨立出來,變成比較性分析來介紹。

本課程分成四個投影片來介紹。底下我會列出投影片、投影片大綱,以及該投影片使用到的實作教材和相關連結。


Chapter 1. 認識Weka / Introduction of Weka

第一份投影片「認識Weka」介紹的內容包括:

  • Part 1. 認識Weka
  • Part 2. Weka的資料來源
  • Part 3. 準備Weka:下載、安裝與設定
  • Part 4. 認識Weka架構

2019-1003-002314.png

這份投影片主要是給Weka做個簡介之外,還要帶大家安裝本課程會用到的Weka及其四個套件,以及LibreOffice Calc試算表。

相關檔案與連結 / Materials and reference

「Part 3. 準備Weka:下載、安裝與設定」會用到以下檔案:

weka_logo.png

(圖片來源:WekaMOOC)

Libre-Office.png

(圖片來源:ICONS101)


Chapter 2. 探索性與比較性分析:分群、異常偵測、關聯規則探勘 / Exploratory and comparison analytics: Clustering, outlier detection, associations

第二份投影片「探索性與比較性分析」介紹的內容包括:

  • Part 5. 探索性分析:分群
  • Part 6. 探索性分析:異常偵測
  • Part 7. 比較性分析:關聯規則探勘

從這份投影片開始,我們就要開始實際操作Weka進行資料探勘的任務。我在介紹的時候會先講一下問題的情境,再來簡單地介紹資料探勘技術的演算法和原理,然後再實際操作Weka完成資料探勘的任務。

2019-1003-002757-LOF-LOF-LOF-LOF.png

值得一提的是,我在這次教學中加入了「異常偵測」這個主題,採用技術為區域異數因素(Local Outlier Factor, LOF)。LOF分析可以在多維度資料中偵測異常值,是相當泛用的分析技術。雖然以往資料探勘教學中較少對異常偵測有所著墨,不過其實在實務資料分析中,用異常偵測找出資料的離異值是非常有意義的作法。有時候,刪除離異值可以確保模型收斂,它可以用於各種資料探勘的前處理;有時候,找出學生中最與眾不同的人,可以幫助我們深入進行個案研究。透過Weka的localOutlierFactor套件,可以讓我們很容易就能完成異常偵測的分析任務,誠心推薦給資料分析的各位。

相關檔案與連結 / Materials and reference

在「Part 5. 探索性分析:分群」中,我們將會用到以下檔案和連結:

在「Part 6. 探索性分析:異常偵測」中,我們將會用到以下檔案:

在「Part 7. 比較性分析:關聯規則探勘」中,我們將會用到以下檔案:

其實這三個部分用到的檔案stu-sch-1 - train.ods都是一樣的喔。


Chapter 3. 預測性分析:分類與迴歸 / Predictive analytics: Classification and regression

第三份投影片「預測性分析」介紹的內容包括:

  • Part 8. 預測性分析:分類
  • Part 9. 預測性分析:迴歸

2019-1003-004744-AI-VE-AL.png

雖然看起來只有分類和迴歸兩個主題,不過投影片就有103張了呢。現在提到資料探勘、機器學習,大部分的焦點都落在這個「預測性分析」上。我們往往會希望用歷史股價變動來預測股票的漲跌,我們希望用學生表現的已知行為來預測期末表現,這些都是預測性分析所要處理的問題。而預測性分析中分類和迴歸這兩個技術的主要差別,在於分類要預測的是「類別」,例如「男」或「女」、「合格」或「不合格」;而迴歸則是預測連續數值,例如「分數成績」、「股價」。

由於Python的盛行,現在許多人都是從Python程式語言學習迴歸。但其實要做迴歸這種預測性分析並不用這麼麻煩,試算表搭配Weka就能做得出來囉。

相關檔案與連結 / Materials and reference

在「Part 8. 預測性分析:分類」中,我們會用到的教材有:

在「Part 9. 預測性分析:迴歸」中,我們會用到的教材有:

這兩組教材檔案名稱看起來很像,但資料內容並不一樣喔,請仔細查看檔案名稱,不要搞混了。


Chapter 4. 進階應用與結語 / Applications and wrap up

第四份投影片「進階應用與結語」介紹的內容包括:

  • Part 10. Weka的進階應用
  • Part 11. 結語

介紹完Weka的基本應用,第四部分就帶大家看看Weka還可以做的其他分析。這邊大部分都是我寫過介紹的內容,包括圖片分類文本分類行為序列預測時間序列預測等等。其實Weka的可能性,比課本上介紹的還要多很多呢。

2019-1003-010314-Al-literacy-AI-Fr-HT-ora-No-Ia-AI.png

課程到了最後,我們瞭解了很多資料探勘的分析技術。現在資料探勘中的預測性分析,大多被包裝成AI人工智慧,似乎已經廣為人知。有人對AI盲目推崇、認為大數據、巨量資料就是未來;有人對AI表示恐懼,認為AI將會搶走他們的工作。但就目前AI的進展來看,它終究只是一種分析歷史資料、然後將分析結果直接應用的一種分析技術。而這個技術要簡單也沒那麼難,這堂課的Weka就做得了。

因此,我希望藉由這堂課來培育大家的AI素養 (AI literacy)。那就是我們必須要對AI保持正確的認知態度,學習思考什麼時候可以用AI、什麼時候不能用AI。希望這堂課介紹的Weka能夠讓大家更容易駕馭AI,而不是讓AI停留在盲目崇拜或恐懼的層次。

相關連結 / Reference

在「Part 10. Weka的進階應用」中,我所提到的相關文章連結如下:

當然,其實還有更多相關文章都在我這個Blog:「布丁布丁吃什麼?」,歡迎有興趣的人進來挖寶囉。


結語 / In closing

2019-1003-011512-ah.png

這篇我在研習班講授的「Weka簡介與實作」終於整理完了。

雖然作為一位常常介紹Weka的人這樣講很奇怪,但被找去講這個主題時,我第一個反應是:「怎麽過了這麼多年了還在講Weka」。

Weka是以Java開發的應用程式,不僅系統介面不符合當代應用程式的設計,實際上它的操作也相當繁瑣。許多人抱持著「不用寫程式就可以做資料探勘耶!」的期待接觸Weka,不過實際上能不能掌握Weka,或著說,掌握資料分析,最終是要看使用者具不具備資料分析的思維。瞭解資料、知道自己要分析什麼的人,不論是Weka還是Python,他都能有足夠的熱情和動力掌握這些分析工具,並且更進一步的往他的分析目標邁進。

Weka的小小優點 / Strengths of Weka 

2019-1003-012442-WWelca-vs-Weka-BE.png

話說回來,也許一些只用Python等程式語言的人可能對Weka這種圖形化使用者介面嗤之以鼻,不過我得說Weka在很多小地方其實做得很好。因為這些優點實在是太小了,如果對資料分析不熟悉的人可能看不懂這些詞彙的意義,所以底下這三個特色我是說給進階者看得:

第一個特色是缺漏值補齊,如果你沒有做特別的設定,Weka會自動採用眾數或中位數補齊缺漏值。而這件事情若用程式語言來做,其實相當費工。此外,若是在SPSS分析裡面,有缺漏值的資料大多時候都會直接被整個刪除捨棄不用。

Weka另一個貼心的特色是虛擬變項的轉換。面對只能接受連續數值類型資料的演算法,Weka會自動將類別變項轉換成虛擬變項,使用者仍然可以用自己最習慣的類別變項來填寫資料即可。這個例子最常發生在SPSS使用者身上,例如「迴歸分析使用虛擬變項的注意事項」這篇。SPSS分析幾乎都必須是以連續變項進行,包括類別資料的卡方檢定也是,所以很多SPSS使用者被迫要以數字為資料編碼,例如將「男性」編碼為1、「女性」編碼為2。如果用程式語言來開發,將類別編碼轉換成虛擬變項也是一件必須要執行的重要處理,略過這個步驟的話,大部分演算法都無法執行。不過在Weka裡面,他會默默的自動幫你處理好,非常偉大。

第三件特色是變項的正規化。許多資料探勘演算法都必須計算資料的相似度,特別是分群。對具有多維變項的資料計算相似度時,因為各個維度的資料單位不相同,它們的全距也都不相同。如果直接忽略單位,單以數值計算相似度時,全距較大的維度屬性會對相似度有極大的影響。為了克服這個問題,比較好的做法是要對各個維度進行正規化或標準化,去除單位,這樣是比較合理的做法。如果用程式語言來做,各個維度的正規化和標準化手續其實挺麻煩的。不過在Weka中,大多數演算法預設都會自動進行正規化或標準化。當然,你也可以開啟進階設定把它關掉就是了。

閒聊 / Talk

好啦,寫到這裡,這篇也差不多要告一個段落了。其實這篇應該要更早完成的,但是課程教完之後,我遭遇了電腦整個掛掉的窘境。要知道對一個各種工作都仰賴電腦的我來說,電腦壞掉這件事情對我造成相當大的打擊。然後在重灌電腦的期間,也花了點時間開發了一些小工具,詳情請看「工具開發閒聊:從AutoIT到Electron」這篇。

2019-1003-014518.png

最近我比較有在寫blog,就是電腦逐漸上軌道的表現。「布丁布丁吃什麼?」blog的網站功能有許多壞掉的地方,最近也總算能夠把它修復了。有一臺好用的電腦,對我來說還是相當重要啊。

電腦修好後,總算能夠繼續我論文系統的研究了。前幾篇提到的Svelte就是我在研究中的產物,可惜人氣好像不太高的樣子。在這篇中我也提到我正在摸索FeathersJS,轉念採用另一個想法後,似乎更能掌握它了。我會繼續這樣子,一邊研究、一邊把它整理下來做記錄,努力完成我的論文吧。


那麼這次對Weka的教學就到這裡了。寫到最後,我有些問題想問問大家:

  • 你用過Weka或其他的資料探勘工具嗎?
  • 你用資料探勘或機器學習通常是在分析什麼樣的問題呢?
  • 對於資料探勘的教學,你比較著重在什麼部分呢?理論、演算法、應用情境、實機操作、資料分析講解?

歡迎在下面的留言處跟我們分享你的想法。大家的意見是我繼續分享的動力喔!如果你覺得我這篇實用的話,請幫我在AddThis分享工具按讚、將這篇分享到Facebook等社群媒體吧!

感謝你的耐心閱讀,我是布丁,讓我們下一篇見。