MLCC - 09特征組合 (Feature Crosses)
原文鏈接:https://developers.google.com/machine-learning/crash-course/feature-crosses/
1- 對非線性規律進行編碼
特征組合是指通過將兩個或多個輸入特征相乘來對特征空間中的非線性規律進行編碼的合成特征。
通過創建一個特征組合可以解決非線性問題
特征組合的種類
可以創建很多不同種類的特征組合。例如:
- [A X B]:將兩個特征的值相乘形成的特征組合。
- [A x B x C x D x E]:將五個特征的值相乘形成的特征組合。
- [A x A]:對單個特征的值求平方形成的特征組合。
通過采用隨機梯度下降法,可以有效地訓練線性模型。
因此,在使用擴展的線性模型時輔以特征組合一直都是訓練大規模數據集的有效方法。
2- 組合獨熱矢量
在實踐中,機器學習模型很少會組合連續特征。
不過,機器學習模型卻經常組合獨熱特征矢量,將獨熱特征矢量的特征組合視為邏輯連接。
根據多個特征構建特征組合,最終獲得的預測能力將遠遠超過任一特征單獨的預測能力。
假設需要根據以下兩個特征來預測狗主人對狗狗的滿意程度:
- 行為類型(吠叫、叫、偎依等)
- 時段
根據這兩個特征構建特征組合: [behavior type X time of day]
例如,
如果狗狗在下午5點主人下班回來時(快樂地)叫喊,可能表示對主人滿意度的正面預測結果。
如果狗狗在淩晨3點主人熟睡時(也許痛苦地)哀叫,可能表示對主人滿意度的強烈負面預測結果。
線性學習器可以很好地擴展到大量數據。
對大規模數據集使用特征組合是學習高度復雜模型的一種有效策略。
神經網絡可提供另一種策略。
3- 關鍵詞
梯度下降法 (gradient descent)
一種通過計算並且減小梯度將損失降至最低的技術,它以訓練數據為條件,來計算損失相對於模型參數的梯度。
通俗來說,梯度下降法以叠代方式調整參數,逐漸找到權重和偏差的最佳組合,從而將損失降至最低。
隨機梯度下降法 (SGD, stochastic gradient descent)
批次大小為 1 的一種梯度下降法。
換句話說,SGD 依賴於從數據集中隨機均勻選擇的單個樣本來計算每步的梯度估算值。
特征組合 (feature cross)
通過將單獨的特征進行組合(求笛卡爾積)而形成的合成特征。特征組合有助於表達非線性關系。
合成特征 (synthetic feature)
一種特征,不在輸入特征之列,而是從一個或多個輸入特征衍生而來。
合成特征包括以下類型:
-
- 對連續特征進行分桶,以分為多個區間分箱。
- 將一個特征值與其他特征值或其本身相乘(或相除)。
- 創建一個特征組合。
僅通過標準化或縮放創建的特征不屬於合成特征。
獨熱編碼 (one-hot encoding)
一種稀疏向量,其中:
-
- 一個元素設為 1。
- 所有其他元素均設為 0。
獨熱編碼常用於表示擁有有限個可能值的字符串或標識符。
例如,假設某個指定的植物學數據集記錄了 15000 個不同的物種,其中每個物種都用獨一無二的字符串標識符來表示。
在特征工程過程中,您可能需要將這些字符串標識符編碼為獨熱向量,向量的大小為 15000。
4- 編程練習
原文鏈接:https://colab.research.google.com/notebooks/mlcc/feature_crosses.ipynb
5- 檢查理解情況
問題
加利福尼亞州不同城市的房價有很大差異。假設您必須創建一個模型來預測房價。以下哪組特征或特征組合可以反映出特定城市中 roomsPerPerson 與房價之間的關系?
- 三個獨立的分箱特征:[binned latitude]、[binned longitude]、[binned roomsPerPerson]
- 一個特征組合:[binned latitude X binned longitude X binned roomsPerPerson]
- 兩個特征組合:[binned latitude X binned roomsPerPerson] 和 [binned longitude X binned roomsPerPerson]
- 一個特征組合:[latitude X longitude X roomsPerPerson]
解答
- 建議您采用分箱方式,因為這樣可以讓模型了解單個特征內的非線性關系。不過,一個城市存在於多個維度上;因此,要了解特定於城市的關系,需要對緯度與經度進行組合。請重試。
- 正確答案。將分箱緯度與分箱經度組合可以讓模型了解 roomsPerPerson 特定於城市的效果。分箱可防止緯度變化與經度變化產生相同的效果。根據箱的精細程度,此特征組合可以反映出特定於城市、特定於社區,甚至特定於街區的效果。
- 建議您采用分箱方式;不過,城市是緯度和經度的結合體,因此單獨的特征組合會導致模型無法了解特定於城市的價格。請重試。
- 在本例中,不建議您組合實值特征。例如,將緯度的實值與 roomsPerPerson 組合後,一個特征(比如緯度)上發生 10% 的變化就相當於另一個特征(比如 roomsPerPerson)上發生 10% 的變化。
MLCC - 09特征組合 (Feature Crosses)