机器学习特征工程:特征选择与降维(PCA/TSNE)
PCA适用于特征压缩和去噪,t-SNE主要用于探索性分析而非特征工程。实际应用中常配合使用,如先用PCA降至50维,再用t-SNE降至2维可视化。$$ \text{投影:} Y = Z V_k $$:保持高维空间中的局部结构。
·
机器学习特征工程:特征选择与降维(PCA/t-SNE)
一、特征选择
特征选择是从原始特征集中筛选出最相关特征的子集,目标包括:
- 减少维度:降低计算复杂度
- 消除噪声:提高模型鲁棒性
- 增强可解释性:突出关键特征
常用方法:
-
过滤法(Filter):
- 计算特征与目标变量的相关性
- 常用指标:皮尔逊相关系数 $r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}}$
- 卡方检验 $\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}$
-
包裹法(Wrapper):
- 递归特征消除(RFE)
- 前向/后向选择
- 示例代码:
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
selector = RFE(model, n_features_to_select=5)
selected_features = selector.fit_transform(X, y)
- 嵌入法(Embedded):
- L1正则化(Lasso):$ \min_w | y - Xw |_2^2 + \alpha | w |_1 $
- 树模型特征重要性
二、降维技术
当特征间存在强相关性时,降维更有效:
1. 主成分分析(PCA)
- 核心思想:通过正交变换将相关特征转换为线性无关的主成分
- 数学原理:
- 标准化数据:$ z = \frac{x - \mu}{\sigma} $
- 计算协方差矩阵:$ C = \frac{1}{n} Z^T Z $
- 特征分解:$ C = V \Lambda V^T $
- 选择前 $k$ 个最大特征值对应的特征向量
$$ \text{投影:} Y = Z V_k $$
- 优缺点:
- ✅ 去除特征相关性
- ❌ 丢失可解释性(主成分是原始特征的线性组合)
from sklearn.decomposition import PCA
pca = PCA(n_components=0.95) # 保留95%方差
X_pca = pca.fit_transform(X)
2. t-SNE(t-Distributed Stochastic Neighbor Embedding)
-
核心思想:保持高维空间中的局部结构
-
数学原理:
- 计算高维相似度: $$ p_{j|i} = \frac{\exp(-|x_i - x_j|^2 / 2\sigma_i^2)}{\sum_{k \neq i} \exp(-|x_i - x_k|^2 / 2\sigma_i^2)} $$
- 定义低维相似度(使用t分布): $$ q_{ij} = \frac{(1 + |y_i - y_j|^2)^{-1}}{\sum_{k \neq l} (1 + |y_k - y_l|^2)^{-1}} $$
- 最小化KL散度: $$ \min KL(P|Q) = \sum_i \sum_j p_{ij} \log \frac{p_{ij}}{q_{ij}} $$
-
特点:
- 擅长保留局部结构(聚类可视化)
- 计算复杂度 $O(n^2)$,适合中小数据集
- 参数敏感(困惑度perplexity)
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, perplexity=30)
X_tsne = tsne.fit_transform(X)
三、应用场景对比
| 方法 | 适用场景 | 注意事项 |
|---|---|---|
| 特征选择 | 需要保留原始特征含义 | 可能遗漏特征组合信息 |
| PCA | 高维数据压缩/线性关系强的数据 | 主成分方向受异常值影响 |
| t-SNE | 数据可视化/探索聚类结构 | 结果不可逆/不适用于新样本预测 |
四、实践建议
- 预处理顺序:
graph LR A[数据清洗] --> B[特征选择] --> C[降维] - 组合策略:
- 先用特征选择去除无关特征
- 再用PCA处理多重共线性
- 最后用t-SNE可视化
- 评估指标:
- 分类任务:准确率/F1值
- 聚类任务:轮廓系数 $s = \frac{b - a}{\max(a, b)}$
关键提示:PCA适用于特征压缩和去噪,t-SNE主要用于探索性分析而非特征工程。实际应用中常配合使用,如先用PCA降至50维,再用t-SNE降至2维可视化。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)