开发也能看懂的大模型:降维和度量学习

降维与度量学习是数据分析与机器学习中的两个重要主题,主要用于高维数据处理、特征选择以及数据关系的建模。


一、降维

1. 什么是降维?

降维是将高维数据映射到低维空间的过程,同时尽量保持数据的主要信息和结构。

  • 目标:简化数据表示,降低计算复杂度,去除冗余特征。

  • 应用场景

    • 数据可视化:将高维数据映射到 2D 或 3D 空间。
    • 数据压缩:减少特征维度,降低存储需求。
    • 降噪:去掉无关或冗余信息,提升模型性能。

2. 常见降维方法

(1)主成分分析(PCA)

通过线性变换将数据投影到方差最大的方向上,找到信息量最大的低维子空间。

  • 核心思想:通过特征值分解或奇异值分解(SVD)找到主成分。
  • 优点:简单、高效。
  • 缺点:仅适用于线性关系,受噪声影响较大。

示例代码

python 复制代码
from sklearn.decomposition import PCA
import numpy as np

# 示例数据
X = np.random.rand(100, 5)  # 100个样本,5个特征

# PCA降维到2维
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)

print("原始维度:", X.shape)
print("降维后:", X_reduced.shape)

(2)线性判别分析(LDA)

利用标签信息,通过最大化类间方差与类内方差的比值找到最优投影方向。

  • 优点:适用于分类任务,考虑类别信息。
  • 缺点:仅适合线性分布的数据。

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

一种非线性降维方法,适合将高维数据映射到 2D 或 3D,用于可视化。

  • 优点:适合非线性数据,能够揭示复杂结构。
  • 缺点:计算复杂度高,不适合大规模数据。

3. 降维中的注意事项

  1. 信息损失

    • 降维可能导致部分特征丢失。
    • 在选择降维方法时需要权衡精度与效率。
  2. 维度诅咒

    • 高维数据中的距离度量和统计特性可能失效。
    • 降维可以缓解这一问题。
  3. 特征选择 vs 特征提取

    • 特征选择:选择部分原始特征。
    • 特征提取:生成新的低维特征。

二、度量学习

1. 什么是度量学习?

度量学习是一种学习合适的距离函数的技术,以更好地反映数据的语义关系。

  • 目标:找到合适的度量(如距离函数),使相似样本的距离更近,不同样本的距离更远。

  • 应用场景

    • 分类任务(如 k 近邻)。
    • 聚类任务。
    • 图像、文本检索。

2. 常见方法

(1)欧几里得距离(默认度量)

直接计算样本在特征空间的几何距离。

(2)马氏距离

衡量样本之间的相似性,考虑到数据分布的协方差结构。

(3)对比损失(Contrastive Loss)

用于学习嵌入空间中样本间的距离关系。

3. 结合度量学习的应用

(1)k 近邻分类(kNN)

kNN 默认使用欧几里得距离,通过度量学习 可以学习 自定义距离提升分类性能。

1. KNN 的基本步骤

  1. 确定距离度量

    • 计算待分类样本与训练集中每个样本之间的距离。

    • 常见的距离度量方法:

      • 欧几里得距离
      • 曼哈顿距离
      • 马氏距离
      • 自定义距离
  2. 选择最近的 K 个邻居

    • 根据距离从小到大排序,选择 K 个最近的邻居。
  3. 投票或加权

    • 分类任务:邻居中占多数的类别作为预测结果。
    • 回归任务:邻居的平均值或加权平均值作为预测值。

2. 举例说明

假设有以下样本数据:

训练集

样本编号 特征 X1 特征 X2 类别
A 1.0 2.0 0
B 2.0 3.0 0
C 3.0 3.0 1
D 6.0 5.0 1
E 7.0 8.0 1

测试样本

特征为 (4.0,4.0)

预测过程

  1. 计算距离(使用欧几里得距离):
  1. 找到最近的 5 个邻居

    • 最近邻居:C(1.41),B(2.24),D(2.24),A(3.61),E(5.0)。
  2. 统计类别

    • 类别 0:2 次(A, B)。
    • 类别 1:3 次(C, D, E)。
  3. 预测结果

    • 投票多数的类别是 1,因此测试样本的预测类别为 1

示例代码

python 复制代码
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

# 加载数据集
data = load_iris()
X, y = data.data, data.target

# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建 KNN 分类器
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)

# 预测
y_pred = knn.predict(X_test)

print("测试集准确率:", knn.score(X_test, y_test))

三、降维与度量学习的关系

  1. 降维为度量学习提供基础

    • 降维可以将高维数据映射到低维空间,为后续距离计算或度量学习提供更简单的表示。
  2. 度量学习增强降维效果

    • 通过学习更合适的距离函数,使降维后的空间结构更接近语义关系。

总结

  • 降维:简化高维数据、提取主要特征。
  • 度量学习:优化数据点间的距离关系。
  • 结合应用:降维后的数据更易被用于度量学习,而度量学习可以提升降维后的分类与聚类效果。
相关推荐
命中的缘分25 分钟前
SpringCloud原理和机制
后端·spring·spring cloud
ErizJ25 分钟前
Golang|分布式索引架构
开发语言·分布式·后端·架构·golang
.生产的驴26 分钟前
SpringBoot 接口国际化i18n 多语言返回 中英文切换 全球化 语言切换
java·开发语言·spring boot·后端·前端框架
Howard_Stark30 分钟前
Spring的BeanFactory和FactoryBean的区别
java·后端·spring
-曾牛39 分钟前
Spring Boot中@RequestParam、@RequestBody、@PathVariable的区别与使用
java·spring boot·后端·intellij-idea·注解·spring boot 注解·混淆用法
极客智谷1 小时前
Spring AI应用系列——基于Alibaba DashScope的聊天记忆功能实现
人工智能·后端
极客智谷1 小时前
Spring AI应用系列——基于Alibaba DashScope实现功能调用的聊天应用
人工智能·后端
RJiazhen1 小时前
5分钟让你的服务接入AI——用 API Auto MCP Server 实现大模型与后端系统的无缝对话
后端·开源·mcp
前端付豪1 小时前
2、ArkTS 是什么?鸿蒙最强开发语言语法全讲解(附实操案例)
前端·后端·harmonyos
前端付豪1 小时前
8、鸿蒙动画开发实战:做一个会跳舞的按钮!(附动效示意图)
前端·后端·harmonyos