【特征选择】嵌入法(Embedded)

特征选择核心方法:嵌入法(Embedded)|原理+代码+可视化全攻略

嵌入法是机器学习里最高效、最常用、最适合论文与工程 的特征选择方式。它把特征选择直接嵌在模型训练里,一边训练一边自动筛选,不用单独跑特征筛选流程,速度快、效果稳。


一、什么是嵌入法?一句话看懂

嵌入法 = 训练模型时自动做特征选择,一步到位。

它不像过滤法(先筛选再训练)、包裹法(反复训练筛选),而是:

  • 模型训练
  • 特征打分
  • 特征筛选
    三件事同时完成

二、最通俗的比喻:边学边划重点

你在复习考试:

  • 过滤法:先划重点 → 再背书
  • 包裹法:背一遍 → 划重点 → 再背一遍
  • 嵌入法边背书边自动划重点

嵌入法就是模型自带特征筛选功能,训练完直接告诉你:哪些特征有用。


三、嵌入法靠什么实现?(两大核心)

嵌入法主要依靠正则化(Regularization)实现:

  1. L1 正则化(Lasso) → 直接把不重要特征的权重变成 0(真正删除)
  2. L2 正则化(Ridge) → 把不重要特征权重压缩变小(不删但减弱)

另外树模型(随机森林、XGBoost)也属于嵌入法。


四、嵌入法的 4 大优势(必背)

  1. 一步到位:训练 + 筛选同时完成
  2. 速度快:不用反复训练模型
  3. 减少过拟合:正则化本身就是防过拟合
  4. 高维数据友好:特征几百上千也能跑

五、核心公式(简单看懂)

1. Lasso(L1)嵌入法公式

Loss=MSE+λ∑∣w∣ Loss = MSE + \lambda \sum|w| Loss=MSE+λ∑∣w∣

  • 后面那项就是惩罚
  • λ 越大 → 惩罚越强 → 越多特征权重变 0

2. Ridge(L2)嵌入法公式

Loss=MSE+λ∑w2 Loss = MSE + \lambda \sum w^2 Loss=MSE+λ∑w2

  • 权重被压缩,但不会变成 0

六、嵌入法完整流程(超清晰)

  1. 选择带正则化的模型(Lasso、Ridge、树模型)
  2. 训练模型
  3. 模型自动给特征权重/重要性
  4. 权重=0 或 权重小 → 删除
  5. 用筛选后的特征建模

七、Python 完整实战(房价预测)

直接复制可运行!

1. 导入库

python 复制代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.linear_model import Lasso
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectFromModel
from sklearn.metrics import mean_squared_error, r2_score

2. 加载数据

python 复制代码
# 波士顿房价(经典回归数据集)
data = load_boston()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = data.target

print("特征数量:", X.shape[1])
print("样本数量:", X.shape[0])
X.head()

3. 查看特征相关性

python 复制代码
plt.figure(figsize=(12, 8))
corr = pd.concat([X, y], axis=1).corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('特征相关性热力图')
plt.show()

4. 标准化(Lasso 必须做)

python 复制代码
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

X_train, X_test, y_train, y_test = train_test_split(
    X_scaled, y, test_size=0.2, random_state=42
)

5. Lasso 嵌入法训练(自动特征选择)

python 复制代码
# Lasso 自带嵌入特征选择
lasso = Lasso(alpha=0.1, random_state=42)
lasso.fit(X_train, y_train)

# 查看特征系数
coef_df = pd.DataFrame({
    'feature': X.columns,
    'coef': lasso.coef_
}).sort_values(by='coef', ascending=False)

print("=== 特征权重(越大越重要)===")
print(coef_df)

6. 可视化特征权重

python 复制代码
plt.figure(figsize=(12, 5))
sns.barplot(x='feature', y='coef', data=coef_df)
plt.xticks(rotation=45)
plt.title('Lasso 特征权重(嵌入法筛选)')
plt.tight_layout()
plt.show()

7. 自动筛选重要特征

python 复制代码
# 自动选重要特征
sfm = SelectFromModel(lasso, threshold='mean')
X_train_selected = sfm.fit_transform(X_train, y_train)
X_test_selected = sfm.transform(X_test)

# 查看哪些被选中
selected = X.columns[sfm.get_support()]
print("=== 嵌入法筛选后的特征 ===")
print(selected.tolist())
print(f"从 {X.shape[1]} 个 → 筛选到 {len(selected)} 个")

8. 用筛选后的特征建模

python 复制代码
# 重新训练
lasso_final = Lasso(alpha=0.1)
lasso_final.fit(X_train_selected, y_train)

y_pred = lasso_final.predict(X_test_selected)

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print("===== 模型效果 =====")
print(f"MSE: {mse:.4f}")
print(f"R2: {r2:.4f}")

9. 真实值 vs 预测值

python 复制代码
plt.figure(figsize=(10, 5))
plt.scatter(y_test, y_pred, alpha=0.7)
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--')
plt.xlabel('真实房价')
plt.ylabel('预测房价')
plt.title('嵌入法筛选后模型效果')
plt.show()

10. 自动找最优 α

python 复制代码
param = {'alpha': np.logspace(-4, 0, 30)}
grid = GridSearchCV(Lasso(), param, cv=5, scoring='neg_mean_squared_error')
grid.fit(X_train, y_train)

print("最优 alpha:", grid.best_params_['alpha'])

八、嵌入法的优点

  1. 训练+筛选一步完成
  2. 自动防过拟合
  3. 高维数据非常好用
  4. 工业界最常用
  5. 可解释性强(看权重就知道谁重要)

九、嵌入法的缺点

  1. 依赖模型
  2. Lasso 只适合线性关系
  3. 必须标准化
  4. 多重共线性下会随机删特征

十、三种特征选择方法对比(必考)

方法 方式 速度 效果
过滤法 Filter 先统计筛选 → 再训练 最快 一般
包裹法 Wrapper 反复训练筛选 最慢 最好
嵌入法 Embedded 训练时自动筛选 很好

十一、什么时候必须用嵌入法?

  • 特征多、维度高
  • 希望训练+筛选一步完成
  • 做论文、做实验、写报告
  • 工程上线模型(速度快、稳定)
  • 需要可解释特征

十二、最简单总结(背诵版)

  • 嵌入法 = 模型训练时自动筛选特征
  • 最常用:Lasso(L1)
  • 特征权重 = 0 → 删除
  • 优点:快、稳、防过拟合、一步到位
  • 适合:高维数据、论文、工程建模
相关推荐
YOLO数据集集合5 分钟前
光伏板红外-可见光配对缺陷检测数据集 | 光伏板缺陷 红外可见光配准 多模态检测 无人机巡检 目标检测 YOLO格式9094期
人工智能·目标检测·计算机视觉·目标跟踪·红外·无人机视角·太阳能板
IT毕设梦工厂7 分钟前
计算机毕业设计选题推荐:基于大数据的城市空气污染物浓度数据分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·python·信息可视化·数据挖掘·数据分析·课程设计·数据可视化
知几蜗牛7 分钟前
Agent会互相调用了,但A2A 1.0真正解决的是协作边界
人工智能
qq_410194298 分钟前
.NET 8.0 下基于 PaddleOCRSharp 的离线文字识别落地指南
算法·.net
HIT_Weston9 分钟前
227、【AI】【模型部署】基座模型研究:RoPE 旋转位置编码
人工智能·模型部署
Omics Pro12 分钟前
1个月2轮融资!长寿虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
residual_fan12 分钟前
航空发动机故障诊断专用智能体(六):实际机队健康管理中的应用考量与展望
人工智能·算法·数据挖掘·数据分析
知几蜗牛17 分钟前
AI越懂你越好吗?五天实验给出一个不舒服的答案
人工智能
程序员阿黄19 分钟前
基于 Django 与 Vue 3 的智能实验室预约系统设计与实现
后端·python·mysql·django·vue·毕设
能源革命19 分钟前
AI 日报 2026-09-19
人工智能