【大模型与机器学习解惑】机器学习里的 “提取特征” 跟数学里矩阵的特征值,特征向量以及特征矩阵是什么关系?

概述

在机器学习中,“特征提取”(feature extraction)是指将原始数据映射为有助于模型学习的数值表示;而在线性代数里,“特征值”“特征向量”及“特征矩阵”则刻画矩阵的内在性质。二者在 PCA谱聚类 等算法中交汇:ML 用特征值分解来寻找数据的主方向,但其“特征”本身各有不同的含义和作用。下文将系统对比二者的概念、联系和区别,并辅以 Python 代码示例帮助理解。


一、机器学习中的特征提取

  • 定义:将文本、图像、信号等原始数据转换为模型易用的数值特征,减少冗余同时保留判别信息。
  • 方法
    1. 手工方法:TF–IDF、词袋模型、信号局部统计量等。
    2. 自动化方法:基于降维(PCA、t-SNE)、深度网络中间层输出等。
    3. 混合方案:先用 GBDT 提取叶节点特征,再与神经网络结合。
  • 目的:提高模型性能、加速训练、降低过拟合风险。
  • 工具示例(scikit-learn)
    from sklearn.decomposition import PCA
    from sklearn.preprocessing import StandardScaler
    
    X_scaled = StandardScaler().fit_transform(X_raw)
    pca = PCA(n_components=3)
    X_pca = pca.fit_transform(X_scaled)
    print("方差解释比", pca.explained_variance_ratio_)
    
    此代码将高维数据降至 3 维主成分,用于后续模型训练。

二、线性代数中的特征值/向量/矩阵

  • 特征值 (Eigenvalue):对方阵 A A A,若存在非零向量 v v v 使 A   v = λ   v A\,v=\lambda\,v Av=λv,则 λ \lambda λ 称为 A A A 的特征值。
  • 特征向量 (Eigenvector):与上述 λ \lambda λ 配对的非零向量 v v v,表示线性变换在该方向的伸缩不改变方向。
  • 特征矩阵 (Modal Matrix):由所有特征向量按列构成的矩阵 V V V,若 A = V Λ V − 1 A=V\Lambda V^{-1} A=VΛV1,则完成对角化。
  • Python 示例
    import numpy as np
    
    A = np.array([[6, 8],
                  [2,12]])
    vals, vecs = np.linalg.eig(A)
    print("特征值:", vals)
    print("特征向量:\n", vecs)
    
    输出 λ \lambda λ 与对应的 v v v,揭示矩阵的主方向与伸缩系数。

三、二者的交集—PCA 与谱方法

  • PCA:对数据协方差矩阵 Σ \Sigma Σ 做特征分解,取最大特征值对应的特征向量作为主成分,实现降维并保留最大方差。
  • 谱聚类:构建图拉普拉斯矩阵 L L L,取前 k k k 个最小特征值对应的特征向量作为嵌入,再用 K-Means 聚类。
  • 图神经网络:对图邻接矩阵做谱分解,可提取全局图结构特征用于节点分类与链接预测。

四、本质区别

维度ML 特征提取线性代数特征
含义数据表示的数字描述矩阵自身的伸缩方向与系数
生成方式手工设计或自动学习求解特征分解或 SVD
用途模型输入、特征工程矩阵分析、降维(PCA)、谱聚类等
可解释性与任务语义相关,需人工定义数学固有属性,可直接量化与解释

五、完整示例:PCA 与特征值对比

import numpy as np
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# 构造示例数据
X = np.array([[2.5, 2.4],
              [0.5, 0.7],
              [2.2, 2.9],
              [1.9, 2.2],
              [3.1, 3.0],
              [2.3, 2.7],
              [2.0, 1.6],
              [1.0, 1.1],
              [1.5, 1.6],
              [1.1, 0.9]])

# 标准化
Xs = StandardScaler().fit_transform(X)

# PCA 降至 2 维
pca = PCA(n_components=2)
Xp = pca.fit_transform(Xs)
print("PCA 特征值:", pca.explained_variance_) 

# 协方差矩阵特征分解
cov = np.cov(Xs, rowvar=False)
vals, vecs = np.linalg.eig(cov)
print("协方差特征值:", vals)
print("协方差特征向量:\n", vecs)
  1. 前半段用 PCA 对原始数据降维并输出其“主成分方差”(即特征值);
  2. 后半段直接对协方差矩阵做特征分解,验证两者结果一致或接近。

通过上述对比与示例,您可以清晰地了解 ML 中的“特征提取” 聚焦于数据输入的构造与转换,而 线性代数的特征分解 则是对矩阵固有属性的数学运算。PCA 等算法将两者天然结合,用矩阵的特征值与向量指导机器学习的特征抽取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值