机器学习-降维与度量学习

204 阅读10分钟
在机器学习中,降维与度量学习都是重要的技术手段。

一、降维

1. 定义:

  • 降维是指将高维数据转换为低维数据的过程。在实际应用中,数据往往具有很高的维度,这可能会导致计算复杂度增加、过拟合等问题。通过降维,可以在保留数据主要特征的前提下,降低数据的维度,从而提高计算效率、减少存储空间、改善模型的性能等。

2. 主要方法:

  • 主成分分析(PCA):这是一种常用的线性降维方法。它通过寻找数据的主成分,即数据在各个方向上的最大方差方向,将数据投影到低维空间中。PCA 可以有效地降低数据的维度,同时保留数据的主要特征。
  • 线性判别分析(LDA):LDA 是一种有监督的线性降维方法。它的目标是找到一个投影方向,使得投影后不同类别的数据之间的距离尽可能大,而同一类别的数据之间的距离尽可能小。LDA 通常用于分类问题,可以提高分类器的性能。
  • 流形学习:流形学习是一种非线性降维方法。它假设数据分布在一个低维流形上,通过寻找这个流形的嵌入,将高维数据映射到低维空间中。常见的流形学习方法有局部线性嵌入(LLE)、等距映射(Isomap)、拉普拉斯特征映射(LE)等。

3. 应用场景:

  • 数据可视化:将高维数据降维到二维或三维空间中,可以方便地进行可视化展示,帮助人们更好地理解数据的结构和特征。
  • 特征提取:在机器学习中,常常需要对数据进行特征提取,将原始数据转换为更具代表性的特征向量。降维可以作为一种特征提取的方法,提取数据的主要特征,提高模型的性能。
  • 数据压缩:通过降维,可以将高维数据压缩到低维空间中,减少存储空间和传输带宽。

二、度量学习

1. 定义:

  • 度量学习是指学习一种合适的距离度量方法,使得相似的样本之间的距离尽可能小,而不同的样本之间的距离尽可能大。在传统的机器学习中,通常使用欧氏距离、曼哈顿距离等标准距离度量方法。然而,这些距离度量方法并不一定适用于所有的数据类型和任务。度量学习的目标是根据具体的任务和数据特点,学习一种更合适的距离度量方法,提高模型的性能。

2. 主要方法:

  • 马氏距离学习:马氏距离是一种广义的欧氏距离,它考虑了数据的协方差结构。通过学习数据的协方差矩阵,可以得到一种更合适的马氏距离度量方法。
  • 信息理论度量学习:信息理论度量学习方法基于信息论的原理,通过最小化信息损失或最大化信息增益来学习距离度量。例如,最大信息系数(MIC)就是一种基于信息论的距离度量方法。
  • 深度学习中的度量学习:在深度学习中,可以通过神经网络学习一种距离度量方法。例如,孪生网络(Siamese Network)和对比损失(Contrastive Loss)就是一种常用的深度学习度量学习方法。孪生网络由两个相同的神经网络组成,通过比较两个输入样本的特征表示来学习距离度量。对比损失则是通过最小化相似样本之间的距离和最大化不同样本之间的距离来学习距离度量。

3. 应用场景:

  • 相似性搜索:在图像检索、文本检索等领域,需要根据样本之间的相似性进行搜索。度量学习可以学习一种合适的距离度量方法,提高相似性搜索的准确性。
  • 聚类分析:聚类分析是将数据分成不同的簇,使得同一簇中的样本之间的相似性尽可能大,而不同簇中的样本之间的相似性尽可能小。度量学习可以学习一种更合适的距离度量方法,提高聚类分析的效果。
  • 分类问题:在分类问题中,距离度量方法也会影响分类器的性能。度量学习可以学习一种更合适的距离度量方法,提高分类器的准确性。

三、k近邻学习

  • k 近邻学习是一种常用的机器学习算法。

  • 它的基本思想是:对于一个新的样本,在已有数据集中找到离它最近的 k 个样本,然后根据这 k 个样本的类别来确定新样本的类别。如果这 k 个样本中大多数属于某一类别,那么新样本就被判定为该类别。

  • 例如,在图像分类任务中,如果要确定一张新图像的类别,可以计算它与训练集中每张图像的距离,找到距离最近的 k 张图像,查看这 k 张图像的类别分布,从而确定新图像的类别。

  • k 近邻学习的优点是简单直观,不需要对数据进行复杂的建模,对异常值不敏感。缺点是计算量大,尤其是当数据集很大时,每次预测都需要计算新样本与所有已有样本的距离。

四、低维嵌入

image.png

  • 低维嵌入是一种将高维数据映射到低维空间的技术。

  • 在很多实际问题中,数据往往具有很高的维度,这会带来计算复杂度高、数据稀疏等问题。低维嵌入的目的就是在尽可能保留数据重要特征的前提下,将高维数据转换到低维空间中。

  • 例如,在数据可视化中,通过低维嵌入可以将高维数据展示在二维或三维空间中,以便人们更直观地观察和理解数据的结构和分布。

  • 它通常利用一些数学方法,如主成分分析(PCA)、流形学习等,找到高维数据中的潜在结构和模式,然后将其映射到低维空间中,使得在低维空间中数据的相似性和结构能够得到较好的保持。

五、主成分分析

  • 主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维方法。

  • 它的主要目的是通过线性变换,将高维数据投影到低维空间中,同时尽可能保留数据的主要信息。具体来说,PCA 找到数据中的主要成分(即主成分),这些主成分是原始数据的线性组合,且相互正交。主成分按照方差大小排序,方差越大说明该主成分包含的信息越多。

  • 例如,在图像处理中,PCA 可以用于降低图像的维度,提取图像的主要特征,从而减少存储空间和计算时间。在数据分析中,PCA 可以帮助我们发现数据中的主要趋势和模式,去除噪声和冗余信息。

六、核化线性降维

image.png

  • 核化线性降维是一种使用核方法来进行降维的技术。在传统的线性降维方法中,例如主成分分析(PCA)和线性判别分析(LDA),数据被映射到一个低维线性子空间中。而核化线性降维则通过使用核技巧,将数据映射到一个非线性的低维空间中。

  • 核技巧的核心思想是通过一个非线性映射将原始数据转换到一个高维的特征空间,然后在该特征空间中应用线性降维方法。这种映射可以使用核函数来实现,例如径向基函数核(RBF核)或多项式核。

  • 下面我们以核主成分分析(KPCA)为例子:

假定我们将高维特征空间中把数据投影到由W确定的超平面上,即PCA欲求解:

image.png

其中zi是样本点xi在高维特征空间中的像,可知:

image.png

对新样本x = ( x 1 , x 2 , . . . , x m ) x=(x_1,x_2,...,x_m)x=(x 1 ,x 2 ​ ,...,x m ​ )(向量),其向高维特征空间的投影后的第j ( j = 1 , 2 , . . . , d^i) 维坐标是:

image.png

  • 实例分析

数据集如图所示

image.png

读入数据集:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据集
data = pd.read_csv('data/correlated_dataset.csv')

# 提取特征和目标
X = data.drop('Target', axis=1).values
y = data['Target'].values

定义核函数:

# 核函数(径向基函数)
def rbf_kernel(x, y, gamma=1.0):
    return np.exp(-gamma * np.linalg.norm(x - y)**2)

计算特征值与特征向量:

# 计算特征值和特征向量
def compute_eigenvectors(K_centered, n_components):
    eigvals, eigvecs = np.linalg.eigh(K_centered)
    # 选择前n_components个最大特征值对应的特征向量
    idx = np.argsort(eigvals)[::-1][:n_components]
    return eigvecs[:, idx]

执行KPCA并绘制降维可视化结果:

# 数据中心化
X_centered = X - np.mean(X, axis=0)

# 计算核矩阵
K = compute_kernel_matrix(X_centered)

# 中心化核矩阵
K_centered = center_kernel_matrix(K)

# 选择降维后的维度
n_components = 6

# 计算特征向量
eigenvectors = compute_eigenvectors(K_centered, n_components)

# 降维
X_pca = K_centered.dot(eigenvectors)

# 可视化降维结果
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.title('Kernelized PCA - 2D Projection')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.show()

image.png

七、流形学习

  • 本概念

流形学习假设高维数据实际是分布在一个低维流形上。流形可以理解为在高维空间中局部具有欧氏空间性质的几何结构。例如,三维空间中的一个扭曲的曲面就是一个二维流形。流形学习的目标就是找到高维数据在低维流形上的嵌入,从而实现降维,同时尽可能保留数据的本质特征和内在结构。

  • 主要方法

1. 局部线性嵌入(LLE):LLE 试图保持每个数据点与其近邻点之间的线性关系。它首先找到每个数据点的近邻点,然后计算出这些近邻点的线性组合系数,使得数据点可以由其近邻点线性表示。最后,在低维空间中保持这些线性组合系数不变,找到低维嵌入。

image.png 2. 等距映射(Isomap):Isomap 通过计算数据点之间的测地距离来构建低维嵌入。测地距离是在流形上两点之间的最短路径长度。Isomap 首先使用近邻图来近似流形,然后通过计算图上两点之间的最短路径来估计测地距离。最后,使用多维尺度分析(MDS)等方法将高维数据映射到低维空间中,使得低维空间中的距离尽可能接近测地距离。

image.png

3.. 拉普拉斯特征映射(LE):LE 构建一个图来表示数据点之间的关系,然后通过拉普拉斯矩阵的特征向量来计算低维嵌入。它试图保持数据点在图上的局部邻域关系,使得在低维空间中相邻的数据点仍然相邻。

  • 应用场景

1. 数据可视化:将高维数据降维到二维或三维空间中,以便直观地观察数据的分布和结构。

2. 特征提取:提取数据的低维特征,用于后续的机器学习任务,如分类、聚类等。

3. 图像和信号处理:对图像和信号数据进行降维处理,减少计算复杂度,提高处理效率。

总之,降维和度量学习都是机器学习中非常重要的技术手段。降维可以降低数据的维度,提高计算效率和模型性能;度量学习可以学习一种合适的距离度量方法,提高相似性搜索、聚类分析和分类问题的效果。在实际应用中,可以根据具体的任务和数据特点,选择合适的降维和度量学习方法。