共用方式為


遺漏值 (Analysis Services - 數據採礦)

正確處理 遺漏值 是有效模型化的重要部分。 本節說明遺漏值是什麼,並描述 Analysis Services 中提供的功能,以在建置數據採礦結構和採礦模型時處理遺漏值。

數據採礦中遺漏值的定義

遺漏的值可以表示多種不同的含義。 也許欄位不適用、事件未發生,或數據無法使用。 輸入數據的人員可能不知道正確的值,或不在意欄位是否未填入。

不過,有許多數據採礦案例遺漏值會提供重要資訊。 遺漏值的意義主要取決於內容。 例如,發票清單中缺少的日期與用來表示員工僱用日期的欄位缺少日期,其意義有很大不同。 一般而言,Analysis Services 會將遺漏值視為資訊,並調整機率,將遺漏值納入其計算中。 如此一來,您就可以確保模型已平衡,且不會太重地加權現有的案例。

因此,Analysis Services 提供兩個不同的機制來管理和計算遺漏值。 第一個方法會控制採礦結構層級的 Null 處理。 第二種方法在每個演算法的實作中有所不同,但通常會定義遺漏值在允許 Null 值的模型中處理和計算的方式。

空值處理的指定

在您的數據源中,遺漏的值可能以許多方式表示:以 Null 表示、電子表格中的空白單元格、N/A 值或其他程式代碼,或做為 9999 之類的人工值。 不過,為了數據採礦的目的,只有 Null 會被視為遺漏值。 如果您的數據包含佔位元值而非 Null,它們可能會影響模型的結果,因此您應該盡可能以 Null 取代它們,或推斷正確的值。 您可以使用多種工具來推斷和填入適當的值,例如在 SQL Server Integration Services 中的查找轉換或資料評估任務,或者在 Excel 的 Add-Ins 資料探勘中提供的範例填滿工具。

如果您要建立模型的工作指定數據行絕對不能有遺漏值,則當您定義採礦結構時,應該將 NOT_NULL 模型旗標套用至數據行。 當案例沒有適當的值時,這個標誌指示處理應該將會失敗。 如果處理模型時發生此錯誤,您可以記錄錯誤,並採取步驟來更正提供給模型的數據。

缺失狀態的計算

對數據採礦演算法,遺漏的值具有資訊性。 在情境表中,Missing 是有效狀態,就像其他狀態一樣。 此外,數據採礦模型可以使用其他值來預測值是否遺漏。 換句話說,遺漏值的事實不是錯誤。

當您建立採礦模型時, Missing 狀態會自動新增至所有離散數據行的模型。 例如,如果輸入數據行 [Gender] 包含兩個可能的值:Male 和 Female,則會自動新增第三個值來表示 Missing 值,而顯示數據行所有值分佈的直方圖一律包含具有 Missing 值的案例計數。 如果 [性別] 數據行未遺漏任何值,直方圖會顯示在0種情況下找到遺漏狀態。

當您考慮數據可能沒有所有可能值的範例時,預設包含 Missing 狀態的理由會變得清楚,而且您不希望模型排除可能性,只是因為數據中沒有範例。 例如,如果商店的銷售數據顯示購買特定產品的所有客戶都是女性,您就不想建立預測只有女性可以購買產品的模型。 相反地,Analysis Services 會新增額外的未知值的佔位符,稱為 Missing,以容納可能的其他狀態。

例如,下表顯示針對 Bike Buyer 教學課程建立的判定樹模型中 (All) 節點的值分佈。 在範例案例中,[Bike Buyer] 數據行是可預測的屬性,其中 1 表示 「是」,0 表示「否」。

價值觀 案例
0 9296
1 9098
失蹤 0

此發行版顯示,大約一半的客戶購買了自行車,一半沒有。 這個特定的數據集非常乾淨;因此,每個案例在 [Bike Buyer] 數據行中都有一個值,且值的計數 Missing 為 0。 不過,如果 [Bike Buyer] 欄位中有任何 Null 的情況,Analysis Services 會將該數據列計算為具有 Missing 值的案例。

如果輸入是連續資料列,則模型會表化屬性的兩個可能狀態: ExistingMissing。 換句話說,數據行包含某些數值數據類型的值,或不包含任何值。 對於具有值的案例,模型會計算平均值、標準偏差和其他有意義的統計數據。 針對沒有數值的案例,模型會提供這些數值的 Missing 計數,並據以調整預測。 調整預測的方法會根據演算法而有所不同,如下一節所述。

備註

對於巢狀數據表中的屬性,遺漏的值不會提供資訊。 例如,如果客戶尚未購買產品,巢狀 Products 數據表就不會有對應至該產品的數據列,而採礦模型不會為遺漏的產品建立屬性。 不過,如果您對未購買特定產品的客戶感興趣,您可以使用模型篩選條件中的 NOT EXISTS 語句,建立根據巢狀數據表中產品不存在的篩選模型。 如需詳細資訊,請參閱 將篩選套用至採礦模型

調整遺漏狀態的機率

除了計算值之外,Analysis Services 也會計算數據集中任何值的機率。 Missing值也是如此。 例如,下表顯示上一個範例中案例的機率:

價值觀 案例 概率
0 9296 50.55%
1 9098 49.42%
失蹤 0 0.03%

在案例數目為 0 時,計算 Missing 值的概率為 0.03%,這似乎很奇怪。 事實上,此行為是有意設計的,並代表一種調整,可使模型優雅地處理未知值。

一般而言,機率會計算為有利案例除以所有可能案例。 在此範例中,演算法會計算符合特定條件的案例總和([Bike Buyer] = 1 或 [Bike Buyer] = 0),並將該數位除以數據列總數。 不過,為了考慮 Missing 案例,會將1新增至所有可能案例的數目。 因此,未知案例的機率不再是零,而是一個非常小的數字,表明這種狀態只是非常不太可能,而非不可能。

新增小 Missing 值並不會變更預測值的結果;不過,它會在歷程記錄數據不包含所有可能結果的案例中,進行更好的模型化。

備註

數據採礦提供者處理遺漏值的方式不同。 例如,某些提供者假設巢狀數據行中遺漏的數據是疏鬆表示法,但非巢狀數據行中遺漏的數據是隨機遺漏的。

如果您確定數據中指定了所有結果,而且想要防止機率調整,您應該在採礦結構中的數據行上設定NOT_NULL模型旗標。

備註

每個演算法,包括您可能從第三方外掛程式取得的自定義演算法,都可以以不同的方式處理遺漏值。

判定樹模型中遺漏值的特殊處理

Microsoft 決策樹演算法計算遺漏值的機率時,所使用的方法不同於其他演算法。 決策樹演算法不是僅僅將 1 新增至案例總數,而是使用稍微不同的公式來調整 Missing 狀態。

在判定樹模型中,狀態的 Missing 機率會計算如下:

StateProbability(狀態機率) = (NodePriorProbability)* (StateSupport + 1) / (NodeSupport + TotalStates)

此外,在 SQL Server 2014 Analysis Services (SSAS)中,判定樹演算法提供額外的調整,以協助演算法補償模型中存在的篩選條件,這可能會導致在訓練過程中排除許多狀態。

在 SQL Server 2014 中,如果在訓練期間存在某種狀態,但在特定節點中恰好完全沒有支援,則會進行標準調整。 不過,如果在訓練期間從未遇到某種狀態,演算法會將該狀態的機率設定為零。 這項調整不僅適用於 Missing 狀態,也適用於那些存在於訓練數據中但由於模型篩選結果而沒有支援的其他狀態。

此額外調整會產生下列公式:

StateProbability = 0.0,如果該狀態在訓練集中沒有支援。

ELSE 狀態概率 = (節點先驗概率)* (狀態支持度 + 1)/ (節點支持度 + 非零支持度之總狀態數)

這項調整的淨效應是維持樹的穩定性。

下列主題提供有關如何處理遺漏值的詳細資訊。

任務 連結
將旗標新增至個別模型數據行,以控制遺漏值的處理 檢視或變更模型旗標 (資料採礦)
設定採礦模型的屬性以控制遺漏值的處理 變更採礦模型的屬性
瞭解如何在 DMX 中指定模型旗標 模型旗標 (DMX)
改變採礦結構處理遺漏值的方式 變更採礦結構的屬性

另請參閱

採礦模型內容 (Analysis Services - 數據採礦)
模型旗標 (資料採礦)