iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
AI/ ML & Data

征服機器學習的終極秘技系列 第 7

Day 7 - 提升模型性能的關鍵:特徵工程

  • 分享至 

  • xImage
  •  

收集完數據並完成數據清理並不代表模型就能夠很好地進行預測,有時候秘訣藏在如何處理和轉換數據。今天,我們將繼續我們的數據準備之旅,進入特徵工程的世界。

簡介

特徵工程是指從原始數據中提取特徵,創建新特徵,或轉換現有特徵,以提高機器學習模型的性能。這個過程結合了領域知識、經驗和技術技能。良好的特徵工程可以使簡單的模型勝過複雜的模型,相對地,糟糕的特徵工程可能讓即使是最先進的模型也難以達到理想的效果。

特徵工程的核心

特徵工程的核心在於識別和創建能夠最好地表示數據特性的特徵,以便模型能夠更準確地學習和預測。這一過程通常包括特徵創建、特徵轉換、特徵縮放、特徵選擇以及特徵提取等步驟。成功的特徵工程需要不斷的實驗和優化,並依賴於對數據和問題領域的深入理解。

特徵工程

特徵工程涵蓋了多個關鍵步驟,主要步驟包含:

  1. 特徵創建:特徵工程中最具創造性和潛力的步驟。它是基於原始數據或已有特徵去創造新的特徵,以增加模型的預測能力。這些新特徵可以基於領域知識、數學變換、或是其他數據轉換方法得到。
  • 從原始數據創建新特徵:通過數據轉換、組合或分解來創建新的特徵。例如,可以將日期細部拆分為年份、月份、星期幾或特定節日,或者將地理位置數據轉換為距離等。在應用中如在零售銷售預測中,可以創建「是否節假日」、「距離上一個節日的天數」等特徵。
  • 基於已有特徵創建新特徵:有時特徵組合交互會讓模型學習起來較有意義,例如,在預測房價時,我們可能有「面積」和「房間數」 兩個特徵。我們可以創建一個新的特徵「每房間面積 = 面積 / 房間數」,這可能比單獨的兩個特徵更具預測力。
  1. 特徵轉換:我們經常會遇到一些特徵的值是類別型。由於 ML 模型看不懂也無法直接處理非數字類型的數據,因此會需要做進一步處理,稱之為編碼,而主要編碼又分兩種:
  • 標籤編碼 (Label Encoding):將類別型數據轉換為數字標籤 0,1,2,...。這種方法適用於有序的類別數據(例如,「小」, 「中」, 「大」 尺寸)。但對於無序的數據類別,標籤編碼可能引入虛假的數值關係。例如,模型可能會誤以為標籤 1 比標籤 0 大而造成不必要的權重。(小中大可以比較)
  • 獨熱編碼 (One-Hot Encoding):將每個類別轉換為一個二元向量。例如,對於 「顏色」 特徵,包含 「Red」, 「Green」, 「Blue」 三個類別,可以分別編碼為 [1,0,0], [0,1,0], [0,0,1]。像這種沒有排序的數據(紅色無法與綠色比較)就適合用此編碼方式。但是對於類別數量多的特徵,會導致高維度數據,增加計算複雜度和存儲需求。
  1. 特徵縮放:在資料探勘階段,我們觀察到有些特徵分布範圍太廣泛。基於這些觀察,我們可能需要進行特徵縮放,目的是將不同尺度的特徵調整到相似的範圍。這樣做不僅有助於提高模型的性能,還能減少某些算法對特徵尺度的敏感性。常見方法包含:
  • 標準化(Standardization):將特徵轉換為均值為 0,標準差為 1 的分布。適用於數據近似正態分布的情況。標準化主要用於確保每個特徵在模型中對預測結果的貢獻相當,特別是當特徵的量綱不同時。舉例來說,年齡的範圍可能是 0 到 100,而收入的範圍可能是 0 到 1,000,000。如果不進行標準化,收入特徵會在模型中佔據過大的權重,導致偏差。通過標準化,我們可以將這兩個特徵調整到相似的尺度,使模型能夠公平地評估它們的重要性。
  • 歸一化(Normalization):將特徵縮放到特定範圍,通常是 [0,1]。適用於數據分布不呈正態分布的情況。歸一化主要用於當我們希望所有特徵都位於相同的範圍內時,例如在深度學習中,這有助於加速模型收斂並提高穩定性。這對於數據分布差異較大的特徵尤為重要,因為可以減少異常值的影響。
  • 最小最大縮放 (Min-Max Scaling):將數據縮放到特定範圍內,通常是 [min,max]。這種方法特別適合於需要保持數據範圍的上下限且不在意特徵間差異的情況。最小最大縮放能保證所有特徵在同一範圍內(如[min,max]),特別是對於需要對輸出結果進行解釋的情況下非常有用。
  1. 特徵選擇:從已有特徵中挑選出對模型預測效果最有幫助的特徵。這個過程不僅可以減少模型的計算複雜度,還能提高模型的解釋性和性能。常見的方法包括:
  • 濾波法(Filtering):根據特徵的統計特性評估每個特徵與目標變量之間相關性的方法並進行篩選,如相關係數、卡方檢驗等。這種方法獨立於任何特定的學習算法,通常用作特徵選擇的初步篩選步驟。
    • a) Pearson 係數
      計算每個特徵與目標變量的 Pearson 相關係數。 
      
      根據相關係數的絕對值對特徵進行排序。 
      
      選擇相關係數絕對值大於某個閾值(如0.5)的特徵,或選擇前 N 個相關性最強的特徵。
      
    • b) 卡方檢驗(Chi-squared Test) 是一種衡量類別特徵與類別目標變量之間依賴性的統計方法。這在處理類別數據時特別有用,例如在預測疾病發生或其他二元類別問題中。卡方檢驗的結果通常用於決定哪些類別特徵應該保留或剔除,作為特徵選擇的一部分。
      將要進行檢驗的類別特徵與目標變量建立二維列聯表 (Contingency Table),顯示各個類別的組合頻率。 
      
      根據列聯表中的行、列總和以及整體總和,計算每個單元格的期望頻率。 
      
      使用實際觀察到的頻率和期望頻率計算卡方統計量。這一統計量衡量了觀察到的頻率與期望頻率之間的差異。 
      
      確定所選取的顯著性水準(通常為0.05或0.01)以及自由度。根據這些值查找卡方分佈表,以確定卡方統計量是否達到統計上的顯著水準。 
      
      將計算得到的卡方統計量與臨界值進行比較,以判斷類別特徵與目標變量之間是否存在統計上顯著的相關性並進行特徵選擇。
      
  • 包裝法(Wrapper Methods):使用特定的機器學習模型進行特徵選擇,通過不同的特徵子集來訓練模型,並比較模型性能來選擇最佳特徵子集。
    • a) 遞歸特徵消除(Recursive Feature Elimination, RFE):從全部特徵開始,逐步移除對模型性能影響最小的特徵。
      訓練模型:使用所有特徵來訓練模型。 
      
      計算特徵重要性:根據模型計算每個特徵的重要性分數。 
      
      移除最不重要的特徵:根據重要性分數移除得分最低的特徵。 
      
      重複步驟1-3:反覆進行上述步驟,直到達到預定的特徵數量。 
      
    • b) 前向特徵選擇(Forward Feature Selection):從空集開始,逐步添加最能提高模型性能的特徵。
      初始化空特徵集:開始時特徵集為空。 
      
      評估每個未選擇特徵:對每個未選擇的特徵,評估其添加到當前特徵集後的模型性能。 
      
      選擇最佳特徵:選擇能最大程度提高模型性能的特徵加入特徵集。 
      
      重複步驟2-3:反覆進行上述步驟,直到達到預定的特徵數量或模型性能不再提升。 
      
  • 嵌入法(Embedded Methods):在模型訓練過程中自動選擇特徵,是一種將特徵選擇嵌入到模型訓練過程中的方法。常見的嵌入法包括 Lasso 回歸、決策樹 等。這些方法在訓練過程中會自動調整特徵的重要性並進行選擇。
    • Lasso 回歸:Lasso 回歸是一種專門用來挑選重要特徵的線性模型。它在計算時加入了一個特殊的數學項,稱做 L1 正則化,這會讓一些不重要的特徵權重變為零,從而達到特徵選擇的目的。
      構建Lasso回歸模型:假設我們要預測房價,模型會把所有影響房價的因素考慮進來,比如房子大小、地點、年齡等。 
      
      調整參數:模型會自動調整一個叫 𝜆 的參數,這個參數決定了哪些特徵會被選中。 
      
      訓練模型:模型開始學習,找到哪些特徵對預測房價最重要,哪些不重要。 
      
      特徵選擇:訓練完後,不重要的特徵會被剔除,只保留對房價預測最有幫助的特徵。 
      
    • 隨機森林特徵重要性(Random Forest Feature Importance):隨機森林是一種由多棵決策樹組成的模型。每棵樹在預測時,會告訴我們哪些特徵對預測結果貢獻最大,這樣我們就能知道哪些特徵最重要。
      構建隨機森林模型:假設我們要預測學生的成績,模型會把學生的學習時間、上課情況、家庭背景等因素都考慮進來。 
      
      計算特徵重要性:模型會計算每個特徵對預測成績的貢獻,比如發現學習時間和上課情況最重要。 
      
      選擇重要特徵:只保留那些對預測成績最重要的特徵。
      
  1. 特徵提取:從原始數據中抽取有意義的特徵,以提高模型的性能和效果。特徵提取在面對高維度數據時尤其重要。舉例來說,假設你的數據集有 140 個特徵,這樣的高維度數據往往難以直接分析和理解。因為人們無法逐一檢視這麼多特徵,也缺乏背景知識來判斷哪些特徵對於解決問題特別重要,所以特徵提取變得至關重要,以下是幾種常見的特徵提取方法:
  • 主成分分析(Principal Component Analysis, PCA):PCA 的核心思想是將高維度的數據轉換到低維度的空間,同時保留數據中最重要的資訊。PCA 在需要降低計算成本和消除多重共線性時特別有用。想像你有一大堆照片,每張照片都有上千個像素。PCA 就像是一個神奇的壓縮器,它能把這些照片壓縮成只有幾十個「超級像素」,但這些「超級像素」卻包含了原始照片中最關鍵的資訊。
原理: 
PCA首先找出數據中變化最大的方向(主成分)。

然後將數據投影到這些主成分上,形成新的特徵。

這些新特徵是原始特徵的線性組合,且彼此正交(互不相關)。
  • 線性判別分析(Linear Discriminant Analysis, LDA):LDA 與 PCA 類似,但它通常應用於監督學習中的特徵提取,尤其是在希望找到最能區分不同類別的特徵組合時非常有效。LDA 不僅可以降低數據的維度,還可以同時優化分類問題中的特徵,以最大程度上區分不同類別之間的差異。想像你有一袋混合了紅豆和綠豆的豆子,LDA 就像是一個神奇的分類器,它能找到一個最佳的角度去看這袋豆子,讓紅豆和綠豆的區別變得最明顯。
原理:
LDA尋找能最大化不同類別間距離,同時最小化同一類別內部距離的方向。

將原始數據投影到這個方向上,形成新的特徵。

結論

在實踐中,通過適當的特徵工程,我們可以使模型更準確地捕捉數據中的模式和趨勢,從而提高整個機器學習系統的效率和效果。未來章節中,我們將繼續探索模型建構及評估的相關步驟,這將有助於我們完整地理解和應用機器學習於現實世界的各種挑戰和解決方案。


上一篇
Day 6 - 打造高品質資料集:數據清理
下一篇
Day 8 - 機器學習中的數據切分
系列文
征服機器學習的終極秘技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言