1. 程式人生 > >表示法--特征工程

表示法--特征工程

字符串 改善 工作 機器 技術 訓練 表示法 body logs

傳統編程的關註點是代碼。在機器學習項目中,關註點變成了表示。也就是說,開發者通過添加和改善特征來調整模型。


將原始數據映射到特征

圖1左側表示來自輸入數據源的原始數據,右側表示特征矢量,也就是組成數據集中樣本的浮點值集。特種工程指的是將原始數據轉換為特征矢量。進行特種工程預計需要大量的時間。

機器學習模型通常期望樣本表示為實數矢量。這種矢量的構建方法如下:為每個字段衍生特征,然後將它們全部連接在一起。

技術分享圖片

圖1 程序工程將原始數據映射到機器學習特征

映射數據

機器學習模型根據浮點值進行訓練,因此整數和浮點原始數據不需要特殊編碼。正如圖2所示,將原始整數值6轉換為特征值6.0是沒有意義的:

技術分享圖片

圖2 將整數值映射到浮點值

映射字符串值

模型無法通過字符串值學習規律,因此您需要進行一些特征工作來講這些值轉換為數字形式:

  1. 首先,為您要表示的所有特征的字符串定義一個詞匯表,對於street_name特征,該詞匯表中將包含您知道的所有街道。
註意:所有其他街道都可以歸入一個籠統的“其他”類別,該類別稱為OOV(未收錄到詞匯表中)桶。
  1. 然後,使用該詞匯表創建一個獨熱編碼,用於將制定的字符串表示為一個二元矢量。在該矢量中:
  • 只有一個元素設置為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):特征工程

表示法--特征工程