目的
讓藏在資料中的資訊有機會被模型學習到,有兩個條件 :
- 特徵與目標變數之間存在關係
- 模型能夠捕捉這樣的關係
找出有價值的特徵
特徵有上百種,找出最有價值的先做,最有效率,可以採用多種方法來找出價值的特徵,Mutual information 是其中一種。
Mutual informant 代表知道一個量的資訊後,能在多大程度上降低對另一個量的不確定性。如果知道某個特徵,能增加多少對目標變數的把握。它好算好解讀,還能捕捉非線性關係,不過仍是單變量指標,不能捕捉與其他特徵的交互關係。
相似概念,如 Correlation、Information Gain..等
建立新特徵
先了解資料的定義與蒐集的狀況方式,再來可以發揮 Domain knowledge 憑經驗或直覺組合出新特徵。
幾個常見有效的方法 :
1. Ratio : 本質上多數模型都難以學習特徵之間的比例關係,所以可以自己建好再餵給模型
2. 數學公式 : 比例都學不好了,更不用提數學公式,最好轉換好再餵給模型。
3. 改變分布與標準化 : 很多特徵極端 skewed,適當透過 log 等方式分布轉換,再標準化統一尺度,方便模型學習。
- 有 0 用log(1+x)
- 有負 用 Yeo-Johnson
4. Counts : 簡單的計數也能提供額外資訊,因為有些特徵或因子可能成組出現,例如一個的預期壽命,可以 counts 「身上有幾種高風險因子」,例如 肥胖 + 抽菸 + 喝酒 = 3。
- Tree based 常有奇效。
5. 特徵拆解 : 現實世界很多數字、符號、標記是有規律的,例如電話國碼、車牌號碼、地址等,合在一起提供的資訊混雜,難以學習。例如身份證字號拆開可得到「地理 + 性別」
6. 特徵組合 : 出於領域知識或是直覺組成複合特徵,例如 : 品牌 + 類型,「toyota」+「房車」 & 「toyota」+ 「跑車」,前者較不保值,後者較保值。
7. 群組轉換 : 結合 grouping feature & aggregation function 來捕捉交互作用,例如某個縣市的平均收入 or 各種電影類型的播放頻率。頻率有時在異常偵測很有效果,因為異常通常罕見。
Advanced method :
1. Cluster : 很多資料複雜到整體難以學習,但先用非監督算法,將特徵空間中相近的資料點/樣本先分類在一起,賦予一個分群特徵值,能讓模型學習多個片段內部的pattern,而不是全面複雜的pattern
2. 降維:將原本較高維度的特徵空間,轉換或壓縮成較低維度的表示,在盡量保留重要資訊的同時,減少冗餘、噪音。例如 PCA 找出一組特徵的加權組合,把多個原始特徵轉換成新的主成分。
- 先標準化統一尺度再做
- 直接拿 components 當特徵:把 PC1、PC2 等加入模型。
- 觀察主成分啟發新特徵:根據 loading 設計 ratio、product、difference 等特徵。
- 降維:用少數主成分保留大部分資訊。
- 異常偵測:觀察資料在低變異方向上的不尋常變化。如果某筆資料在平常很少變動的方向上突然很突出,它可能就是異常值,例如 sensor A 跟 B 突然不同步。
- 降噪:保留主要訊號,丟掉可能是雜訊的成分。
- 去相關:把高度相關的原始特徵轉成彼此不相關的主成分。
3. Target Encoding : 直接把類別特徵值,轉換為該類別下由 target value 衍生之統計值。
- 善用領域知識,如果經驗上品牌很重要,但模型學不到,就可以試試
- 對未知類別值無法處理,可採全體平均
- 罕見類別不具代表性,可採平滑法,然後靠直覺挑合理的。
- 潛在的data leakage風險,因為用到了它在真實預測時不應該知道的 target 資訊

















