1. 程式人生 > >表示法--良好的特征特點

表示法--良好的特征特點

clust 有用 AR 斷點 解決 推理 必須 而不是 工作

我們探索了將原始數據映射到合適特征矢量的方法,但這只是工作的一部分。現在,我們必須探索什麽樣的值才算這些特征矢量中良好的特征。


避免很是使用的離散特征值

良好的特征值應該在數據集中出現大約 5 次以上。這樣一來,模型就可以學習該特征值與標簽是如何關聯的。也就是說,大量離散值相同的樣本可讓模型有機會了解不同設置中的特征,從而判斷何時可以對標簽很好地做出預測。例如,house_type 特征可能包含大量樣本,其中它的值為 victorian:

house_type: victorian

相反,如果某個特征的值僅出現一次或者很少出現,則模型就無法根據該特征進行預測。例如,unique_house_id 就不適合作為特征,因為每個值只使用一次,模型無法從中學習任何規律:


unique_house_id: 8SK982ZZ1242Z
最好具有清晰明確的含義

每個特征對於項目中的任何人來說都應該具有清晰明確的含義。例如,下面的房齡適合作為特征,可立即識別為年齡:

house_age: 27

相反,對於下方特征值的含義,除了創建它的工程師,其他人恐怕辨識不出:

avoidedhouse_age: 851472000

在某些情況下,混亂的數據(而不是糟糕的工程選擇)會導致含義不清晰的值。例如,以下 user_age 的來源沒有檢查值恰當與否:

user_age: 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”這樣的字符串轉換為獨熱矢量。)

city_id: "br/sao_paulo"

但收集由其他模型推理的值會產生額外成本。可能值“219”目前代表聖保羅,但這種表示在未來運行其他模型時可能輕易發生變化:

inferred_city_cluster: "219"
引用:

表示 (Representation):良好特征的特點

表示法--良好的特征特點