# Null 插補

太多遺失的值可能會對機器學習模型的品質造成負面影響。插補是填補遺失值 (稱為 Null 值) 的做法。遺失資料可能有很多原因，例如資料庫錯誤、使用者沒有填寫部分表單，或您也許開始收集新的資料，而資料集中的舊記錄沒有新的資料點。

重要的是，應理解插補對資料可能造成的影響。插補保留列或欄的預測能力，但也可能建立之前不存在的模式，或對已存在的模式增添雜訊。這會降低資料有效性。

您可能會想要檢閱資料收集做法，以確保資料完整性並按需求實施新的流程。若您想要保留空值的代表性，您可以使用「other」(其他) 或「unknown」(未知) 等值填入 Null。

## 自動前置處理期間的 Null 插補

在 Qlik Predict 中，自動資料前置處理使用 Null 插補來準備用於訓練的資料集。在自動資料前置處理期間，Null 值的處理方式是排除遺失超過 50% 值的欄並插補遺失的值。類別特徵中的遺漏值以值「其他」插補，而數值特徵中的遺漏值則以平均值插補。

其他考量適用於自動設計的功能、時間感知訓練和時間序列實驗。

如需更多關於前置處理的資訊，請參閱 [自動資料準備和轉換](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/preprocessing-steps.htm)。

### 自動設計的特徵

透過自動特徵設計，Qlik Predict 會從現有父特徵建立新的特徵。對於自動設計的特徵，會執行 Null 插補，如下所示：

* 如果您在訓練中包含自動設計的日期特徵，這些特徵的 Null 插補流程與數值特徵相同。

* 如果您改用父日期特徵，則 Null 插補流程與類別特徵相同。

* 對於被視為自由文字的類別特徵，Null 插補與類別特徵相同。

### 時間意識訓練

如果開啟時間意識訓練，則會執行 Null 插補，如下所示：

* 在前置處理期間，會捨棄訓練資料集中任何具有所選日期索引 Null 值的列。這些列不會用於訓練模型。

* 對於數值特徵，會透過線性內插補執行 Null 插補。線性內插補也會用於自動設計的日期特徵。

* 對於類別特徵，Null 插補流程與不使用時間意識訓練時相同。

* 如果您使用日期特徵而沒有自動特徵設計，則 Null 插補流程與類別特徵相同。

* 對於被視為自由文字的類別特徵，Null 插補與類別特徵相同。

如需更多關於時間意識訓練的資訊，請參閱 [建立時間意識模型](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/time-aware-models.htm)。

### 時間序列實驗

對於時間序列實驗，空值插補的執行方式如下：

* 對於遺失[群組](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#Groups)或[日期索引](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#DateIndex)值的記錄，會捨棄整個記錄，並將其值替換為插補值。

* 在時間序列實驗的資料集中，日期索引欄也可能在其[時間步長](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/machine-learning-framework-time-series.htm#TimeSteps)中存在間隙。在這些情況下，也會執行插補，以將這些完整的遺失記錄新增到資料集。

## 插補如何運作

下列方法是 Null 插補的常見做法。

### 數值

良好的預設做法是插補平均值。若遺失的值正常分佈，這就像在蹺蹺板中央增加重量，而不會影響兩側的重量。不過，您務必要考慮該值嘗試呈現的內容。例如，若銷售資料中的某些銷售價格值是 Null，這是因為資料庫錯誤，或是因為買家使用優惠券作為付款方式？0 或是其他值是否會比平均值更合理？

### 類別值

類別值的良好預設做法是新增另一個類別並稱之為「Other」(其他)、「Unknown」(未知) 甚至是「Missing」(遺失)。若隨機分佈遺失的值，則此類別可以保留其他差異，或者若遺失值和目標值之間有重要關係，則可增加特徵重要性。

遞補是以模式形式插補平均值。如同使用數值，考慮值實際上嘗試呈現的內容以及值可能遺失的原因，永遠很重要。若您知道大部分遺失的值可能是模式，則您可以使用模式插補。若不知道，或不確定，則您可以使用對資料集是新唯一值的 Filler 文字插補類別值。

## 插補數值的影響

數字插補 1 顯示散佈圖與最適線。我們有沿著類別 (x) 軸的數值以及沿著值 (y) 軸的目標值。這看起來很適合，但僅考慮到 x 是已知情況下的資料點。

數字插補 1：已知值與最適線的圖

數字插補 1：已知值與最適線的圖

數字插補 1：已知值與最適線的圖 ![線性最適線的圖。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/null-imputation-1.png)

在數字插補 2，我們已插補平均值。不過，遺失的值看起來不像是隨機。於是這讓最適線歪曲，並增添雜訊，降低了模型的整體準確度。

數字插補 2：已知值和插補平均值的圖。插補的值不是隨機分佈，有新的最適線。

數字插補 2：已知值和插補平均值的圖。插補的值不是隨機分佈，有新的最適線。

數字插補 2：已知值和插補平均值的圖。插補的值不是隨機分佈，有新的最適線。 ![讓最適線歪曲的插補值圖。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/null-imputation-2.png)

數字插補 3 的圖表顯示，若我們在遺失的值隨機分佈時插補平均值，會是什麼樣子。換言之，亦即不必知道值是存在或遺失，藉此獲得其他知識。若遺失的值隨機分佈，則不會變更最適線。若我們已插補 0 而非平均值，則會以類似數字插補 2 的方式變更最適線。

數字插補 3：已知值和隨機分佈插補值的圖。最適線未變更。

數字插補 3：已知值和隨機分佈插補值的圖。最適線未變更。

數字插補 3：已知值和隨機分佈插補值的圖。最適線未變更。 ![沒有讓最適線歪曲的插補值圖。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/null-imputation-3.png)

### 範例：貸款資格

現實範例是，假設 x 是年收入而 y 是有資格借貸的金額。我們會預期的關係是，某人的收入越高，可以借貸的金額就越高。模式會類似於上述的數字插捕 1。

想像收入較少的人比較不可能提交年收入。在此情況下，x 值會因為特定原因而遺失。為這些值插補平均值會讓模型結果歪曲。結果會像數字插補 2。

現在，考慮資料庫中的某些記錄遭到隨機刪除。這些記錄包含某人收入多少的資料，但不是該名人士的記錄。因此 x 值會隨機出現 Null。這樣的影響繪製在數字插補 3 中，其中我們可以安全地插補遺失的值。

應考慮另一件事：如果插補 0 而非平均值，會如何？在貸款資格範例中，呈現某人的收入是 0 可能並不準確。這會讓模型歪曲，類似數字插補 2。

## 插補類別值的影響

在以上的數字案例中，我們使用了平均值來插補遺失的值。類別值的簡單方法是採用模式，這是最常發生的值。插補模式時的一些挑戰與對數值插補平均值相同。

在下圖中，Missing\_1 中遺失的值與目標之間有一種模式，而 Missing\_2 則是隨機分佈。我們可以看見這是因為 Missing\_2 符合整體平均目標值。Missing\_1 類似於數字插補 2，而 Missing\_2 則類似於數字插補 3。

類別插補：欄 Missing\_1 和 Missing\_2 是含有及不含模式的遺失值範例。

類別插補：欄 Missing\_1 和 Missing\_2 是含有及不含模式的遺失值範例。

類別插補：欄 Missing\_1 和 Missing\_2 是含有及不含模式的遺失值範例。 ![圖表顯示分類 A、B 和 C 的分佈以及整體平均和遺失值的類別插補。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/null-imputation-4.png)

與數字範例的差異是在此案例中，Missing\_1 和 Missing\_2 都會讓模式辨識歪曲。若使用模式插補，則只有會是插補值的資料子集 (類別 B) 歪曲，因為這是最大的類別。

歪曲單一值和目標值之間的關係不是插補的唯一風險，而是最常見且最容易評估的風險之一。其他風險傾向增添雜訊並降低準確度。幸運的是，捨棄相對疏鬆的維度，可以大幅減輕歪曲風險。經常會爭論欄或列中確切允許什麼樣的稀疏程度，但比較不常爭論插補值可能因為不再呈現資料嘗試描述的內容而扭曲資料。