機器學習筆記——特征工程

大家好,這里是好評筆記,公主號:Goodnote,專欄文章私信限時Free。本筆記介紹機器學習中常見的特征工程方法、正則化方法和簡要介紹強化學習。

在這里插入圖片描述

文章目錄

  • 特征工程(Fzeature Engineering)
    • 1. 特征提取(Feature Extraction)
      • 手工特征提取(Manual Feature Extraction):
      • 自動特征提取(Automated Feature Extraction):
    • 2. 特征選擇(Feature Selection)
      • 1. 過濾法(Filter Methods)
      • 2. 包裹法(Wrapper Methods)
      • 3. 嵌入法(Embedded Methods)
      • 4. 其他方法
      • 5. 選擇方法的應用場景
      • 總結
    • 3. 特征構造(Feature Construction)
    • 4. 特征縮放
      • 4.1 歸一化(Normalization)
      • 4.2 標準化(Standardization)
      • BN、LN、IN、GN
  • 熱門專欄
    • 機器學習
    • 深度學習

特征工程(Fzeature Engineering)

1. 特征提取(Feature Extraction)

特征提取:從原始數據提取能夠有效表征數據特征的過程。它將原始數據轉換為適合模型輸入的特征表示。

手工特征提取(Manual Feature Extraction):

  • 文本數據
    • 詞袋模型(Bag of Words):將文本數據轉化為詞頻向量,每個單詞是一個維度,值為該單詞在文本中出現的次數。
    • TF-IDF:為詞袋模型加入詞頻-逆文檔頻率(Term Frequency-Inverse Document Frequency),降低常見詞語的權重提升重要詞語的權重
    • N-gram:將連續的 N 個詞作為一個特征,捕捉詞語間的局部依賴關系
  • 圖像數據
    • 邊緣檢測:使用 Sobel 算子、Canny 邊緣檢測等方法提取圖像邊緣信息。
    • SIFT(尺度不變特征變換):提取圖像的關鍵點和局部特征,具有尺度不變性和旋轉不變性。
    • HOG(方向梯度直方圖):將圖像分塊,并統計每塊的梯度方向直方圖,用于描述局部形狀和紋理特征。
  • 時間序列數據
    • 移動平均:對時間序列進行平滑,消除短期波動。
    • 傅里葉變換:將時間域的信號轉化為頻域信號,分析數據的周期性。
    • 窗口函數:將時間序列分為若干窗口,分別計算每個窗口的統計特征,如均值、方差等。

自動特征提取(Automated Feature Extraction):

  • 使用卷積神經網絡(CNN):從圖像中自動提取高級特征,如邊緣、紋理、形狀等。
  • 使用循環神經網絡(RNN):處理時間序列數據,捕捉長時間依賴關系。
  • 使用BERT(Transformer):通過自監督學習自動提取上下文敏感的文本特征。
  • 自動編碼器(Autoencoder):使用無監督學習從數據中提取低維特征表示,捕捉數據的潛在結構和模式。

2. 特征選擇(Feature Selection)

特征選擇(Feature Selection)是指從原始特征集中挑選出與目標任務最相關的特征,以提高模型的性能、減少訓練時間以及降低過擬合的風險。特征選擇方法主要分為三類:過濾法(Filter Methods)包裹法(Wrapper Methods)嵌入法(Embedded Methods)

1. 過濾法(Filter Methods)

  • 原理:獨立于模型,訓練前首先根據某些統計指標對特征進行評分,然后選擇得分較高的特征。這種方法不依賴于特定的學習算法,只是基于數據本身的特性進行篩選
  • 常見方法
    • 方差選擇法剔除方差較小的特征,認為方差小的特征對目標值影響小。
    • 皮爾森相關系數:計算特征與目標變量之間的線性相關性,選擇線性相關性較高的特征
    • 互信息:衡量特征與目標變量之間的信息增益,選擇信息量大的特征。
  • 優點計算效率高,易于實現
  • 缺點:未考慮特征之間的相互作用,可能遺漏組合特征的重要性。

2. 包裹法(Wrapper Methods)

  • 原理:在訓練中,通過訓練模型評估特征子集的表現,使用搜索策略找到對目標任務最優的特征組合。包裹法直接根據模型的性能進行選擇,通常通過交叉驗證來評估特征子集的好壞。
  • 常見方法
    • 前向選擇(Forward Selection):從空集開始逐步添加對模型性能提升最大的特征。
    • 后向消除(Backward Elimination):從所有特征開始逐步移除對模型性能影響最小的特征。
  • 優點:能夠考慮特征之間的相互作用,適合復雜的特征選擇任務。
  • 缺點:計算開銷大,尤其是當特征數目較多時,訓練多個模型的過程會非常耗時。

3. 嵌入法(Embedded Methods)

  • 原理:嵌入法結合了過濾法和包裹法的優點,直接在模型訓練過程自動選擇特征。它通過學習算法自動選擇最重要的特征,使特征選擇與模型訓練同時進行。
  • 常見方法
    • L1正則化(Lasso回歸):通過在損失函數中添加L1正則化項,使**部分特征的系數變為零,從而進行特征選擇。
    • 決策樹及其變體(如隨機森林、XGBoost):樹模型的特征重要性得分可以用于選擇重要特征。
    • Elastic Net:結合L1和L2正則化的優勢,在保持模型稀疏性的同時,減少了多重共線性的影響,進行特征選擇和模型優化。
  • 優點:特征選擇與模型訓練同時完成,考慮特征間的相互作用,效率較高。
  • 缺點:需要根據特定算法來進行選擇,不具有模型無關性。

4. 其他方法

  • PCA(主成分分析):雖然PCA是降維方法,但在某些場景下可以間接用于特征選擇。通過對數據進行線性變換,將多個原始特征組合成少數幾個主成分。
  • LDA(線性判別分析):常用于分類問題的降維,也可以視作一種特征選擇方法。
  • 基于穩定性選擇(Stability Selection):通過在多次子樣本集上重復訓練模型,并選擇那些在多個子集上都表現重要的特征,從而增強選擇的魯棒性。

5. 選擇方法的應用場景

  • 過濾法適用于快速預篩選大量特征的情況,計算效率高,但可能丟失特征之間的組合信息。
  • 包裹法在特征數不多時(例如幾十個或上百個)效果較好,能找到最佳的特征組合,但計算開銷較大。
  • 嵌入法通常適用于大多數場景,尤其是使用線性模型(Lasso)或樹模型時,既能訓練模型又能自動選擇特征。

總結

下面是特征選擇方法的總結表格,保留了原有的描述信息:

方法類別原理常見方法優點缺點適用場景
過濾法(Filter Methods)獨立于模型,基于統計指標對特征評分,并選擇得分較高的特征。- 方差選擇法:剔除方差較小的特征
- 皮爾森相關系數:選擇線性相關性高的特征
- 互信息:選擇信息增益大的特征
計算效率高,易于實現未考慮特征間相互作用,可能遺漏重要的組合特征快速預篩選大量特征的情況,適合初步篩選特征
包裹法(Wrapper Methods)通過訓練模型評估特征子集表現,使用搜索策略找到最優特征組合。- 遞歸特征消除(RFE):刪除不重要的特征
- 前向選擇:逐步添加性能提升最大的特征
- 后向消除:逐步移除對模型性能影響小的特征
能考慮特征間的相互作用,適合復雜任務計算開銷大,訓練多個模型耗時長特征數較少(幾十到上百個),適合需要精確特征選擇的任務
嵌入法(Embedded Methods)結合過濾法和包裹法的優點,在模型訓練過程中選擇特征。- L1正則化(Lasso回歸):通過L1正則化項使部分特征系數為零
- 決策樹及其變體(隨機森林、XGBoost):根據特征重要性評分選擇特征
- Elastic Net:結合L1和L2正則化
特征選擇與模型訓練同時進行,考慮特征間相互作用,效率高需要根據特定算法選擇,不具有模型無關性適合使用線性模型(如Lasso)或樹模型的場景,大多數現代復雜模型都適用
其他方法PCA、LDA等方法雖然是降維方法,但可間接用于特征選擇。- PCA:通過線性變換將多個特征組合成少數幾個主成分
- LDA:常用于分類問題的降維方法
- 穩定性選擇(Stability Selection):通過在子樣本集上選擇表現穩定的特征
能夠進行有效降維,有時可以間接用于特征選擇降維后特征解釋性較弱數據維度較高的情況下,可以用作降維手段,間接提高特征選擇效果
  • 過濾法:速度快,適合預處理大量特征,但可能丟失特征間的組合信息。
  • 包裹法:精度高,適合特征數較少且精度要求高的任務,但計算成本大。
  • 嵌入法性能和效率兼顧,適合大多數場景,尤其是使用線性模型(Lasso)或樹模型時
  • 其他方法:如PCA、LDA等可以作為降維手段,間接用于特征選擇,適合高維數據的場景。

選擇合適的特征選擇方法能夠有效提升模型性能,降低訓練時間,避免過擬合。

3. 特征構造(Feature Construction)

特征構造是通過對已有特征進行組合、變換或生成新特征來增強模型表達能力的過程。它可以將隱含的關系顯式化,提高模型的擬合能力。

類別主要方法適用場景
數值特征構造變換、分箱處理數值特征、非線性關系
類別特征構造編碼、組合處理類別特征、捕捉特征間關系
時間特征構造時間提取、周期特征、時間差時間序列數據、周期性特征
文本特征構造詞袋、TF-IDF、詞向量、N-grams文本數據、自然語言處理
特征交互與組合特征交互、多項式特征捕捉特征間的復雜關系,適合增強線性模型的非線性擬合能力
聚合與統計特征聚合、統計、窗口聚合大規模表格數據、時間序列數據
生成模型特征降維、聚類、自編碼器生成特征復雜高維數據、需要特征壓縮的場景
特征選擇與構造結合篩選后構造、嵌入法生成特征大規模數據集、特征選擇與構造結合的場景

特征構造是一項創造性和技術性并重的任務,需要結合領域知識、數據分析技巧以及機器學習經驗來挖掘出更有利于模型訓練的特征,從而提升模型的表現。

4. 特征縮放

  1. 歸一化:通常是指將數據縮放到一個特定的范圍,如[0, 1]。目的是讓不同特征的值處于相同的尺度上,【同時也有消除不同特征量綱的影響的作用】大范圍的特征值可能會導致梯度更新過慢或不穩定
  2. 標準化:是指對數據進行均值0、標準差1的變換,更關注數據的分布形態。目的是消除不同特征的物理單位和量綱(如重量、溫度、距離等)差異,同時保持特征間的相對比例關系。

4.1 歸一化(Normalization)

歸一化特征值縮放到 [0, 1] 之間,常用于以下算法中:

  • K 近鄰算法(KNN):歸一化后減少不同特征尺度對距離計算的影響。能夠避免特征量綱不同帶來的距離計算問題。【與數據的分布無關】
  • 神經網絡:將輸入特征值縮放至 [0, 1],有助于加快模型收斂。
  • 聚類算法(如 K-Means):歸一化避免特征尺度不同造成聚類結果偏差。

Min - Max歸一化:將特征縮放到指定范圍(通常為[0, 1]),公式為:
x ′ = x ? x min ? x max ? ? x min ? x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}} x=xmax??xmin?x?xmin??

4.2 標準化(Standardization)

標準化特征值轉化為均值為 0、方差為 1 的標準正態分布,常用于以下算法中:

  • 線性回歸:標準化能夠提升參數解釋性,并避免部分特征影響過大。
  • 邏輯回歸:標準化能夠使梯度下降更快地收斂。
  • 支持向量機(SVM):標準化后距離計算更穩定。
  • 主成分分析(PCA):標準化防止某些方差大的特征主導主成分的計算。

Z - score標準化: 將數據轉換為均值為0,方差為1的標準正態分布,公式為:
x ′ = x ? μ σ x' = \frac{x - \mu}{\sigma} x=σx?μ?

BN、LN、IN、GN

以下是歸一化方法對比總結,其中加入了每種歸一化方法的原理:

歸一化方法原理適用場景優點缺點
批歸一化(BN)一個批量中的所有樣本的同一通道進行歸一化,基于批次的均值和方差調整卷積網絡、全連接網絡加快收斂,正則化,適應大批量訓練對小批次敏感,序列任務效果差
層歸一化(LN)單個樣本的所有通道進行歸一化,不依賴批量,計算層內均值和方差RNN、Transformer、序列任務適應小批次訓練,不依賴批次大小計算量較大,收斂可能稍慢
實例歸一化(IN)單張圖像的每個通道分別獨立進行歸一化,計算每個樣本的通道內均值和方差圖像生成、風格遷移對風格敏感,適用于生成任務不適合分類任務,無法捕捉全局信息
組歸一化(GN)單個樣本的特征通道分組,對每一組進行歸一化,計算組內均值和方差小批次訓練,卷積網絡適合小批次,不依賴批次大小對卷積核大小和通道數較敏感
權重歸一化(WN)對神經元的權重向量進行歸一化,將方向和長度分開重新參數化卷積網絡、全連接網絡、生成模型加速收斂,提高穩定性效果不一定顯著,某些任務中不如BN

注意,雖然他們是叫做歸一化(批歸一化、層歸一化、實例歸一化),是將多個輸入特征歸一化為均值為 0、方差為 1 的分布,使得網絡的各層輸入保持在較為穩定的范圍內。本質上是進行標準化。再進行引入兩個可學習參數 γ 和 𝛽,分別表示縮放和平移操作。

BN、LN、IN、GN 等歸一化方法都包含了標準化的步驟,即它們都會將激活值調整為均值為 0、方差為 1 的分布,關鍵區別在于這些方法在不同的范圍內計算均值和方差,以適應不同的訓練場景和模型結構:

注意: 雖然它們方法名字中帶“歸一化”(批歸一化、層歸一化、實例歸一化、組歸一化),但它們的核心操作本質上是標準化,將多個輸入特征歸一化為均值為 0、方差為 1 的分布,使得網絡的各層輸入保持在較為穩定的范圍內。本質上是進行標準化。再進行引入兩個可學習參數 γ 和 𝛽,分別表示縮放和平移操作。

熱門專欄

機器學習

機器學習筆記合集

深度學習

深度學習筆記合集

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80988.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80988.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在 Ubuntu 20.04.6 LTS 中將 SCons 從 3.1.2 升級到 4.9.1

在 Ubuntu 20.04.6 LTS 中將 SCons 從 3.1.2 升級到 4.9.1,可以通過以下步驟完成: 方法 1:使用 pip 安裝(推薦) 步驟 1:卸載舊版本 SCons # 如果通過 apt 安裝的舊版本,先卸載 sudo apt remov…

LeetCode熱題100--234.回文鏈表--簡單

1. 題目 給你一個單鏈表的頭節點 head ,請你判斷該鏈表是否為回文鏈表。如果是,返回 true ;否則,返回 false 。 示例 1: 輸入:head [1,2,2,1] 輸出:true 示例 2: 輸入&#xf…

【markdown】介紹如何在markdown中繪制流程圖

在 Markdown 中編寫流程圖主要通過 ??Mermaid 語法??實現(多數平臺如 GitHub、VS Code、Typora 已原生支持)。以下是詳細方法: 1. 基礎流程圖?? 語法結構 用 mermaid 包裹代碼塊,指定方向后定義節點和連接線&#xff1a…

Java中使用自定義序列化器:自動添加View字段的實現與應用

Java 中 BigDecimal 序列化器:自動添加 View 返回字段的實現與應用 在 Java 開發過程中,數據的序列化與反序列化是非常重要的環節。當我們處理數值類型數據,特別是BigDecimal類型時,有時需要在序列化輸出中添加額外的視圖字段,以滿足前端展示或者特定業務需求。本文將通過…

Java類一文分解:JavaBean,工具類,測試類的深度剖析

解鎖Java類的神秘面紗:從JavaBean到測試類的深度剖析 前言一、JavaBean 類:數據的守護者(一)JavaBean 類是什么(二)JavaBean 類的特征(三)JavaBean 類的使用場景(四&…

機器學習-- 線性回歸、邏輯回歸

線性回歸 線性回歸是一種統計方法,用于發現變量之間的關系。在機器學習背景下,線性回歸可找出特征(Feature)與標簽(Lable)之間的關系。 例如,假設我們想要根據汽車的重量預測汽車的每加侖汽油行駛里程(mpg),并且我們有以下數據集: 線性回歸方程 Linear regressi…

Lua再學習

因為實習的項目用到了Lua,所以再來深入學習一下 函數 函數的的多返回值 Lua中的函數可以實現多返回值,實現方法是再return后列出要返回的值的列表,返回值也可以通過變量接收到,變量不夠也不會影響接收對應位置的返回值 Lua中傳…

TCP協議十大核心特性深度解析:構建可靠傳輸的基石

TCP(傳輸控制協議)作為互聯網的"交通指揮官",承載著全球80%以上的網絡流量。本文將深入解析TCP協議的十大核心特性,通過原理剖析、流程圖解和實戰案例,揭示其如何實現高效可靠的數據傳輸。 一、面向連接的可…

基于 Spring Boot 瑞吉外賣系統開發(十三)

基于 Spring Boot 瑞吉外賣系統開發(十三) 查詢套餐 在查詢套餐信息時包含套餐的分類名,分類名稱在category表中,因此這里需要進行兩表關聯查詢。 自定義SQL如下: select s.* ,c.name as category_name from setmeal…

華為IP(6)

VLAN聚合 VLAN聚合產生的技術背景 在一般是三層交換機中,通常采用一個VLAN接口的方式實現廣播域之間的互通,這在某些情況下導致了IP地址的浪費 因為一個VLAN對應的子網中,子網號、子網廣播地址、子網網關地址不能用作VLAN內的主機IP地址&a…

深度解析IP靜態的工作原理,IP靜態的應用場景又哪些?

一、什么是IP靜態? 當我們談到“IP靜態”時,大家可能首先想到的是與“動態IP”相對的概念。確實如此,靜態IP是一種固定分配的IP地址,也就是說,在特定時間內,分配給你的IP地址不會有所更改——無論你完成多…

docker(四)使用篇一:docker 鏡像倉庫

前文我們已經介紹了 docker 并安裝了 docker,下面我們將正式步入使用環節,本章是第一個使用教學:docker 鏡像倉庫。 一、什么是鏡像倉庫 所謂鏡像倉庫,其實就是負責存儲、管理和分發鏡像的倉庫,并且建立了倉庫的索引…

單片機開發軟件

目錄 純編碼 vscode Ardunio Keil 1. 集成化開發環境(IDE) 2. 多架構芯片支持 3. 高效的代碼生成與優化 4. 強大的調試與仿真功能 5. 豐富的庫函數與生態系統 6. 教育與企業級適用性 典型應用場景 半編碼半圖形化 STM32CUBEIED 1. 圖形化配置…

【虛幻引擎】UE5獨立游戲開發全流程(商業級架構)

本套課程我將會講解一下知識 1.虛幻引擎的常用功能節點、模塊包含但不限于動畫模塊、UI模塊、AI模塊、碰撞模塊、傷害模塊、背包模塊、準心模塊、武器模塊、可拾取物品模塊、死亡等模塊。 2.整個游戲的設計思路(游戲架構),本套教程講解了如…

ABP-Book Store Application中文講解 - Part 2: The Book List Page

本章用于介紹如何創建Book List Page。 TBD 1. 匯總 ABP-Book Store Application中文講解-匯總-CSDN博客 2. 前一章 ABP-Book Store Application中文講解 - Part 1: Creating the Server Side 項目之間的引用關系。 目錄 1. 多語言配置 1.1 zh-Hans.json 1.2 en.jso…

6、登錄功能后端開發

6、登錄功能后端開發 https://xiaoxueblog.com/ai/%E7%99%BB%E5%BD%95%E5%8A%9F%E8%83%BD%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91.html 1、新建用戶表SQL腳本 -- CREATE DATABASE aicloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;-- 創建用戶表 drop table if exi…

隨機矩陣放大的方式 生成相位數據集,用于相位展開

import os import numpy as np import matplotlib.pyplot as plt from scipy.ndimage import zoom import gc from tqdm import tqdm from zernike import RZerndef wrap_phase(phase):"""將相位包裹到[-π, π]區間"""return np.angle(np.exp(1…

Java面試全記錄:Spring Cloud+Kafka+Redis實戰解析

Java面試全記錄:Spring CloudKafkaRedis實戰解析 人物設定 姓名:張偉(隨機生成唯一姓名) 年齡:28歲 學歷:碩士 工作年限:5年 工作內容: 基于Spring Cloud搭建微服務架構使用Kafka…

Java Socket編程完全指南:從基礎到實戰應用

Socket編程是構建網絡應用的基石,Java通過java.net包提供了強大的Socket API。本文將深入解析Java Socket類的核心用法,涵蓋TCP/UDP協議實現、多線程通信及性能優化技巧,助您快速掌握網絡編程精髓。 一、Socket編程核心概念 1.1 網絡通信模型…

vue實現導出echarts圖片和table表格

安裝依賴 "xlsx": "^0.18.5","xlsx-style": "^0.8.13""file-saver": "^2.0.5",工具類 toolUtil const autoHeight () > {let winHeight 0if (window.innerHeight) {winHeight window.innerHeight} else if…