:::

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

10月 03, 2019 , , 40 Comments Edit Copy Download 6490 Characters, 21 Images, 4 Embed Iframes

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等社群媒體吧!

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

總共40 則留言 ( 我要發問 , 隱藏留言 顯示留言 )

  1. 回覆刪除
  2. 回覆刪除
    回覆
    1. 回覆刪除
  3. 回覆刪除
  4. 回覆刪除
    回覆
    1. 回覆刪除
    2. 回覆刪除
    3. 回覆刪除
    4. 回覆刪除
    5. 回覆刪除
    6. 回覆刪除
    7. 回覆刪除
    8. 回覆刪除
    9. 回覆刪除
    10. 回覆刪除
  5. 回覆刪除
  6. 回覆刪除
  7. 回覆刪除
    回覆
    1. 回覆刪除
  8. 回覆刪除
    回覆
    1. 回覆刪除
  9. 回覆刪除
  10. 回覆刪除
    回覆
    1. 回覆刪除
  11. 回覆刪除
    回覆
    1. 回覆刪除
  12. 回覆刪除
    回覆
    1. 回覆刪除
  13. 回覆刪除
  14. 回覆刪除
  15. 回覆刪除
    回覆
    1. 回覆刪除
    2. 回覆刪除
  16. 回覆刪除