特徵類型及常見特徵工程手法

https://www.geeksforgeeks.org/machine-learning/what-is-feature-engineering/
在機器學習(深度學習)中關鍵絕大部分在特徵工程
而特徵工程關鍵則在所謂領域知識

特徵類型
  • 數值型:有不同轉換方式,函數、條件式子皆可。(舉例:坪數、年齡、身高、體重)
  • 類別型:一種類別對應一種數值分數。(舉例:行政區、性別、花種類、....)
  • 二元特徵:僅True(1)/False(0)兩種數值特徵,可當作類別型或數值型
  • 排序型特徵:
    • 介於數值型與類別型特徵之間,類似考試的百分等級(0~99)。
    • 有名次、大小關係,也可能並非連續數字。
    • 通常當作數值型特徵處裡,若作為類別型特徵就會失去可排序特性。
  • 時間型特徵:
    • 若取總秒數可轉為數值型特徵,但會失去週期特徵(月、季、星期)
    • 直接用本身可做為類別型特徵,但會失去排序依據資訊,類別數量也過大無意義。


常見特徵工程手法
特徵工程是將現實(可能非數值)資料轉換為對應數值型分數的過程
  • 捨棄或調整離群值:
    • 若只有少數幾筆資料和其他數值差異極大,則無法標準化處理。
    • 一種做法是直接移除,會挖一個洞。(若離群值數量真的很少的話建議用此做法)
    • 一種做法是將離群值進行調整
  • 類別型資料編碼
    • 標籤編碼(Label Encoding):
      類似編列流水號概念,依序將新出現的類別編新代碼。
      已出現類別編上已使用的代碼,缺點是該數值大小順序皆無意義。
      假設我們有一個「顏色」變數,將 red 指定為 0 、 green 為 1 、 blue 為 2 。

    • 獨熱編碼(One Hot Encoding):
      為改良數字大小無意義問題,將不同類別分別獨立為一欄。
      缺點是當類別數量越多時,會需要較大記憶空間與計算耗時成本。
      假設我們有一個「顏色」變數,其具有三個標籤 red 、 blue 和 green 。為了讓機器學習算法能夠處理,這些標籤都必須轉換為數值形式。透過創建三個新欄位(每個欄位對應一個標籤)來實現,其中對應標籤的欄位使用 1 ,其他顏色欄位則使用 0 。
  • 時間特徵分解:時間欄位該怎麼做處理、劃分呢(週期循環特徵)
    • 最直覺方法就是依照原始意義來分欄處理,或加上第幾週or星期幾。
    • 但是某些欄位(例如:時分秒)和目標值關係極低,是否有更有意義的特徵呢?
    • 可透過週其概念來合成一些重要特徵
    • 聯想有哪幾種時間週期,可串聯到哪些可做特徵的性質?像是常見的風向、季節、時間、日期(月內日期、年內日期等)都屬於循環變數。
    • 週期循環特徵(Cyclical Features)是指資料會遵循某種週期,重複循環,常用於像是銷售週期、農產品收成、交期推估等等任務有關。
    • 年週期(跟春夏秋冬季節有關、季報、年報)、月週期(和算薪水、繳費有關)、周週期(和周休、消費有關)、日週期(和生理時鐘相關,捨時候收看yt,聽kkbox)
    • 任何現實生活中具有循環性(如風向)、會重複出現(如季節),或者具有重要分母(如月內天數或年內天數)的變數都可以視為循環變數。
    • The Cyclical Formula:可將變數轉化為一組循環特徵,透過正弦、餘弦轉換來表達循環模式。


  • 特徵組合(交叉)(Feature Crosses):
    • 白話來講就是需要把特定幾個特徵都給AI模型一起看,才會降低判斷失誤可能性。
    • 把原本分開看的資訊,組合起來一起判斷。
    • 比方兩個句子丟進去問AI語言模型
      「有沒有下雨?」
      「S2:是不是上班時間?」
      應該直接問「是不是下雨的上班時間?」
    • 又或者Uber里程計算車費需用起始經緯度(X1,Y1)跟終點經緯度(X2,Y2)共有四個欄位透過平面座標距離公式推算,這也是一種組合特徵案例。
    • 通常還需要去熟知某些特徵底層特性、涵義,來加以評估是否能用於組合。
    • 像是經緯度的每一度間隔,事實上不是一樣長的
      緯度一度約等於 364,000 英尺(69 英里)
      經度一度等於 288,200 英尺(54.6 英里)
  • 去除偏態(大部分要搭配圖表分布查看要採用何種手法):
    • 常用手法:方根去偏、對數去偏、分布去偏(boxcox)
    • 方根去偏(sqrt):將數值減去最小值後開根號,可應用的時機在最大值有明確上限時候。例如:班級分數調整,開根號除以10,常用在班級分數調整手法。
    • 整班考試成績分布愈集中在中央,似乎更理想。若偏向靠左(普遍低分不及格)所謂感覺更合理,換言之,越接近常態分布(左右對稱,集中於中央),平均會更具代表性。
    • 平均值要更具代表性,這可用薪資分布的平均薪資來探討幸福程度。通常拿平均薪資探討常令人詬病的問題中、高薪群的長尾分布會造成平均值不具代表性。除了常見取中位數、眾數,也會採用對數去偏之後的新分布,平均值就比較具代表性。
    • 對數去偏
      基本上是使用自然對數去除偏態,常用於計數、價格這類非負且可能為0的欄位。
    • 因此為了把0對應到0,需要先加1之後再去取log。
    • 當我們想還原時則用指數函數(exponential),先取指數後再減1。
    • 分布去偏(boxcox)
      採用boxcox轉換函數,當函數的lambda參數為0時候等同於log函數,lambda為0.5時等同於開根號,藉此更靈活做數值轉換,須注意Y值輸入必須要為非0正數。
  • 填補缺失值:
    • 原始資料本身就有空洞,填補該欄位缺失值的對應領域知識。
      例如:停車位有無、房間數、屋齡、行政區(縣市)
    • 常見手法:填補統計值、填補指定值、填補預測值
    • 比方停車位若原始資料本身為空,可能就填False。
    • 房間數若其他是1~3,然後大部分缺失都是空白,也許就是0。
    • 屋齡則可能拿屋齡總平均值或眾數填補,因為屋齡不可能為空。
    • 行政區假設大部分欄位南港區、大安區...,因為行政區不應該為空,有可能為漏填,故可先取行政區眾數或其他統計值對應類別,其中眾數為南港區No1就先回填它。
    • 填補統計值:
      • 填補平均值:適用於數值型欄位,前提是偏態不明顯。
      • 填補中位數:適用於數值型欄位,前提是偏態要明顯。
      • 填補眾數:適用於類別型欄位。
    • 填補指定值:前提是需要對該欄位domain know how要有基本認知理解。
      • 填補0,空缺本身就有0的含意
      • 填補不可能出現的數值:適用於類別型欄位,但不適合眾數時機。
    • 填補預測值:速度會較慢但更精確,也就是從其他資料欄位學得推論填補知識。
      • 若填補範圍廣,且屬於重要特徵欄位就可用此方式。
      • 須提防overfitting,有可能造成退化其他特徵組合。
  • 標準化:以合理方式平衡特徵間的影響力。
    • 常用手法是標準化(Standard Scaler)跟最小最大化(MinMax Scaler)。
    • 標準化(Standard Scaler):假定數值屬於常態分布,適合此方法來平衡特徵。
      透過將每個X特徵值減去平均值,再將數值除以該特徵的標準差來標準化特徵。
      經標準化縮放處理後,資料中心值被設為 0(平均值 = 0)。
      資料具有統一單位變異數(標準差 = 1)。
    • 最小最大化(MinMax Scaler):假定數值為均勻分布,適合此方法平衡特徵。
      將特徵值減去最小值,再除以極差(最大值與最小值之間的差值)。
      按比例將該列中的每個值轉換到[0,1]的範圍內,通常為標準化手法首選手法,因為會保留資料集的形狀(不失真)。











參考:
The Data Scientist’s Guide to Scaling: Standard, MinMax & Robust Methods
Feature Engineering (Feature Improvements – Scaling)
Categorical Encoding using One-Hot Encoding
Feature Engineering – Cyclical Variables
Encoding cyclical continuous features - 24-hour time
循環的特徴量(Cyclical Features)とは?
https://note.com/united_code/n/nfd0d96cc35a5
T021 · One-Hot Encoding

留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

外貿Payment Term 付款條件(方式)常見的英文縮寫與定義

鼎新ERP_會計系統_總帳管理_財務參數設定_傳票處理