清除遺漏的資料

指定如何處理資料集遺漏的值

類別: 資料轉換/操作

注意

適用于 : Machine Learning Studio (傳統)

此內容僅適用于 Studio (傳統) 。 Azure Machine Learning 設計工具中已新增類似的拖放模組。 若要深入瞭解 這兩個版本,請參閱這篇文章

模組概觀

本文說明如何使用 Azure Machine Learning Studio (傳統) 中的 [ 清除遺漏資料 ] 模組,來移除、取代或推斷遺漏值。

資料科學家通常會檢查遺漏值的資料,然後執行各種作業來修正資料或插入新值。 這類清除作業的目標是要防止在定型模型時可能發生的資料遺失所造成的問題。

此模組支援多個類型的「清除」遺漏值的作業,包括:

  • 以預留位置、mean 或其他值取代遺漏值
  • 完全移除具有遺漏值的資料列和資料行
  • 根據統計方法推斷值

提示

機器學習服務的新手嗎? 本文將詳細說明如何使用各種不同的方法來取代遺漏值: 處理遺漏值的方法

使用此模組並不會變更您的源資料集。 相反地,它會在您的工作區中建立新的資料集,供您在後續的工作流程中使用。 您也可以儲存新的、已清除的資料集以供重複使用。

此模組也會輸出用來清除遺漏值的轉換定義。 您可以使用「套用 轉換 」模組,在具有相同架構的其他資料集上重複使用這個轉換。

如何使用清除遺漏的資料

此課程模組可讓您定義清除作業。 您也可以儲存清除作業,讓您稍後可以將它套用至新的資料。 如需如何建立和儲存清理程式的說明,請參閱下列連結:

重要

您用來處理遺漏值的清除方法,可能會大幅影響您的結果。 建議您試驗不同的方法。 請考慮使用特定方法的理由和結果品質。

取代遺漏值

每次您將 [ 清除遺漏的資料 ] 模組套用至一組資料時,就會對您選取的所有資料行套用相同的清除作業。 因此,如果您需要使用不同的方法來清除不同的資料行,請使用不同的模組實例。

  1. 將 [ 清除遺漏的資料 ] 模組新增至您的實驗,並連接具有遺漏值的資料集。

  2. 針對 要清除 的資料行,選擇包含您想要變更之遺漏值的資料行。 您可以選擇多個資料行,但必須在所有選取的資料行中使用相同的取代方法。 因此,您通常需要分開清除字串資料行和數值資料行。

    例如,若要檢查所有數值資料行中的遺漏值:

    1. 開啟 [資料行選取器],然後選取 [ 使用規則]。

    2. 在 [開始 于] 中,選取 [沒有資料行]。

      您也可以從所有資料行開始,然後排除資料行。 一開始,如果您第一次按一下 [ 所有資料行],就不會顯示規則,但是您可以按一下 [ 無資料行 ],然後再按一下 [ 所有資料行 ] 以開始使用所有資料行,然後根據名稱、資料類型或資料行索引,篩選出 (排除) 資料行。

    3. 針對 [ 包含],從下拉式清單中選取 [資料 行類型 ],然後選取 [ 數值] 或更特定的數數值型別。

    您所選擇的任何清除或取代方法,都必須適用于選取範圍中的 所有 資料行。 如果任何資料行中的資料與指定的作業不相容,模組會傳回錯誤並停止實驗。

  3. 針對 [ 最小遺漏值比率],指定執行作業所需的遺漏值的最小數目。

    您可以使用此選項搭配 最大遺漏值比率 ,來定義在資料集上執行清除作業的條件。 如果遺漏值的資料列太多或太少,就無法執行此作業。

    您輸入的數位表示資料行中所有值的遺漏值 比率 。 根據預設, 最小遺漏值比率 屬性會設定為0。 這表示即使只有一個遺漏值,也會清除遺漏值。 如需如何使用這個選項的範例,請參閱 設定清除作業的臨界值

    警告

    每個資料行都必須符合此條件,才能套用指定的作業。 例如,假設您選取三個數據行,然後將遺漏值的最小比率設為 .2 (20% ) ,但只有一個資料行實際上有20% 的遺漏值。 在此情況下,清除作業只會套用至具有超過20% 遺漏值的資料行。 因此,其他資料行則不會變更。

    如果您對遺漏值是否已變更有所疑慮,請選取 [產生遺漏值指標資料行] 選項。 資料集會附加資料行,以指出每個資料行是否符合最小和最大範圍的指定準則。

  4. 針對 [ 最大遺漏值比率],指定可針對要執行之作業顯示的遺漏值的最大數目。

    例如,您可能只想要在有30% 或更少的資料列包含遺漏值時,才執行遺漏值替代,但如果有超過30% 的資料列有遺漏值,則將這些值保留原狀。

    您可以定義數目為遺漏值,以資料行中的所有值的比例。 根據預設, 最大遺漏值比例 會設定為1。 這表示即使遺漏資料行中值的100%,也會清除遺漏值。

    注意

    當您使用 [ 最小遺漏值 ] 或 [ 最大遺漏值比率] 選項設定臨界值時,如果其中一個選取的資料行不符合準則,則無法執行清理作業。

  5. 針對 [ 清除模式],選取下列其中一個選項來取代或移除遺漏值:

    • 滑鼠取代:針對每個遺漏值,此選項會指派新的值,其計算方式是使用統計文獻中所述的方法,做為「使用連鎖方程式多變數插補」或「由連鎖方程式進行多重插補」。 使用 多個插補方法 時,會使用資料中的其他變數來有條件地將遺漏資料的每個變數模型化,然後再填滿遺漏值。 相反地,在 單一的插補方法 中 (例如,將遺漏值取代為數據行表示) 單一行程會透過資料進行,以判斷填滿值。

      所有插補方法都會引進一些錯誤或偏差,但多個插補更能模擬產生資料的進程,以及資料的機率分佈。

      如需處理遺漏值之方法的一般簡介,請參閱 遺失資料:藝術的狀態。Schafer 和 Graham,2002

      警告

      此選項無法套用至完全空白的資料行。 這類資料行必須移除,或傳遞至輸出。

    • 自訂替代值:使用此選項來指定預留位置值 (例如套用至所有遺漏值的0或 NA) 。 您指定為取代的值必須與資料行的資料類型相容。

    • 以 Mean 取代:計算資料行的平均值,並使用 mean 作為資料行中每個遺漏值的取代值。

      只適用於具有整數、 Double、 資料行或 Boolean 資料型別。 如需詳細資訊,請參閱 技術 提示一節。

    • 取代為中間 值:計算資料行的中位數值,並使用中值做為資料行中任何遺漏值的取代值。

      只適用於具有整數、 Double、 資料行或 Boolean 資料型別。 如需詳細資訊,請參閱 技術 提示一節。

    • 取代為模式:計算資料行的模式,並使用此模式作為資料行中每個遺漏值的取代值。

      適用於 Integer、 Double、 布林值或 Categorical 資料類型的資料行。 如需詳細資訊,請參閱 技術 提示一節。

    • 移除整個資料列:完全移除資料集內有一個或多個遺漏值的任何資料列。 如果遺漏值可視為隨機遺漏,此方法非常有用。

    • 移除整個資料行:完全移除資料集裡有一或多個遺漏值的任何資料行。

    • 使用概率 PCA 取代:使用線性模型來取代遺漏值,此模型會分析資料行之間的關聯性,並估計資料的低維近似值,以從中重建完整資料。 基礎維度減少為機率的表單的主要元件分析 (PCA),以及它會實作模型提議皇家統計協會系列 B 21(3),611 – 622 Tipping 和銘日誌中的 variant。

      相較於其他選項,例如「使用鏈結方程式的多重插補 (MICE)」,這個選項的優點是不需要對每個資料行應用預測值: 相反地,只會約略估計完整資料集的共變數。 因此,針對在許多資料行中有遺漏值的資料集,它可能會提供更好的效能。

      這個方法的主要限制是它可展開成數值指標了類別資料行和計算密集的共變數矩陣產生的資料。 它也不適合疏鬆的表示法。 基於這些理由,不支援具有大量資料行和/或大量類別定義域 (數以萬計) 的資料集,因為佔用空間太大。

      提示

      請記住,您選擇的方法會套用至選取範圍中的所有資料行。 因此,如果您想要將某些資料行中的遺漏值取代為零,但在其他資料行中插入預留位置,您應該使用 資料集中 的 [選取資料行] 來分隔資料,並使用 [ 清除遺漏資料 ] 模組的不同實例。

  6. 如果您已選取 [自訂替換值] 選項,則可以使用選項 取代值。 輸入新的值,做為資料行中所有遺漏值的取代值。

    請注意,您只能在具有整數、雙精確度、布林值或日期資料類型的資料行中使用此選項。 對於日期資料行,也可以輸入自 1/1/0001 12:00 AM 起的 100 奈秒數做為取代值。

  7. 產生遺漏值指標資料行:如果您想要輸出資料行中的值是否符合遺漏值清除的準則,請選取此選項。 當您要設定新的清除作業,並想要確保它如設計運作時,此選項特別有用。

  8. 執行實驗,或選取 [ 清除遺漏的資料 ] 模組,然後按一下 [ 執行選取]。

結果

模組會傳回兩個輸出:

  • 清除的資料集:包含所選資料行的資料集,如果您選取了該選項,則會以指定的方式處理遺漏值以及指標資料行。

    未選取要清除的資料行也會「通過」。

  • 清除轉換:用於清除的資料轉換,可儲存在您的工作區中,之後再套用至新的資料。

將已儲存的清理作業套用至新的資料

如果您需要經常重複清除作業,建議您將資料清理的配方儲存為 轉換,以重複使用相同的資料集。 如果您經常必須重新匯入,然後清除具有相同架構的資料,則儲存清除轉換特別有用。

  1. 將 [套用 轉換 ] 模組新增至您的實驗。

  2. 新增您想要清除的資料集,並將資料集連接至右手邊的輸入埠。

  3. 在 [Studio (傳統) ] 的左窗格中,展開 [ 轉換 ] 群組。 找出已儲存的轉換,然後將它拖曳到實驗中。

  4. 將儲存的轉換連接到 [套用 轉換] 的左側輸入埠。

    當您套用儲存的轉換時,無法選取要套用轉換的資料行。 這是因為轉換已經過定義,並且會自動套用至原始作業中指定的資料類型。

    不過,假設您在數值資料行的子集上建立了轉換。 您可以將此轉換套用至混合資料行類型的資料集,而不會引發錯誤,因為遺漏值只會在相符的數值資料行中變更。

  5. 執行實驗。

範例

請參閱 AZURE AI 資源庫中如何使用此模組的範例:

技術提示

本節包含執行詳細資料,以及已知問題和常見問題。

  • 選取任何字串資料行時,如果使用平均數或中位數選項,則會發生錯誤。 如果您需要處理不同資料類型的資料行,請建立兩個 [清除遺漏資料] 執行個體。

  • 以布林值、整數、日期時間或 TimeSpan 資料類型的資料行中的 mean 值取代遺漏值時,會先將資料行轉換成浮點數、計算平均值,然後將結果四捨五入至原始資料類型的最接近值。

  • 當您輸入取代值時,該值必須與所選資料行中的資料類型相容。

  • NaN Inf –Inf 針對資料類型為 Double 的資料行,允許、和的值。

  • 使用 MICE 方法時,會使用定型的 MICE 模型來預測取代值。

  • 使用「 清除遺漏的資料 」可以將其他資料行類型重設為「 功能」。 如果您的資料包含其他類型的資料行(例如標籤),請使用 [ 編輯中繼資料 ] 來更正資料行類型。

使用清除轉換的限制

當您使用儲存的轉換 (根據新資料) 的 清除遺漏資料 時,適用下列限制:

  • 即使在原始清除作業中使用此選項,儲存的轉換也無法產生指標值。 測試新轉換時,請將指標值視為最有用。

  • 轉換不會根據新的資料集來計算新值。 換句話說,如果您在資料集 A 上使用 清除遺漏資料 ,並產生 mean 值0.5,則不論資料集 b 中的實際值為何,相同的值也會套用為取代資料集 b 中遺漏值的平均值。

  • 新資料集中資料行的資料類型必須符合最初建立轉換之資料行的資料類型。 如果在隱含變更資料類型的資料行上執行任何作業,就會引發錯誤。

    例如,假設您為整數資料行 [Col1] 建立平均值,然後儲存轉換。 現在您想要將清除轉換套用至已使用公式調整的 [Col1] 複本,例如 ( [Col1]/1.5) 。 為了確保結果為整數,您可以進位結果,但當您套用轉換時,仍會收到錯誤。 但是,如果您使用公式(例如 ( [Col 1] * 10) 來調整值),則不會引發任何錯誤!

    若要避免這類問題,請使用 [ 編輯中繼資料 ] 將資料類型明確重設為整數。 一般而言,[套用 數學運算 ] 模組中的作業會將數值資料行隱含地變更為 double

設定和解讀臨界值

當您使用 [ 最小遺漏值 ] 或 [ 最大遺漏值] 值 的選項來指定清除作業的臨界值時,結果可能是非預期或令人困惑。 為了說明最大和最小遺漏值的選項如何運作,我們提供了 汽車價格 範例資料集的一些範例,其中有許多資料行有遺漏值。

下表顯示該資料集中數個數據行的遺漏值計數,以及在資料集上計算之遺漏值的比率。 在最右邊的資料行中,遺漏值的比率 () 是針對指定的臨界值評估資料集時所用的值。

假設您將 最小遺漏值比例 設定為0.019,並將 遺漏值的最大值比例 設定為0.020。 假設有下列的值資料表,某些資料行符合臨界值準則,而某些則沒有:

  • 資料行 borestroke 符合臨界值準則。
  • 資料行 normalized-lossescompression-ratio 不符合臨界值準則。
資料行名稱 遺漏值的計數 遺漏值的比率
正常化損失 41 0.2
內徑 4 0.019512195
筆勢 4 0.019512195
壓縮比例 0 0

因為選取範圍中的 某些 資料行不符合指定的準則,所以不會對任何資料行執行任何清除作業。 為了協助您找出發生什麼事,模組會傳回兩個指標資料行中的 FALSE 值, bore_IsMissing 以及 stroke_IsMissing

但是,如果您將閾值變更回預設值0,以取得 最小遺漏值比率 ,1表示 最大遺漏值比率,則會針對所有選取的資料行傳回指標資料行,並執行指定的作業。

提示

如果您不確定遺漏值清除是否如預期般運作,請選取 [ 產生遺漏值指標資料行 ] 選項。

已知問題

如果您使用滑鼠方法來清除資料,然後處理包含遺漏值的資料集,您可能會收到下列錯誤:「AFx 程式庫程式庫例外狀況:模型未定型。 ( 錯誤 1000 ) 」

只有在選取滑鼠方法時,以及訓練資料集不包含遺漏值,但測試資料集執行時,才會發生此錯誤。

預期的輸入

名稱 類型 Description
資料集 資料表 要清除的資料集

模組參數

Name 範圍 類型 預設 描述
要清除的資料行 任意 ColumnSelection 全部 選取的資料行遺漏值的清除作業。
最小遺漏值比率 [0.0; 1.0] Float 0.0 從所有選取的資料行集合中,只清除遺漏值比率超過指定值的資料行。
最大遺漏值比率 [0.0; 1.0] Float 1.0 從選取的所有資料行所組成的集合中,只清除遺漏值比率低於指定值的資料行
清除模式 List 處理原則 自訂的替代值 選擇清除遺漏值時要使用的演算法。
取代值 任意 String "0" 輸入的值來取代遺漏值。

這是選擇性的值。
完全為遺漏值的資料行 任意 ColumnsWithAllValuesMissing 移除 指出是否應該在輸出中保留完全為遺漏值的資料行
產生遺漏值指標資料行 任意 Boolean false 產生可指出哪些資料列已清除的資料行
反覆運算次數 [1; 10] 整數 5 指定使用 MICE 時的反覆運算次數
PCA 預測的反覆運算次數 [1; 50] 整數 10 指定使用 PCA 預測時的反覆運算次數

輸出

名稱 類型 Description
已清除的資料集 資料表 已清除的資料集
清除轉換 ITransform 介面 傳遞至 套用轉換 模組以清除新資料的轉換

例外狀況

例外狀況 描述
錯誤 0002 如果有一或多個參數無法剖析或從指定的類型轉換成目標方法所需的類型,就會發生例外狀況。
錯誤 0003 如果將一個或多個輸入資料集為 null 或空白,會發生例外狀況。
錯誤 0008 如果參數不在範圍內,就會發生例外狀況。
錯誤 0013 如果精簡傳遞給模組有無效的型別時,發生例外狀況。
錯誤 0018 如果無效的輸入資料集,就會發生例外狀況。
錯誤 0039 如果作業失敗,就會發生例外狀況。

如需 Studio (傳統) 模組特定的錯誤清單,請參閱 機器學習錯誤碼

如需 API 例外狀況的清單,請參閱 機器學習 REST API 錯誤碼

另請參閱

操縱
資料轉換
A-Z 模組清單