進行資料探勘或預測分析專案之前,徹底探索資料是一件必要且重要的工作。這是因為資料科學家不僅需要了解資料欄位實際的內容以及值域的分佈,同時他們也需要處理資料品質的問題。造成資料存在錯誤或不準確的問題,其原因可能是:輸入數值時偶爾出現的錯誤、未嚴格控制資料輸入內容而導致的缺失值、欺騙性回應(Fraudulent Responses)、員工培訓不足導致的誤解和資料不一致。因此,CRISP-DM 方法論中的資料理解階段是機器學習建模專案中關鍵的一個步驟,因為這是資料科學家有機會藉由取得的資料來評估專案目標可行性的重要開始。IBM SPSS Modeler 提供了許多方法來解決這些問題,在本篇文章中,我們將重點介紹「過濾器」、「類型」、「資料審核」這三個常用於資料剖析與清洗的節點。
1.過濾器節點
「過濾器」節點在處理資料集大量無關欄位時特別有幫助,使用這個節點可以立即排除不需要的欄位(維度縮減),此外我們也可以用它來重新指定欄位的名稱。「過濾器」節點位於「資料欄位作業」工具箱中,將它與資料來源鏈結後,在設定視窗中就可以看到所有資料來源中的欄位。滑鼠點擊表格中的「過濾器」欄位可快速切換並決定欄位是否需要流向至下一個節點,如下圖所示:黑色的向右箭頭代表該欄位會向下游傳送;帶有紅色 X 的向右箭頭則代表該欄位不會向下游傳送。此外,點擊表格右方的欄位名稱,可以編輯並重新指定它的名稱。
點擊「過濾器」節點設定視窗中的「預覽」按鈕,可以觀察到我們選擇的 12 個欄位將會向下游傳送,此外欄位 ed 的名稱也變更為易於理解的 education。
「過濾器」節點設定視窗中的「過濾器選項功能表」下拉選單(漏斗圖示)提供多個快速進行欄位過濾的選項功能,例如:移除全部欄位、納入全部欄位、截斷欄位名稱、匿名化欄位名稱等。有關 SPSS Modeler 過濾器節點的詳細說明,請參閱官方文件:過濾或重新命名欄位。
2.類型節點
「類型」節點位於「資料欄位作業」工具箱中,它是 SPSS Modeler 最重要的節點之一,主要用來控制變數欄位在機器學習建模過程中的角色、可接受值的範圍、缺失資料的定義以及無效值的處理方式。要讓 SPSS Modeler 理解資料的內容,我們需要執行實例化的操作。實例化(Instantiation)是分析資料量測層次與值域範圍的過程,在「類型」節點的設定視窗中點擊「讀取值」即可執行實例化分析的操作。
未實例化:存在不明類型的資料,變數的「量測」欄位顯示 SPSS Modeler 自動判斷的量測型別或顯示為 <預設值>。
部分實例化:僅針對字串或數值型別進行分析,變數的「量測」欄位分別顯示為 "種類" 或 "連續"。
完全實例化:變數的「量測」欄位依據指定型別進行分析,同時值域內容顯示於「值」欄位中。
測量層次(Levels of Measurement)用於指定 SPSS Modeler 對於資料欄位的使用型別。例如,某整數欄位的值為 1 及 0,您可將此欄位的測量層次設為旗標(Flag),這通常表示 1 = True 及 0 = False。有關量測層次的定義說明如下表:
# | 測量層次(中文) | 測量層次(英文) | 定義說明 |
---|---|---|---|
1 | 連續(連續變數) | Continuous | 用於表示數值型變數,例如範圍 0 - 100 或 0.75 - 1.25。連續變數可以是整數、實數或日期/時間。 |
2 | 種類(類別變數) | Categorical | 用於表示字串的非實例化資料類型,經實例化(讀取值)後,可以指定為「旗標」、「列名」或「無類型」等型別。 |
3 | 旗標(旗標變數) | Flag | 用於指示特性存在與否(例如 True 與 False、Yes 與 No 或 0 與 1),資料可代表為文字、整數、實數、日期、時間或時間戳記。 |
4 | 列名(名義變數) | Nominal | 用於表示多個不同值的資料,其中的每個值都被視為集合的一個成員,例如 small / medium / large。 |
5 | 序數(序數變數) | Ordinal | 用於表示多個順序固定且不同值的資料,順序由資料元素的自然排序定義。例如,1, 3, 5,或 HIGH, LOW, NORMAL(按英文字母遞增) |
6 | 無類型 | Typeless | 不屬於上述任何類型的資料,具有單一值的欄位或集合成員數超過定義數目上限的資料,例如 ID 或帳號。 |
指定欄位的測量層次有助於讓後續的建模操作更清楚知道要如何使用這些變數,部分節點甚至會要求所有欄位必須先實例化後才能使用(備註:部分模型節點也有提供設定欄位測量層次的功能)。
在「類型」節點的設定視窗中指定「檢查」欄位選項,可於執行串流時,檢查該欄位中所有的值,判定它們是否符合值域範圍限定的值。按下 Ctrl-A 可全選所有欄位一次進行設定,按下 Ctrl 搭配滑鼠點選則可進行多選。
# | 選項值(中文) | 選項值(英文) | 定義說明 |
---|---|---|---|
1 | 無 | None | 無須檢查(預設)。 |
2 | 取消(設為空值) | Nullify | 將未符合的值變更為系統空值($null$)。 |
3 | 強制(強制轉型) | Coerce | 將未符合的值變更為該測量層次的合法值。
|
4 | 捨棄 | Discard | 捨棄整筆資料。 |
5 | 警告 | Warn | 在串流內容對話框中報告未符合項目的欄位與取代結果。 |
6 | 放棄 | Abort | 發現第一個未符合的值會終止串流的執行,系統會在串流內容對話框中報告錯誤。 |
要測試檢查欄位值的效果,我們可以在資料來源節點後方建立一個新的分支串流,這個串流包含一個「類型」節點以及一個輸出的「表格」節點。在「類型」節點的設定視窗中,將所有欄位的「檢查」欄位指定為:警告(Warn)。執行這個分支串流後,可以從輸出資料表中看到空值欄位被置換為 $null$,串流內容對話框則會出現警示訊息。
SPSS Modeler 預設會在實例化時完成對所有欄位的值域解析,若需手動調整欄位的值域設定,可於「值」欄位選項中進行配置。
# | 選項值(中文) | 選項值(英文) | 定義說明 |
---|---|---|---|
1 | <讀取> | <Read> | 執行實例化(點擊讀取值)時讀取資料。 |
2 | <讀取 +> | <Read +> | 執行實例化時讀取資料,並附加至現行資料(如果原始資料集有新增資料需要重新分析時)。 |
3 | <傳送> | <Pass> | 不讀取任何資料。 |
4 | <目前> | <Current> | 保留現行資料值。 |
5 | 指定... | Specify... | 開啟單獨的對話框,手動配置測量層次與值域選項。 |
如果需要手動進行變數欄位的值域設定,例如:我們可以自行指定 age 的值域範圍介於 1 ~ 100 之間。請先點擊 age 欄位的「值」下拉選單,點選「指定...」。於「age 值」設定視窗中,我們可以手動將 age 欄位的下限調整為 1.0;將上限調整為 100.0。
「類型」節點除了可以分析變數量測層次與值域範圍(實例化),我們也可以結合「值」與「檢查」的設定,快速完成資料篩選工作。例如,我們在資料分析需求上需要排除年齡低於 20 歲的樣本資料,則可以自行指定 age 欄位的值域下限值為 20,並且將「檢查」欄位指定為:捨棄,也就是說資料流經「類型」節點時,會自動地將 age 低於 20 的資料捨棄掉。如下圖所示,y 資料集由 1000 筆降為 995 筆,其中 5 筆符合年齡條件的資料被捨棄掉了。
「角色」欄位用於指定變數欄位於建模時扮演的角色,例如二元分類模型中的輸入變數(稱為自變數或特徵變數)與目標變數(稱為應變數)。
# | 選項值(中文) | 選項值(英文) | 定義說明 |
---|---|---|---|
1 | 輸入 | Input | 用於機器學習的模型輸入欄位(一個預測工具欄位)。 |
2 | 目標 | Target | 用於機器學習的模型輸出或目標欄位(模型將嘗試預測的欄位)。 |
3 | 兩者 | Both | Apriori 節點(關聯規則模型)會將該欄位用作輸入與輸出,所有其他建模節點將忽略該欄位。 |
4 | 無 | None | 機器學習將忽略該欄位。 |
5 | 分割區 | Partition | 用於將資料分割為單獨的樣本,以進行訓練、測試及驗證(選用)。 |
6 | 分割 | Split | 指定要為欄位的每一個可能值建置一個模型(僅限名義、序數及旗標欄位)。 |
7 | 頻率 | Frequency | 可讓欄位值用作資料的頻率加權因素。只有 C&R Tree、CHAID、QUEST 及 Liner 模型支援此特性,所有其他節點都會忽略此角色。 |
8 | 記錄 ID | None | 將欄位指定為代表唯一值的 ID,大部分節點會忽略此特性。 |
「類型」節點是一個相當重要的節點,熟悉這個節點的操作,對於後續的建模作業很有幫助。有關 SPSS Modeler 類型節點的詳細說明,請參閱官方文件:類型節點。
3.資料審核節點
「資料審核」節點是前置資料處理階段用於快速理解資料品質的一個重要節點,因此,它也是 CRISP-DM 資料理解階段中,資料科學家經常使用的關鍵工具。「資料審核」節點位於「輸出」工具箱中,將它與「資料來源」、「過濾器」或是「類型」節點鏈結後,執行串流即可快速看到資料剖析的結果。
「資料審核」節點包含「審核」與「品質」二個頁籤,「審核」頁籤會輸出一個對資料進行剖析(Data profiling)的結果,讓我們對於所有的欄位及其資料內容有個初步的瞭解。連續變數與類別變數分別以次數分佈圖與直方圖形式顯示,同時也會計算並顯示變數的敘述統計量等相關數據。
欄位(Field):欄位名稱(變數名稱)。
圖表(Graph):統計圖(點擊可自動產生圖形分析結果)。
測量(Measurement):該變數的量測層次。
最小值(Min):數值變數的最小值。
最大值(Max):數值變數的最大值。
平均數(Mean):數值變數的算術平均數(集中趨勢測量)。
標準差(Std. Dev):數值變數的標準差。
偏斜度(Skewness):數值變數的偏斜度(分配對稱性測量)。
唯一(Unique):唯一值的計數。
有效(Valid):有效值的計數(Null、Space 視為無效值)。
在「審核」頁籤中,點擊變數的「圖表」欄位可產生圖形分析節點,類別型變數提供次數分配表與分佈圖(Distribution Graph),數值型變數則提供次數直方圖(Histogram Graph)。
「品質」頁籤則是 SPSS Modeler 對上游傳入的所有欄位的品質分析報告。表格上方的「完成欄位(%)」代表具備完整案例的欄位百分比;「完成紀錄(%)」代表具備整體完整記錄的百分比。
「離群值(Outliers)」代表數值型欄位中,存在離群值的資料數量(預設為超過或低於該變數均值 3 個標準差);「極端值(Extremes)」則代表數值型欄位中,存在極端值的資料數量(預設為超過或低於該變數均值 5 個標準差)。要修改離群值與極端值的偵測方法,可以開啟「資料審核」節點的設定視窗,切換至「品質」頁籤即可進行調整(需重新執行串流)。
對於離群值與極端值的處理,需要由預測需求的實際情境來決定,例如以非監督式學習方法來預測機器設備的異常狀態時,離群值與極端值是我們判斷電壓、電流或溫度是否異常的重要觀測值。在 SPSS Modeler 中,有很多種方法(節點)來處理離群值和極端值,我們也可以直接在「品質」頁籤中的「動作」欄位決定處理這些異常資料的操作。
無(None):不進行處理。
強制(Coerce):將離群值與極端值取代為臨界值範圍的最高值或最低值,例如,變數均值 3 個標準差的值。
捨棄(Discard):捨棄含指定欄位的離群值或極端值的該筆資料。
取消(Nullify):將離群值與極端值取代為空值或系統遺漏值(undef)。
強制離群值/捨棄極端值(Coerce outliers / discard extreme):對離群值進行強制處理,極端值則進行捨棄處理。
強制離群值/將極端值以空值處理(Coerce outliers / nullify extremes):對離群值進行強制處理,極端值則取代為空值或系統遺漏值(undef)。
需要特別提醒,「資料審核」節點屬於串流的輸出節點,因此我們不能在「資料審核」節點後方鏈結其他資料處理或建模節點。若需要對變數欄位的離群值與極端值進行處理,可以參考下圖的流程。首先,我們需要在變數的「動作」欄位中指定處理的方法,例如「強制離群值/捨棄極端值」。接著點擊上方「產生」按鈕,於選單中點選「離群值與極端值超級節點」,完成後串流畫布會出現一個星狀的超級節點,將上游的「類型」節點與超級節點鏈結即可完成串流。超級節點是 SPSS Modeler 的一種特殊節點,簡單來說就是將一系列的節點處理串流封裝為一個單一的節點,主要目的就是讓整個串流看起來更簡潔與清爽。欲檢視超級節點的內容,僅需點擊選取它,再點擊工具列的「放大超級節點」按鈕,即可進入超級節點的串流視窗。
「品質」頁籤除了分析變數的離群值與極端值,也會針對缺失值提供詳細的統計資訊。下圖藍色框標示的六個欄位分別是變數欄位品質驗證百分比、符合品質要求的筆數、空值的數量、空字串的數量、空白的數量、以及空白值(帶有不可見字元的字串)的數量,這些品質分析欄位讓我們可以清楚了解資料集中缺失值的類型及數量。下圖紅色框標示的「插補遺漏」與「方法」欄位則為我們提供處理缺失值的方法,「插補遺漏」欄位用於定義與識別缺失值的條件,「方法」欄位則用於指定填補缺失值的方法。這二個欄位的操作方式與「動作」欄位的方法相同,都必須透過產生超級節點的方式完成相關的節點。
我們用一個簡單的例子來說明填補缺失值的方法,如下圖所示,資料表輸出視窗中可以觀察到 logtoll 出現很多以 $null$ 代表的空值內容。從「品質」頁籤中我們已知這個變數的完成百分比僅 47.5%,其中空值多達 525 筆,若將 logtoll 作為輸入變數會嚴重影響模型預測的品質,因此,我們可以嘗試將空值置換為平均值。請注意:連續型變數的缺失值填補需要有合理性,使用集中趨勢的統計量(例如:平均數、中位數、眾數)只是其中一種方法,在統計學中還有更多有關缺失值填補的研究與方法,實務上還需要與資料集的特性與預測需求的情境進行評估後再決定較合適的填補方法。
回到「品質」頁籤中,請將 logtoll 的「插補遺漏」欄位指定為:空值;「方法」欄位選擇:指定...,在彈出的「插補設定」視窗中「插補方法」選擇:固定;「已固定為」選擇:平均數。
在「品質」頁籤中,點擊選取 logtoll 欄位,接著點擊上方「產生」按鈕,於選單中點選「遺漏值超級節點」,完成後串流畫布會出現一個星狀的超級節點,將上游的「類型」節點與超級節點鏈結,並於超級節點後方鏈結一個輸出的「表格」節點。
執行這個分支串流後,在輸出的表格視窗中可以觀察到 logtoll 欄位原先的空值($null$)都已經被取代為 3.240(該欄位的平均數)。
在「品質」頁籤的「產生」選單中,除了產生填補遺漏值的超級節點之外,我們也可以產生「過濾器」節點選擇是否要排除出現缺失值的變數,或是「選取」節點選擇是否要排除或保留出現缺失值的資料。有關 SPSS Modeler 資料審核節點的詳細說明,請參閱官方文件:資料審核節點。若需要進一步了解「超級節點」的說明與操作方式,請參閱官方文件:超級節點(SuperNode)。
版權聲明
文章內容未經授權,請勿進行任何形式的複製、修改或發佈本文內容,如需轉載或引用,請在使用時注明出處並取得授權。本文中提及的特定公司、產品、品牌名稱等僅為描述目的,其版權歸屬於相應的公司或擁有者。
沒有留言:
張貼留言