表示法--特征工程
阿新 • • 發佈:2018-03-25
字符串 改善 工作 機器 技術 訓練 表示法 body logs
傳統編程的關註點是代碼。在機器學習項目中,關註點變成了表示。也就是說,開發者通過添加和改善特征來調整模型。
將原始數據映射到特征
圖1左側表示來自輸入數據源的原始數據,右側表示特征矢量,也就是組成數據集中樣本的浮點值集。特種工程指的是將原始數據轉換為特征矢量。進行特種工程預計需要大量的時間。
機器學習模型通常期望樣本表示為實數矢量。這種矢量的構建方法如下:為每個字段衍生特征,然後將它們全部連接在一起。
圖1 程序工程將原始數據映射到機器學習特征
映射數據
機器學習模型根據浮點值進行訓練,因此整數和浮點原始數據不需要特殊編碼。正如圖2所示,將原始整數值6轉換為特征值6.0是沒有意義的:
圖2 將整數值映射到浮點值
映射字符串值
模型無法通過字符串值學習規律,因此您需要進行一些特征工作來講這些值轉換為數字形式:
- 首先,為您要表示的所有特征的字符串定義一個詞匯表,對於street_name特征,該詞匯表中將包含您知道的所有街道。
註意:所有其他街道都可以歸入一個籠統的“其他”類別,該類別稱為OOV(未收錄到詞匯表中)桶。
- 然後,使用該詞匯表創建一個獨熱編碼,用於將制定的字符串表示為一個二元矢量。在該矢量中:
- 只有一個元素設置為1.
- 其它所有元素均設置為0.
該矢量的長度等於詞匯表中的元素數。
圖3顯示了某條特定街道的獨熱編碼。在此二元矢量中,代表Shorebird Way的元素的值為1,而代表所有其他街道的元素的值為0。
圖3 通過獨熱編碼映射字符串
映射分類(枚舉)值
分類特征具有一組離散的可能值。例如,名為Lowland Countries的特征只包含三個可能的值:
{‘Netherlands‘, ‘Belgium‘, ‘Luxembourg‘}
您可能會將分類特征(如 Lowland Countries)編碼為枚舉類型或表示不同值的整數離散集。例如:
- 將荷蘭表示為0
- 將比利時表示為1
- 將盧森堡表示為2
不過,機器學習模型通常將每個分類特征表示為單獨的布爾值。例如,Lowland Countries 在模型中可以表示為 3 個單獨的布爾值特征:
- x1:是荷蘭嗎?
- x2:是比利時嗎?
- x3:是盧森堡嗎?
采用這種方法編碼還可以簡化某個值可能屬於多個分類的情況(例如,“與法國接壤”對於比利時和盧森堡來說都是 True)。
引用
表示 (Representation):特征工程
表示法--特征工程