找出你關注的隱含知識:以Cortana做子群組探勘 / Discovery Knowledge in Your Interesting Target: Subgroup Discovery with CORTANA
繼聚焦於你感興趣的關聯規則:Weka的HotSpot演算法之後,這篇要介紹的是實作了Exceptional Model Mining的子社群探勘(subgroup discovery)專門工具:CORTANA。跟HotSpot相比,CORTANA不僅可以探勘連續類型的目標變項(target variable),還能夠綜合多個目標變項成為一個目標概念(target concept),以此找到最能符合目標概念的子群組(subgroup)。
子群組探勘介紹 / An introduction to Subgroup Discovery
為了方便在Meeting的時候介紹,我整理了一份投影片供大家參考。
什麼是子群組探勘? / What is Subgroup Discovery
子群組探勘是一種監督式的敘述性歸納法(descriptive induction)。面對龐大且混亂的巨量資料,研究者可以鎖定他所感興趣的目標變項(target variable),分析出最能代表該變項的一些規則(又稱為子群組、模式),從中揭示出可能影響目標變項的潛在模式。
舉個簡單的例子,假設我們想要知道貧富階級不同的人所具備的特徵是什麼,所以我們蒐集了年齡(小於25歲、25至60歲、大於60歲)、性別(男、女)、國家(美國、德國、法國)的三個特徵,以及目標變項財富程度(窮、普通、富裕)。首先先分析財富為「富裕」的人的特徵。經過子群組探勘分析後,得到的規則可能為:
R: (年齡=小於25 & 國家=德國) → 財富=富裕
這樣子的規則能夠幫助我們針對年齡與國家等特徵與財富之間的關係做後續的分析。這樣可以協助決策者的規則,稱之為「能夠付諸行動的規則」(actionable rule)。
子群組探勘的應用範圍相當大。在醫學上,可以用來分析病患跟普通人的資料中,病患的最常見特徵是什麼。在教育資料探勘上,可以分析成績不及格或是輟學的學生常見的特徵。在生態研究中,可以分析某種生物最常見的活動範圍。在商業上,可以分析特定品牌支持客群的共同特徵。甚至可以跟其他資料探勘技術結合,例如分析分群結果中各個分群的特徵差異。
從技術的角度來看,子群組探勘是屬於資料探勘領域底下的一個子領域。這個技術比較接近於關聯規則分析,但現在的子群組探勘是融合了分類的決策樹與決策表、分群、關聯規則的Apriori與FP-Growth、最佳化問題的基因演算法等技術後所發展出來的進階資料探勘技術。跟分析時漫無目的關聯規則分析與分群比起來,子群組探勘能讓我們更容易聚焦於研究感興趣的規則上。跟分類技術比起來,子群組探勘不注重預測未知案例,但卻更能從既有資料中提取出容易理解、可以解釋的規則,揭露出現有資料的隱含知識。換句話說,子群組探勘就是典型的白箱模型。雖然聽起來很複雜,但子群組探勘的技術發展至今,它已經是相當成熟且易用的技術了。
今天的這篇就帶大家來使用子群組探勘的代表性工具,開放原始碼的自由軟體:CORTANA,其背後的演算法是特殊模型探勘(Exceptional Model Mining, EMM)。本文並不涉及深入的理論,需要理論背景的話可以參考CORTANA所列的論文,最重要的核心來自於Exceptional Model Mining這篇喔。
子群組探勘工具:CORTANA / Open source Subgroup Discovery: Cortana
本篇要使用的工具是荷蘭萊登大學(Universiteit Leiden)的LIACS資料探勘研究室所開發的子群組探勘工具CORTANA。以下是CORTANA的介紹:
CORTANA是一個發掘資料中的區域模式(local patterns)。CORTANA的特色是融合了一種泛用的子群組探勘(Subgroup Discovery)演算法,可以進行自由彈性的設定,從而實作多種不同的區域模式探勘(local pattern discovery)。此工具可以處理多種資料類型,不論是輸入的特徵與目標特徵都可以為類別類型(nominal)、數值類型(numeric)、二元類型(binary)。CORTANA的獨門特色在於可以根據目標變項的資料類型與數量來使用多種不同的子群組探勘方法。一般子群組探勘演算法只能考慮一個目標變項,通常是類別類型、少數是數值類型,CORTANA能夠同時處理多個目標變項,稱之為特殊模型探勘(Exceptional Model Mining)。
CORTANA是以Java撰寫,主程式只有一個jar檔案,我將之備份到GitHub中:
- 程式下載:http://datamining.liacs.nl/cortanajar.html
- cortana1782.jar 程式備份:GitHub
- Windows環境開啟CORTANA執行檔:start_cortana.bat
- Linux環境開啟CORTANA執行檔:start_cortana.sh
CORTANA也公開了Java原始碼,我一併備份到GitHub一份:
- 原始碼下載:http://datamining.liacs.nl/cortanasources.html
- cortana1782 原始碼備份:GitHub
系統需求 / Requirement
(圖片來源:海芋小站)
CORTANA本身需要安裝JRE 1.6.0_16以上的版本。我在Windows 7 64位元裡安裝JRE 1.8.0_112-b15版本,運作正常。
- JRE (Java Runtime Environment, Java運作環境) 下載:https://www.java.com/zh_TW/download/
開啟方法 / How to start CORTANA
CORTANA已經被編譯成jar檔案,如果你電腦裡面有安裝JRE,那麼作業系統的環境配置應該會有javaw可以用來直接開啟jar。簡單來說,只要在檔案瀏覽器裡面直接點兩下cortana1782.jar,那就可以開啟CORTANA。
但是由於Java環境預設不是使用Unicode,如果載入的資料包含了以Unicode編碼的中文內容,那在CORTANA裡面看起來就是亂碼。雖然還是可以正常使用CORTANA來做子群組探勘,但是這樣產生的規則也只會是亂碼,不利於後續的解讀。
事實上,只要在開啟jar檔的時候加入語系參數,就能讓CORTANA正常載入Unicode編碼的中文。舉例來說,只要在命名列中這樣呼叫CORTANA,就能以Unicode編碼開啟它:
javaw -Dfile.encoding=UTF-8 -jar cortana1782.jar
在Windows環境下,我們可以把指令包裝成bat執行檔,內容如下:
start "" "javaw" -Dfile.encoding=UTF-8 -jar cortana1782.jar
我把上述指令製作start_cortana.sh跟start_cortana.bat檔案,只要把這些腳本檔跟cortana1782.jar放在一起,然後執行腳本檔即可。
不過,這個方法不適合用Excel編輯的資料,因為Excel預設不是用Unicode編碼儲存,所以即使用這個方法開啟的檔案也依然會是亂碼。我建議大家使用LibreOffice Calc或Google試算表來編輯資料。
分析展示 / Analysis practice
子群組探勘工具CORTANA可以用於各種領域。這邊我就教育資料探勘(educational data mining)作為例子,來跟大家說明CORTANA的使用方法。
資料集 / Data set
這個資料集是取自於UCI機器學習保存庫(UCI Machine Learning Repository)的學生學習成效資料集(Student Performance Data set)。這是來自於兩所葡萄牙學校的學生資料,蒐集了學生的個人資訊(就讀學校、性別、年齡、住處)、父母(教育、職業)、學習支援(來自學校、來自家庭)、補充課程(補習)、學校表現(犯錯次數、缺席次數)以及學期成績。這種教育資料常見於各校的校務系統中,而我們的問題也通常是:「學期成績好的學生都有什麼特徵?」、「實驗組學校的學生有什麼特徵?」,或著是「對於學校的不同導致學期成績差異的學生來說,他們有什麼共同的特徵?」。
為了方便展現CORTANA子群組探勘的長處,我修改了原始的資料檔案,將案例數量刪減至313位學生。特徵刪除了G1跟G2,僅保留最後的學期成績G3,改名為grade3。最後共有31項特徵,包含我們的目標變項grade3。
請下載student-por-blog - data.csv這份檔案,待會我們用這個檔案來做分析。
特徵說明 / Attributes
student-por-blog - data.csv這份檔案共有31項特徵,以下簡單說明這些特徵:
- school 學校: 實驗組學校(2), 控制組學校(1)
- sex 性別: F, M
- age 年齡: 15~22
- address 居住處: U都市, R鄉村
- famsize 家庭人數: ≤ 3, > 3
- Pstatus 雙親狀態: 同居, 分居
- Medu 母親教育: 未受教育0~4高等教育
- Fedu 父親教育: 未受教育0~4高等教育
- Mjob 母親職業: teacher, health, civil, at_home, other
- Fjob 母親職業: teacher, health, civil, at_home, other
- reason 選校理由: home 近家, reputation 學校名聲, course 優質課程, other
- guadian 學生監護人: mother, father, other
- traveltime 學校交通時間(min): (1)1~15, (2)15~30, (3)30~60, (4)>60
- studytime 每週學習時間(hour): (1)<2, (2)2~5, (3)5~10, (4)>10
- failures 課程犯錯次數: 0~4
- schoolsup 學校教育補助: yes,no
- famsup 家庭教育補助: yes,no
- paid 其他補習課程: yes, no
- activities 其他課程活動: yes, no
- nursery 是否去托兒所: yes, no
- higher 是否想上高等教育: yes, no
- internet 家裡能上網嗎: yes, no
- romantic 戀愛中: yes, no
- famrel 與家人的關係: 非常糟1~5非常好
- freetime 課後空閒時間: 非常少1~5非常多
- goout 跟朋友出遊: 非常少1~5非常多
- Dalc 工作日喝酒: 非常少1~5非常多
- Walc 週末喝酒: 非常少1~5非常多
- health 現在健康狀況: 非常糟1~5非常好
- absences 缺席次數: 0~93
- grade3 最後一學期成績: 0~20
開啟CORTANA並載入檔案 / Load data in CORTANA
接下來我們要開啟CORTANA並載入上述的檔案。操作方法如下:
點選上述的腳本檔開啟CORTANA,例如start_cortana.bat。
接下來CORTANA會直接開啟一個「Open」開啟檔案的對話視窗。請選擇剛剛下載的student-por-blog - data.csv。注意,這個視窗並不會顯示在Windows工作列上,一開始使用的時候很容易被其他的視窗蓋過去。所以請縮小所有其他視窗,維持「Open」對話視窗在畫面上,這樣比較不會被擋到。
接著就會進入CORTANA的主視窗。根據我們分析的目標不同,需要設定的細節也不太一樣。接下來我就三種分析目標:單一數值目標變項的「學期成績好的學生都有什麼特徵?」、單一類別目標變項的「實驗組學校的學生有什麼特徵?」、以及雙數值目標變項為例子的「對於學校的不同導致學期成績差異的學生來說,他們有什麼共同的特徵?」來進行說明。
CORTANA有很多進階的設定,不過在這裡我只介紹最簡單的方法。有興趣的朋友也可以參考Exceptional Model Mining這篇論文來瞭解它的細節。
單一數值目標變項:學期成績好的學生都有什麼特徵? / Analyze single numeric target variable: What are patterns of students who got better grades?
首先我們要分析的是教育資料探勘最常見的問題:「學期成績好的學生會有什麼特徵?」這邊我們的目標變項(target variable)只有一個:「學期成績」,特徵名稱為grade3,資料類型為數值(numeric)。
1. 設定目標概念 / Set Target Concept
在CORTANA主畫面中,右上角就是目標變項的設定。在CORTANA裡面,目標變項可以是一個或多個,併稱為目標概念(Target Concept)。因為學期成績grade3是單一的數值變項,所以設定如下:
- target type: single numeric 目標類型:單一數值變項
- quality measure: Z-Score 評估指標:標準分數。這是數值變項的預設評估指標,將平均值化為標準分數
- measure minimum: 1.0 評估最小改進程度:使用預設值1.0即可
- primary target: grade3 主要目標變項:學期成績
設定好後,CORTANA會先分析該目標變項的基礎模型(Base Model)。可以看到「Base Model」上顯示所有資料的平均值為12.102237。我們希望找到的子群組(規則),他們的Z-Score必須比基礎模型的Z-Score還要高,換句話說,就是希望找到比平均數高的子群組。
接下來我們按下「Subgroup Discovery」,就可以產生子群組分析結果囉。
2. 子群組分析結果 / Subgroups
這個視窗是CORTANA找到的子群組,最後結果總共有32個子群組。排行越前面的子群組表示越能符合我們的分析目標,也就是成績較好的學生所共有的特徵。我們以第一個子群組來進行說明:
- Depth: 1 深度1,表示該子群組只使用了一個屬性值配對。
- Coverage: 88 符合此子群組的學生人數為88人。
- Quality: 4.13 品質指標為4.13。因為前面我們的評估指標(quality measure)為Z-score,所以這個4.13就是Z-score的分數。
- Average: 13.15 子群組目標變項的平均值為13.15,比整體的平均值12.10還要多。
- St. Dev.: 2.4 子群組目標變項的標準差2.4。
- Conditions: Medu >= 4.0 此子群組的特徵為「Medu >= 4.0」,意思是母親的教育為大學以上。
整體解釋時我們可以這樣說:「子群組探勘的結果顯示,若學生母親的教育為大學以上,則符合此規則的88位學生他們的平均學期成績為13.15,比整體平均學習成績12.10還高」。
然後後續就可以根據這條規則做更深入的分析與探討囉。
單一類別目標變項:實驗組學校的學生有什麼特徵? / Analyze single nominal target variable: What are patterns of experimental school's students?
接著我們來分析另一個最常見的問題:「實驗組學校的學生有什麼特徵?」這次我們的目標變項(target variable)也只有一個:「學校」,特徵名稱為school,資料類型為數值(nominal)。
1. 設定資料類型 / Meta Data Type Setting
我們接下來要分析的目標變項是學校school,這時候我們將school這個特徵視為類別類型(nominal)。但是在輸入資料的時候,我們是用「1」代表控制組學校,「2」代表實驗組學校,因此CORTANA預設是將之視為數值類型(numeric)。我們必須要手動調整特徵的資料類型才行。
這時候請在CORTANA的主畫面按下「Meta Data…」按鈕。
選擇「school」這個變項,然後在Set Type裡面選擇「nominal」 (類別變項),然後按下「Change Type」按鈕。這時候school特徵的type(類型)應該被改為了nominal,這樣就完成修改資料類型的工作了。請按「Close」關閉這個視窗,回到CORTANA主畫面吧。
2. 設定目標概念 / Set Target Concept
接下來我們要設定目標概念,將school為2 (實驗組學校的代號)作為分析的目標,設定如下:
- target type: single nominal 目標類型:單一類別變項。
- quality measure: WRAcc 評估指標:少見度。這是類別變項的評估指標,呈現設定權重後的相對正確值。
- measure minimum: 0.02 評估最小改進程度:使用預設值0.02即可。
- primary target: school 主要目標變項:學校。
- target value: 2.0 這個「2」表示是實驗組學校的代號,一次只能分析類別變項裡面的一個項目。
接下來我們按下「Subgroup Discovery」,就可以產生子群組分析結果囉。
3. 計算子群組多重比較p值 / Calculate Subgroups' p-Value
在分析結果的視窗內,若分析的目標變項是類別變項,那我們還可以算規則的顯著性p-Value (p值)。請按下「Gaussian p-Values」(高斯常態分配p值)按鈕。
在「Which method?」中使用預設值Swap-randomization (隨機置換法),然後按下「OK」。
稍等一下,原本的p-Value欄位就會出現p值。
這邊的p值是指該子群組跟其他子群組相比是否顯著的特別(exceptional),但並非是指該子群組不佳或不適合。可以當做是另一個品質評估指標來使用。
4. 子群組分析結果 / Subgroups
接著我們來看看找到的子群組有那些吧。最後CORTANA找出了35個子群組,以下以排行第一個的子群組進行說明:
- Depth: 1 深度1,表示該子群組只使用了一個屬性值配對。
- Coverage: 163 符合此子群組的學生人數為163人。
- Quality: 0.096 品質指標為0.096。因為前面我們的評估指標(quality measure)為WRAcc,所以這個0.096就是WRAcc的相對正確值。
- Probability: 0.619632 子群組中包含目標變項的正確率,就是Positives / Coverage的結果。
- Positives: 101 正確率,表示該子群組中符合目標變項「實驗組學校」的數量,有101位學生。
- p-Value: 0.0 獨特顯著性,數值越小,表示該子群組跟其他子群組相比更為獨特,值得關注。
- Conditions: traveltime <= 1.0 此子群組的特徵為「traveltime <= 1.0」,意思是到學校的交通時間為選項1,1到15分鐘內。
整體解釋時我們可以這樣說:「子群組探勘的結果顯示,交通時間在1到15分鐘內的163位學生中,101位學生就讀實驗組學校,佔61.7%。」
若跟第二個子群組找到的條件規則「address = 'U'」(學生住在都市)一起解讀的話,就會發現實驗組學校應該是都市中的學校,具有交通便利的特性。
雙數值目標變項:對於學校的不同導致學期成績差異的學生來說,他們有什麼共同的特徵? / Analyze double numeric target variables: What are patterns in deviation of different schools?
最後我們要分析的是一個複雜的問題。這兩所學校中,實驗組學校使用了特殊的教學方法,而控制組學校使用的是傳統的教學方法。研究者希望在實驗組學校中看到特殊教學方法能顯著提升學生的學期成績,但很遺憾的是這兩所學校學生的平均值並沒有顯著差異。實驗組學校136位學生的平均學期成績位12.35,控制組學校的學生平均學期成績為11.91,以獨立樣本t檢定分析的結果,t值為1.64,p值為0.1,兩所學校的差異未達顯著。
這表示實驗組學校的教學方法並沒有效果嗎?倒也不能這樣蓋棺論定。在現代教育研究中認為,由於每位學生的學習風格跟效率都不相同,本來就不太可能會有任何學生都適合的萬用教學方法。實驗組學校的教學方式可能只適用於某些學生身上,但到底是那種特徵的學生才適用,我們可以藉助子群組探勘來找到一些分析方向。
1. 目標概念的擬定 / What is the target concept?
在設定CORTANA之前,我們要先確定我們的分析目標是什麼?以文字敘述來整理我們的問題的話,就是「對於學校的不同導致學期成績差異的學生來說,他們有什麼共同的特徵?」在這個問題中用到了兩個變項,一個是學校school,另一個是學期成績grade3。若我們想要知道學校的差異是否會影響學期成績的高低,我們可以將這兩個變項建構成一個有因果關係的迴歸式(regression),也就是我們的目標概念(target concept):
grade3 = slope * school + intercept
其中slope斜率跟intercept截距可以透過最小平方估計法(least squares estimate)來計算而得。就目前整體的資料來建構這個迴歸式,可以得到以下式子:
grade3 = 0.44 * school + 11.47
我們需要特別在意的是slope斜率。在這個式子中,學校的差異僅有影響0.44的分數,可以視為對grade3學期成績的影響微乎其微(就較為正式的做法還要用推論統計來估計,但這裡就不深入討論)。
因此,我們就這個迴歸式作為目標概念,希望找到斜率比0.44更大的子群組,表示對這群學生來說,實驗組學校的教學方法更能發揮效果。
2. 設定資料類型 / Meta Data Type Set
在這個迴歸式的目標概念中我們用到了兩個變項,一個是school,另一個是grade3,但是在迴歸式中這兩個變項都必須是數值類型。因此我們必須要在Meta Data裡面調整特徵的資料類型。
這時候請在CORTANA的主畫面按下「Meta Data…」按鈕。
選擇school,然後在Set Type選擇numeric (數值類型),按下「Change Type」,接著school的Type就會改為了numeric。至於grade3本來就是numeric,不必修改。
確認好特徵的資料類型後,再按下「Close」關閉Meta Data視窗,回到CORTANA主視窗。
3. 設定目標概念 / Set target concept
接下來我們要把school跟grade3這兩個數值類型的目標變項,以迴歸式的模型來組成目標概念。做法如下:
在右上角的Target Concept中進行以下設定:
- target type: double regression 目標類型:兩個數值變項。
- quality measure: Signifficance of Slope Difference 評估指標:斜率有顯著差異。
- measure minimum: 0.0 評估最小改進程度:使用預設值0.0即可。
- primary target: school 主要目標變項:學校。
- secondary target: grade3 次要目標變項:學期成績
接著CORTANA就會以這個目標概念自動建立基礎模型(Base Model),並顯示「Base Model」的上面:
s = 11.47 + 0.44 * p
s表示次要目標變項,也就是學期成績。p表示主要目標變項,也就是學校。
設定好目標概念後,就按下「Subgroup Discovery」開始分析吧。
4. 計算子群組多重比較p值 / Calculate Subgroups' p-Value
在子群組分析結果視窗裡面,在雙數值變項的目標概念分析模式中,我們也可以計算子群組的p值。請按下「Gaussian p-Values」(高斯常態分配p值)按鈕。
在「Which method?」中使用預設值Swap-randomization (隨機置換法),然後按下「OK」。
稍等一下,原本的p-Value欄位就會出現p值。再提醒一次,這邊的p值跟其他推論統計檢定的p值意義不同,是指該子群組跟其他子群組相比是否顯著的特別(exceptional),可視為另一種品質評估指標,但並非是指該子群組不佳或不適合。
5. 子群組分析結果 / Subgroups
接下來我們就來看看探勘出來的子群組。子群組探勘結果共找到了115個子群組。這次我們要挑的子群組是Slope斜率大於基礎模型0.44的子群組,可以看到第三個子群組即符合這個條件。以下我用這個子群組進行說明:
- Depth: 1 深度1,表示該子群組只使用了一個屬性值配對。
- Coverage: 123 符合此子群組的學生人數為123人。
- Quality: 2.5 品質指標為2.5。因為前面我們的評估指標(quality measure)為Signifficance of Slope Difference ,所以這個2.5就是斜率的差異顯著程度。
- Slope: 1.26 該子群組迴歸式的斜率為1.26
- Intercept: 9.99 該子群組迴歸式的截距為9.99
- p-Value: 0.42 獨特顯著性,數值越小,表示該子群組跟其他子群組相比更為獨特,值得關注。
- Conditions: freetime >= 4.0 此子群組的特徵為「freetime >= 4.0」,意思是學生的課後空閒時間大於或等於4。freetime介於1到5之間,4跟5都表示學生的空閒時間較多。
看起來,似乎自由時間比較多的學生比較適合實驗組學校的教學方法。讓我們以「freetime >= 4.0」為條件來做進一步分析吧。
符合「freetime >= 4.0」的學生共有123人。實驗組學校的學生為47位,平均學期成績為12.51;控制組學校的學生為76位,平均學期成績為11.25。以獨立樣本t檢定分析進行為兩所學校中符合此條件的學生的學期成績平均數進行差異檢定,可以得到t值為-2.98,p值為0.0034,表示兩所學校符合此條件的學生他們的學期成績平均數有達到顯著差異。
除了這個規則之外,子群組探勘也找出了許多可能影響的多種可能性。但是在選擇規則的時候要注意子群組符合案例數量Coverage,符合案例太少的話,這個子群組解釋起來會有說服力不足的問題喔。
其他設定:深度 / Refinement depth
在我們上面的例子中,子群組探勘的結果都只會找到一個屬性與值配對的條件,這是因為搜尋條件深度預設值為1的限制。如果想要找出更精確、範圍更小的子群組,我們可以增加搜尋的深度,以找出更為專指的子群組。做法是在CORTANA的主畫面的左下角Search Conditions裡的refinement depth將預設的1改為更多的數字,例如2。
最後可以找到的子群組且斜率為正的子群組為第15個,其條件為「failures >= 1.0」(犯錯次數大於1次以上)且同時符合「Fedu >= 4.0」父親教育在大學以上,這些學生在實驗組學校中的表現會特別好。然而當條件變多的時候,可能會帶來解釋上的問題:我們要如何解釋犯錯次數跟父親教育之間的關係?另一個問題是Coverage符合人數僅有5人,在解釋上需特別謹慎。因此深度設定增加並不一定有助於分析與解釋,需根據研究者的假設與領域專家的分析來做判斷喔。
結語 / In closing
本篇介紹了子群組探勘工具Cortana的使用方法。透過三種不同的分析過程,可以看到Cortana可以快速且有效地發掘出隱含在巨量資料(或是說大數據)之後的知識,並且以屬性值配對的規則條件顯示,使得領域專家和研究者都能輕易閱讀與理解。不論是要做更深入的分析,還是將之與其他證據相互結合與印證來對現象進行解釋,這種能夠付諸行動的規則都能發揮極大的用處。
相較於傳統社會科學研究中常見的多變項分析所採用的技術,子群組探勘不僅能夠同時歸納類別類型與數值類型的特徵,實作特殊模型探勘(Exceptional Model Mining)的CORTANA還能針對單一變項、雙變項、甚至是多重變項來找尋規律,是更具強健性(robust)的分析技術。
許多研究都利用子群組探勘重新分析過去的研究資料,除了找出與當初研究者相同的發現之外,更找出了以往人力解讀所未曾發現的子群組。其中Subgroup Discovery for Election Analysis: A Case Study in Descriptive Data Mining (Grosskreutz, 2010)這篇寫的更是特別好,值得參考。
雖然乍看之下子群組探勘似乎是容易使用的工具,但透過演算法找出來的規則僅是機器的判斷,最後仍需要搭配領域專家與研究者的謹慎詮釋與評估才有意義。而且子群組探勘的目標與分類不同,它找出來的規則並不考慮推論性,不一定能夠適用於這些資料之外的其他新案例。以機器學習的角度來看,這就是過度適配(overfitting)。子群組探勘所找到的規則只能作為研究分析的起點,並不是終點。
從研究分析的角度來看,子群組探勘是極佳的探索性分析工具,它所找出來的子群組可以指引我們判斷下一步要往何處,或是透過驗證性分析來驗證子群組規則的有效性。祝大家研究順利。
我最近有更新Cortana的原始碼,最新版本請到這裡下載:
回覆刪除https://pulipulichen.github.io/Cortana-Subgroup-Discovery/cortana.jar
Exceptional Model Mining 特殊模式探勘的概念介紹,供大家參考
回覆刪除https://docs.google.com/presentation/d/161JtTpZuiSMsURQcqg7IKHqqmte-HEFKGLjYKSwtLzw/edit?usp=sharing
Cortana奇妙的毛筆字的向量圖備份
https://pulipulichen.github.io/blog-pulipuli-info-data-2018/06/emm-cortana-logo.svg
謝謝分享,受益良多
回覆刪除不客氣
刪除