机器学习中的‘距离’与‘相似度’:深入理解欧氏空间、内积与度量矩阵
2026/6/12 7:04:51 网站建设 项目流程

机器学习中的‘距离’与‘相似度’:深入理解欧氏空间、内积与度量矩阵

第一次接触KNN分类器时,我盯着屏幕上那些被直线划分开的彩色数据点,突然意识到一个根本问题:计算机如何"看见"这些点之间的距离?后来在PCA降维项目中,当原始数据被压缩成二维散点图时,我又困惑于那些保持相对位置不变的投影点。直到系统学习了欧氏空间的数学本质,才明白这些算法背后统一的几何语言——内积定义的度量空间。

1. 欧氏空间:机器学习的几何舞台

2012年ImageNet竞赛中,AlexNet通过128维特征向量实现图像分类,这个高维空间正是典型的欧氏空间。当我们谈论"向量化"特征时,本质上是在构建一个几何环境——每个特征对应一个坐标轴,样本成为空间中的点。

欧氏空间的三大支柱

  • 内积运算(x,y) = Σxᵢyᵢ衡量向量对齐程度
  • 向量长度||x|| = √(x,x)表征向量规模
  • 夹角公式cosθ = (x,y)/(||x||·||y||)定义方向关系

在推荐系统中,用户偏好向量与商品特征向量的夹角越小(余弦接近1),匹配度越高。这正是余弦相似度的几何解释:

def cosine_similarity(a, b): dot_product = np.dot(a, b) norm_a = np.linalg.norm(a) norm_b = np.linalg.norm(b) return dot_product / (norm_a * norm_b)

注意:当向量经过L2归一化后,余弦相似度等同于内积运算,这是许多推荐算法加速计算的技巧

2. 度量矩阵:隐式几何的密码本

在核方法中,我们常遇到看似违反直觉的现象:在原始空间线性不可分的数据,通过核函数映射后变得可分。这背后的数学魔术就是度量矩阵的变换。

考虑高斯核函数:

K(x,y) = exp(-γ||x-y||²)

其对应的度量矩阵A满足:

Aᵢⱼ = K(xᵢ,xⱼ)

通过Mercer定理,这个正定矩阵隐含定义了某个高维特征空间的内积。下表对比了常见核函数对应的几何特性:

核函数类型公式隐含维度适用场景
线性核xᵀy原始维度线性可分数据
多项式核(γxᵀy + r)^dC(n+d,d)有序特征
Sigmoid核tanh(γxᵀy + r)神经网络前置
高斯核exp(-γx-y

在SVM实践中,选择不同的核函数实质是在调整度量矩阵,从而改变空间的基本几何属性。我曾在一个电商用户分群项目中测试发现:对于稀疏行为数据,多项式核的效果反而优于高斯核——因为前者更好地保持了原始特征的序关系。

3. 正交性:特征解耦的数学表达

PCA算法的核心是寻找数据的主成分方向,这些方向在数学上表现为协方差矩阵的特征向量,且彼此正交。这种正交性意味着:

cov(Xᵢ, Xⱼ) = 0 (i≠j)

实现PCA时,我们通常这样计算:

# 数据标准化 X_std = (X - np.mean(X, axis=0)) / np.std(X, axis=0) # 计算协方差矩阵 cov_mat = np.cov(X_std.T) # 特征分解 eigen_vals, eigen_vecs = np.linalg.eig(cov_mat) # 按特征值排序 eigen_pairs = [(np.abs(eigen_vals[i]), eigen_vecs[:,i]) for i in range(len(eigen_vals))] eigen_pairs.sort(key=lambda k: k[0], reverse=True)

提示:实际应用中常使用SVD计算更稳定,特别是当特征维度高于样本量时

在自然语言处理中,词向量的正交性也很有意思。通过观察Word2Vec生成的词向量,我们发现:

  • 同义词具有较小夹角
  • "国王-男人+女人≈女王"这类关系对应向量加减
  • 语义无关的词向量接近正交

这种几何关系使得词向量空间成为语义推理的绝佳载体。

4. 距离度量:算法选择的数学依据

在KNN和聚类算法中,距离函数的选择直接影响模型性能。除了常见的欧氏距离,其他度量各有适用场景:

主要距离度量对比

距离类型公式特性典型应用
欧氏距离√Σ(xᵢ-yᵢ)²旋转不变物理测量数据
曼哈顿距离Σxᵢ-yᵢ
切比雪夫距离maxxᵢ-yᵢ
马氏距离√(x-y)ᵀS⁻¹(x-y)考虑协方差多元统计分析
余弦距离1 - (xᵀy)/(x

在实现推荐系统时,我遇到过用户评分数据的稀疏性问题。这时采用带权重的改进余弦相似度效果更好:

def adjusted_cosine(a, b, weights): mask = np.logical_and(a != 0, b != 0) a_masked = a[mask] b_masked = b[mask] w_masked = weights[mask] if len(a_masked) == 0: return 0 dot_product = np.dot(w_masked * a_masked, b_masked) norm_a = np.linalg.norm(np.sqrt(w_masked) * a_masked) norm_b = np.linalg.norm(np.sqrt(w_masked) * b_masked) return dot_product / (norm_a * norm_b)

5. 实践中的几何陷阱与解决方案

即使理解理论,实践中仍会遇到意外情况。以下是三个典型问题及应对策略:

问题1:维度灾难

  • 现象:高维空间中所有点对距离趋于相同
  • 解决方案:特征选择/降维 + 距离加权

问题2:量纲差异

  • 现象:不同特征尺度差异淹没真实模式
  • 修复方法:标准化 (Z-score) 或归一化 (Min-Max)

问题3:非欧数据

  • 挑战:图数据、文本等非数值结构
  • 对策:设计专用核函数或嵌入方法

在社交网络分析项目中,我们处理图数据时采用拉普拉斯矩阵特征映射,将节点嵌入到欧氏空间:

import networkx as nx from sklearn.manifold import SpectralEmbedding G = nx.karate_club_graph() embedding = SpectralEmbedding(n_components=2, affinity='precomputed') pos = embedding.fit_transform(nx.to_numpy_array(G))

这种技术的数学基础正是欧氏空间中的谱理论,通过图的拉普拉斯矩阵实现拓扑结构与几何空间的连接。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询