數值資料:良好數值特徵的品質

本單元探討將原始資料對應至適當特徵向量的方法。優質的數值特徵具有本節所述的特性。

名稱清楚

每項功能都應具有明確、合理且明顯的含義,讓專案中的任何人都能理解。舉例來說,下列功能值的含義令人困惑:

不建議使用

house_age: 851472000

相較之下,下列功能名稱和值就清楚多了:

建議

house_age_years: 27

在訓練前檢查或測試

雖然本單元已花費大量時間討論異常值,但這個主題的重要性足以讓我們再提一次。在某些情況下,錯誤的資料 (而非錯誤的工程選擇) 會導致值不清楚。舉例來說,下列 user_age_in_years 來自未檢查適當值的來源:

不建議使用

user_age_in_years: 224

但使用者可以是 24 歲:

建議

user_age_in_years: 24

檢查你的資料!

合理

「魔術值」是指在連續功能中刻意造成的斷層。舉例來說,假設名為 watch_time_in_seconds 的連續特徵可以儲存 0 到 30 之間的任何浮點值,但會使用魔法值 -1 表示測量值不存在

不建議使用

watch_time_in_seconds: -1

如果 watch_time_in_seconds 為 -1,模型就會嘗試瞭解倒轉觀看電影的含意。產生的模型可能無法做出良好的預測。

更好的做法是建立獨立的布林特徵,指出是否提供 watch_time_in_seconds 值。例如:

建議

watch_time_in_seconds: 4.82
is_watch_time_in_seconds_defined=True

watch_time_in_seconds: 0
is_watch_time_in_seconds_defined=False

這是處理連續資料集 (含缺值) 的方法。接著,請考慮離散數值特徵,例如 product_category,其值必須屬於有限值集。在這種情況下,如果缺少某個值,請使用有限集合中的新值來表示缺少的值。使用離散特徵時,模型會為每個值學習不同的權重,包括遺漏特徵的原始權重。

舉例來說,我們可以想像符合集合的可能值:

{0: 'electronics', 1: 'books', 2: 'clothing', 3: 'missing_category'}。