當前位置:編程學習大全網 - 源碼下載 - tf.feature_column實用特征工程總結

tf.feature_column實用特征工程總結

tf.feature_column主要針對離散特征和連續特征, 概括而言, tf.feature_column可以實現四種場景

tf.feature_column對離散變量的處理有四個接口, 分別是 整數直接onehot , 指定詞表onehot , hash降維onehot , embedding離散特征連續化 , 其中前三種都會把字符串/整數特征處理成onehot 0/1向量,最後壹種embedding_column會對onehot的結果之上在做低維稠密向量映射, 接口如下

如果這壹列離散特征本身就是用連續的整數表示的(從0開始),則可以直接映射為離散變量,提前指定最大取值數量,如果超出了用默認值填充,適合本來就是用整數ID編碼,並且編碼氛圍不是很大的離散特征, 如果傳入的值列表包含多個元素, 可以實現mutihot, 但是列表元素個數要相同

如果壹列離散特征是字符串(也可以是整數), 並且取值範圍不多, 可以使用這個接口, 定義好離散特征的取值就好, 當出現新值的時候可以分配新的索引位置,或者映射到已有的位置上, 詞表映射也支持mutihot

如果設置num_oov_buckets=0, 或者不設置默認, 新詞會直接忽略掉

另壹種方式設置, 也可以處理新詞問題, 直接映射到壹個其他的詞上面, 比如叫其他

測試mutihot, 同壹個元素在壹行出現多次, 計數會超過1

如果這壹列是字符串離散變量(也可以是整數, 支持整數和字符串), 並且取值很多的情況下, 比如ID, 可以使用這個接口

如果輸入是整數數值, 使用dtype設置dtype=tf.int32, 內部會把整數先轉化為字符串在做hash

整數,詞表,hash之後通過indicator_column直接離散化, 進壹步可以使用embedding_column將onehot矩陣通過壹個中間的embedding隨機詞表, lookup成壹個embedding稠密向量, 默認情況下embedding可以跟著模型繼續訓練, 即trainable=True, 對於mutihot, embedding支持向量組合方式mean, sqrtn和sum

1.hash之後做embedding

2.詞表onehot之後做embedding

3.整數直接onehot之後再embedding

mutihot的embedding

tf.feature_column對連續變量的處理有兩個個接口, 分別是 連續值直接映射成連續變量 , 連續值分箱離散離散化 ,接口如下

連續變量分箱之後可以繼續接embedding

tf.feature_column.crossed_column可以對離散特征進行交叉組合, 增加模型特征的表征能力

嘗試用連續特征和離散特征進行交叉, 結果報錯

定義多個特征時, 在features字典中定義多個key, tensor對象傳入壹個list, 其中list的特征順序不影響特征組合結果, 以 feature_a.name的字符串順序 決定組合的特征組合的順序

  • 上一篇:C# 3.0中的分部方法
  • 下一篇:程序員的職業生涯通常會遇到哪些為人熟知的職業瓶頸?該如何應對?
  • copyright 2024編程學習大全網