特徵類型及常見特徵工程手法
而特徵工程關鍵則在所謂領域知識。
特徵類型
- 數值型:有不同轉換方式,函數、條件式子皆可。(舉例:坪數、年齡、身高、體重)
- 類別型:一種類別對應一種數值分數。(舉例:行政區、性別、花種類、....)
- 二元特徵:僅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
留言
張貼留言