本單元探討將原始資料對應至適當特徵向量的方法。優質的數值特徵具有本節所述的特性。
名稱清楚
每項功能都應具有明確、合理且明顯的含義,讓專案中的任何人都能理解。舉例來說,下列功能值的含義令人困惑:
不建議使用
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=Truewatch_time_in_seconds: 0
is_watch_time_in_seconds_defined=False
這是處理連續資料集 (含缺值) 的方法。接著,請考慮離散數值特徵,例如 product_category
,其值必須屬於有限值集。在這種情況下,如果缺少某個值,請使用有限集合中的新值來表示缺少的值。使用離散特徵時,模型會為每個值學習不同的權重,包括遺漏特徵的原始權重。
舉例來說,我們可以想像符合集合的可能值:
{0: 'electronics', 1: 'books', 2: 'clothing', 3: 'missing_category'}。