陳述:良好功能的條件

我們已探索如何將原始資料對應至合適的特徵向量,但這只是這項作業的一部分。現在,我們必須探索哪些類型的值 能夠確實讓這些特徵向量中的強大特徵

避免使用很少使用的離散特徵值

良好特徵值在資料集中應出現超過 5 次以上。這樣可讓模型瞭解這個特徵值與標籤之間的關係。也就是說,擁有多個具有相同獨立值的範例,可讓模型在不同設定中查看該特徵,進而判斷何時適合標籤的預測者。例如,house_type 功能可能包含許多值為 victorian 的範例:

house_type: victorian

相反地,如果特徵值只出現一次或很少出現,模型就無法依據該特徵進行預測。舉例來說,unique_house_id 是不良特徵,因為每個值都只能使用一次,因此模型無法從中學習任何資訊:

unique_house_id: 8SK982ZZ1242Z

偏好清楚且顯而易見的意思

每項功能都應該清楚明確地代表專案中的所有人。舉例來說,以下這項功能已有清楚的名稱,且值與名稱相關:

 house_age_years: 27 

相反地,除了建立這個特徵的工程師以外,下列特徵值的意義將幾乎無法理解:

house_age: 851472000

在某些情況下,雜訊的資料 (而非錯誤的工程選擇) 會導致值不明確。舉例來說,下列 user_age_years 來源不是檢查適當值的來源:

user_age_years: 277

請勿混用「魔術」值和實際資料

良好的浮點特徵不會含有偏離範圍的不連續值或「魔術」值。舉例來說,假設某個地圖項目保留介於 0 和 1 之間的浮點值。因此,下列值沒有問題:

quality_rating: 0.82
quality_rating: 0.37

不過,如果使用者未輸入 quality_rating,資料集或許會以魔法值表示不存在,如下所示:

quality_rating: -1

如要明確標示魔術值,請建立布林功能,指出是否已提供 quality_rating。為這個布林地圖項目命名,例如 is_quality_rating_defined

在原始地圖項目中,將魔術值替換如下:

  • 如果是使用一組有限值 (離散變數) 的變數,請為該集合新增新值,並用來代表缺少該特徵值。
  • 針對連續變數,使用特徵資料的平均值,確保遺漏值不會影響模型。

考量上游不穩定性

地圖項目的定義不會隨時間而改變。舉例來說,下列值很有用,因為城市名稱「可能」不會變更。(請注意,我們仍須將「br/sao_paulo」等字串轉換為 one-hot 向量)。

city_id: "br/sao_paulo"

不過,收集由其他模型推測的值,會產生額外費用。「219」值目前可能代表 Sao Paulo,但它的表示法在日後執行其他模型時應該很容易改變:

inferred_city_cluster: "219"