一、核心算法对比速查表

算法 类型 监督性 保持结构 适合维度 输出可解释性 计算复杂度
LDA 线性 有监督 类间分离 低-中维 O(n³)
PCA 线性 无监督 全局方差 高维 O(n³)
t-SNE 非线性 无监督 局部相似 超高清 O(n²)

二、算法详解

1. LDA(线性判别分析)

核心思想:最大化类间距离,最小化类内距离

数学目标

argmax_W (Wᵀ S_b W) / (Wᵀ S_w W)

其中:
S_b = 类间散度矩阵
S_w = 类内散度矩阵

实现步骤

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit_transform(X, y)  # 需要标签y

典型应用场景

  • 人脸识别前的特征压缩

  • 分类任务的特征预处理

2. PCA(主成分分析)

核心思想:寻找方差最大的正交方向

关键公式

X = UΣVᵀ (奇异值分解)
主成分 = XV

特征选择

# 累积方差解释率计算
pca = PCA().fit(X)
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.xlabel('主成分数量')
plt.ylabel('累积解释方差')

优化变种

  • 增量PCA(大数据集)

  • 稀疏PCA(增强可解释性)

  • 核PCA(非线性扩展)

3. t-SNE(t分布随机邻域嵌入)

核心优势:完美保持局部结构

参数调优

from sklearn.manifold import TSNE
tsne = TSNE(
    n_components=2,
    perplexity=30,  # 建议5-50
    early_exaggeration=12,
    learning_rate='auto'
)
X_tsne = tsne.fit_transform(X)

注意事项

  • 仅适合可视化(不适合特征预处理)

  • 不同运行结果可能不一致

  • 对超参数敏感

三、实战对比案例

MNIST数据集降维效果

import matplotlib.pyplot as plt

methods = {
    'PCA': PCA(n_components=2),
    'LDA': LinearDiscriminantAnalysis(n_components=2),
    't-SNE': TSNE(n_components=2)
}

fig, axes = plt.subplots(1, 3, figsize=(18, 5))
for (name, model), ax in zip(methods.items(), axes):
    X_reduced = model.fit_transform(X, y) if name=='LDA' else model.fit_transform(X)
    ax.scatter(X_reduced[:,0], X_reduced[:,1], c=y, cmap='tab10', s=5)
    ax.set_title(name)

四、算法选择决策树

五、常见误区

  1. LDA陷阱

    • 要求n_features > n_classes

    • 对非高斯分布数据效果差

  2. PCA误用

    • 未标准化数据导致方差主导错误

    • 用训练集统计量处理测试集

  3. t-SNE滥用

    • 尝试用t-SNE输出作为模型输入特征

    • 忽视perplexity参数调整

六、进阶方向

  1. UMAP:比t-SNE更快且更好保持全局结构

  2. Autoencoder:深度学习方法处理复杂非线性

  3. PHATE:特别适合单细胞RNA序列数据

附:各算法在Scikit-learn中的关键参数

# PCA
PCA(n_components=None, whiten=False, svd_solver='auto')

# LDA
LinearDiscriminantAnalysis(n_components=None, solver='svd')

# t-SNE
TSNE(n_components=2, perplexity=30.0, early_exaggeration=12.0)

 @浙大疏锦行

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐