西瓜书读书笔记整理(十) —— 第十章降维与度量学习

10.1 k 近邻学习

10.1.1 什么是 kNN 学习

kNN算法(k-Nearest Neighbors)是一种常用的分类和回归算法。它的基本思想是根据最近邻的样本来预测未知样本的标签或值。

10.1.2 kNN 算法步骤

kNN算法的步骤如下:

  1. 计算未知样本与训练集中所有样本的距离(通常使用欧氏距离或其他距离度量方法)。
  2. 选取与未知样本距离最近的k个样本。
  3. 对于分类问题,根据这k个样本的标签进行投票或权重计算,确定未知样本的标签。
  4. 对于回归问题,根据这k个样本的值进行平均或加权平均,预测未知样本的值。

10.1.3 kNN 算法优缺点

kNN算法的优点包括:

  • 简单易懂;
  • 容易实现;
  • 对异常值不敏感。

kNN算法的缺点包括:

  • 计算复杂度高;
  • 需要存储全部训练样本;
  • 对于高维数据效果可能不好等。

10.1.4 懒惰学习(lazy learning)与急切学习(eager learning)

kNN算法通常被归类为一种"懒惰学习"(lazy learning)方法。懒惰学习和急切学习(eager learning)是机器学习中两种不同的学习策略。

懒惰学习 方法在训练阶段并不对数据进行显式的学习或模型构建,而是将所有训练样本存储在内存中。当需要进行预测时,懒惰学习方法会根据未知样本与训练样本之间的距离或相似性来进行决策。kNN算法就是一种典型的懒惰学习方法,它保存了所有的训练样本,并在预测时根据最近邻样本进行决策。

相比之下,急切学习 方法在训练阶段会显式地构建一个模型或学习参数,例如决策树、支持向量机和神经网络等。急切学习方法在训练阶段对数据进行学习,然后使用学习到的模型进行预测。

10.1.4 超参数 k

在kNN算法中,超参数 k k k表示选择的最近邻样本的数量。它是kNN算法中最重要的超参数之一,决定了算法的性能和预测结果。

k k k的取值会直接影响到kNN算法的决策过程。对于分类问题,当 k k k较小时,算法更加敏感和灵活,可能会受到噪声和局部波动的影响,导致过拟合。当 k k k较大时,算法更加稳定,可以减少噪声的影响,但可能会忽略了一些细节,导致欠拟合。因此,选择合适的 k k k值非常重要。

对于回归问题, k k k的取值也会对预测结果产生影响。一般来说,较小的 k k k值会使预测结果更加敏感和波动,而较大的 k k k值会使预测结果更加平滑和稳定。

为了选择合适的 k k k值,通常采用交叉验证的方法。通过将训练数据集分为训练集和验证集,尝试不同的 k k k值并评估模型在验证集上的性能,选择使性能达到最佳的 k k k值。

需要注意的是,选择合适的 k k k值需要根据具体问题和数据集的特点进行调整。没有一个固定的规则适用于所有情况。一般来说,较小的 k k k值适用于复杂的数据集和较大的训练集,而较大的 k k k值适用于简单的数据集和较小的训练集。

因此,选择合适的 k k k值是kNN算法中的一个重要任务,需要根据具体问题和数据集进行调整和优化。

10.2 低维嵌入

本节主要介绍几个概念以及MDS算法

10.2.1 密采样(dense sample)

任意测试样本 x x x 附近任意小的 δ \delta δ距离范围内总能找到一个训练样本,即训练样本的采集密度足够大,或称为 “密采样”。

10.2.2 维数灾难(curse of dimensionality)

在高维情况下出现的数据样本稀疏、距离计算困难等问题是所有机器学习方法共同面临的严重障碍,被称为 “维数灾难”。

10.2.3 降维(dimension reduction)

缓解维数灾难的一个重要途径是降维,亦称 “维数约简”,即通过某种数学变换将原始高维属性空间转为一个低维"子空间"(subspace),在这个子空间中样本密度大幅度提高,距离计算也变得更为容易。

10.2.4 嵌入(embedding)

为什么能进行降维?这是因为在很多时候,人们观测或收集到的数据样本虽是高维的,**但与学习任务密切相关的也许仅是某个低维分布,**即高维空间中的一个低维 “嵌入”(embedding)。

**低维嵌入(Low-Dimensional Embedding)**是一种将高维数据映射到低维空间的技术。它是处理维数灾难和可视化高维数据的常用方法之一。通过低维嵌入,我们可以将高维数据转换为具有较低维度的表示,以便更好地理解和分析数据。

10.2.5 多维缩放(Multiple Dimension Scaling, MDS)

**多维缩放(Multidimensional Scaling,简称MDS)**是一种用于将高维数据映射到低维空间的技术。它是一种非线性降维方法,旨在保持数据点之间的距离或相似性关系。通过MDS,我们可以将高维数据转换为具有较低维度的表示,以便更好地可视化和理解数据。

MDS的基本思想 是通过计算数据点之间的距离或相似性矩阵,将数据点在低维空间中的位置确定下来。MDS方法的目标是在低维空间中尽可能地保持数据点之间的距离或相似性关系。具体来说,MDS试图找到一组低维坐标,使得在低维空间中的数据点之间的距离或相似性与在高维空间中的距离或相似性尽可能地接近。

10.3 主成分分析(Principal Component Analysis, PCA)

10.3.1 PCA 算法概述

**PCA(Principal Component Analysis)**是一种常用的线性降维算法,通过寻找数据中的主要方差方向,将高维数据映射到具有较低维度的新空间,以提取数据的关键信息和减少维度。

10.3.2 PCA算法的优化目标

PCA算法的优化目标 是通过线性变换将原始数据投影到一个新的低维空间,使得投影后的数据具有最大的方差。换句话说,PCA的目标是找到一组正交基(主成分),使得投影后的数据在各个主成分上具有最大的方差。这样做的目的是保留尽可能多的原始数据信息,并且在较低维度上捕捉到数据的主要结构和变化。

10.3.3 PCA 算法流程概述

PCA(Principal Component Analysis)是一种常用的线性降维算法,用于将高维数据映射到较低维度的新空间。以下是PCA算法的流程概述:

  1. 数据预处理:对原始数据进行标准化,使得每个特征的均值为0,方差为1,以消除不同特征之间的量纲差异。

  2. 计算协方差矩阵:根据预处理后的数据,计算特征之间的协方差矩阵。协方差矩阵描述了数据中不同特征之间的相关性。

  3. 特征值分解:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。特征值表示了数据在特征向量方向上的方差大小,特征向量表示了数据在新空间中的主要方向。

  4. 特征值排序:将特征值按照大小进行排序,选择前k个特征值对应的特征向量作为主成分,其中k是希望降低到的维度。

  5. 投影到新空间:通过将原始数据与选定的主成分进行点乘运算,将数据投影到新的低维空间中。投影后的数据具有较低的维度,但保留了原始数据的关键信息。

PCA算法的关键步骤是计算协方差矩阵和进行特征值分解,通过选择主成分进行投影,实现了数据的降维和信息捕捉。这样可以减少数据的维度,去除冗余信息,同时保留了数据的主要结构和变化。

西瓜书读书笔记整理(十) —— 第十章降维与度量学习_第1张图片

10.3.4 PCA 算法的优缺点

PCA算法具有以下优点:

  1. 数据降维:PCA可以将高维数据映射到较低维度的新空间,从而减少特征的数量。这有助于减少存储空间和计算成本,并简化数据分析和可视化。
  2. 信息保留:PCA通过选择主成分,可以尽量保留原始数据中的重要信息。主成分是原始数据中方差最大的方向,它们捕捉了数据中最显著的变化模式。
  3. 数据去相关性:PCA通过对协方差矩阵进行特征值分解,可以将原始数据中的特征之间的相关性消除或减少。这有助于减少冗余信息,提高数据分析的效果。

然而,PCA算法也存在一些缺点:

  1. 线性限制:PCA是一种线性降维方法,只能捕捉数据中的线性关系。对于包含非线性结构的数据,PCA的效果可能不理想。
  2. 敏感性:PCA对数据的变化和噪声敏感。如果数据中存在离群点或噪声,它们可能会对主成分的计算产生较大影响。
  3. 解释性:PCA降低了数据的维度,但降维后的特征往往难以解释。主成分是原始特征的线性组合,它们可能不直接对应于原始数据的实际含义。

综上所述,PCA是一种常用的降维方法,适用于处理高维数据和减少冗余信息。然而,在应用PCA时需要注意其线性限制、敏感性和解释性等问题,并结合具体应用场景进行选择和调整。

10.4 核化线性降维

10.4.1 核化(Kernelized)

在机器学习中,“核化”(Kernelized)是一种通过非线性映射将数据从原始空间映射到一个高维特征空间的技术。它是通过核函数(Kernel Function)来实现的。

核函数 是一种能够计算两个样本之间在高维特征空间中的内积的函数,而无需显式计算高维特征空间的坐标。核函数的作用是将原始空间中的数据通过非线性映射转换到高维特征空间,使得原始数据在高维空间中的表示更具有区分性和可分性。

10.4.2 核函数的特性

核函数通常具有以下特性:

  1. 正定性:核函数的值必须是非负的,并且满足正定性条件,即对所有样本和权重向量,核矩阵必须是半正定的。
  2. 对称性:核函数的值在交换样本的位置时不变,即 K ( x , y ) = K ( y , x ) K(x, y) = K(y, x) K(x,y)=K(y,x)

常见的核函数包括:

  1. 线性核函数: K ( x , y ) = x T y K(x, y) = x^T y K(x,y)=xTy,它对应于线性映射,不引入额外的非线性特征。
  2. 多项式核函数: K ( x , y ) = ( x T y + c ) d K(x, y) = (x^T y + c)^d K(x,y)=(xTy+c)d,它引入了多项式特征,可以处理一定程度的非线性关系。
  3. 高斯核函数(RBF核函数): K ( x , y ) = exp ⁡ ( − ∥ x − y ∥ 2 2 σ 2 ) K(x, y) = \exp\left(-\frac{\|x-y\|^2}{2\sigma^2}\right) K(x,y)=exp(2σ2xy2),它引入了无限维的高斯分布特征,能够处理更复杂的非线性关系。

通过核化技术,可以将原始数据在高维特征空间中进行线性操作,从而在原始空间中无法解决的问题中获得更好的表现。核化方法广泛应用于支持向量机(SVM)、主成分分析(PCA)以及其他一些机器学习算法中。

10.5 流式学习(manifold learning)

流式学习(manifold learning) 是一类借鉴了拓扑流形概念的降维方法。“流形” 是在局部和欧氏空间同胚的空间,换言之,它在局部具有欧氏空间的性质,能用欧氏距离来进行距离计算。这给降维方法带来了很大的启发:若低维流形嵌入到高维空间中,则数据样本在高维空间的分布虽然看上去非常复杂,但在局部上仍具有欧氏空间的性质。因此,可以容易地在局部建立降维映射关系,然后再设法将局部映射关系推广到全局。当维数被降至二维或三维时,能对数据进行可视化展示,因此流形学习也可被用于可视化。

10.5.1 等度量映射(Isometric Mapping,简称Isomap)

等度量映射(Isometric Mapping) 是一种保持数据之间距离关系的降维方法,通过将高维数据映射到低维空间,保持数据的局部结构和距离信息。

等度量映射的目标是在保持数据之间的距离关系的同时将高维数据映射到低维空间。以下是等度量映射的算法过程概述:

  1. 计算距离矩阵:首先,计算原始高维数据中每对样本之间的距离,可以使用欧氏距离、马氏距离或其他距离度量方法。

  2. 构建邻接图:根据距离矩阵,构建一个邻接图,其中每个样本作为节点,距离较近的样本之间连接一条边。可以使用k最近邻算法或其他邻接构建方法。

  3. 优化低维坐标:在低维空间中,初始化每个样本的坐标。然后,通过最小化高维空间中的距离和低维空间中的距离之间的差异来优化低维坐标。这可以通过优化问题的目标函数来实现,目标函数通常是最小化高维距离和低维距离之间的差异。

  4. 优化过程:使用迭代优化方法,如梯度下降或牛顿法,不断更新低维坐标,直到达到收敛条件。

  5. 降维结果:最终得到优化后的低维坐标,作为数据在低维空间的表示。这些坐标保持了原始数据之间的距离关系,尽可能地保留了数据的局部结构。

等度量映射算法的关键在于通过优化过程将高维距离和低维距离进行匹配,以保持数据之间的距离关系。这样可以在降维的同时尽量保留原始数据的结构和信息。

西瓜书读书笔记整理(十) —— 第十章降维与度量学习_第2张图片

10.5.2 局部线性嵌入(Locally Linear Embedding,LLE)

局部线性嵌入(Locally Linear Embedding) 是一种非线性降维算法,通过保持局部线性关系将高维数据映射到低维空间。

局部线性嵌入算法过程 如下:

  1. 构建邻近图:根据高维数据集,使用某种邻近度量方法(如欧氏距离)计算每个样本与其邻近样本之间的距离,并选择每个样本的k个最近邻作为其邻居。

  2. 重建权重矩阵:对于每个样本,通过线性回归的方法,将其表示为其邻居的线性组合。这可以通过最小化重建误差的方式得到权重矩阵。权重矩阵W的每一行表示一个样本与其邻居之间的线性关系。

  3. 优化低维表示:在低维空间中,初始化每个样本的坐标。通过最小化高维空间中的重建误差与低维空间中的重建误差之间的差异,来优化低维坐标。这可以通过优化问题的目标函数来实现,目标函数通常是最小化高维重建误差和低维重建误差之间的差异。

  4. 降维结果:最终得到优化后的低维坐标,作为数据在低维空间的表示。这些坐标保持了原始数据之间的局部线性关系,尽可能地保留了数据的局部结构。

LLE算法通过局部线性关系的建模,将高维数据映射到低维空间。它的关键在于通过权重矩阵的构建和优化过程,保持了数据之间的局部线性关系,从而实现了非线性降维。

西瓜书读书笔记整理(十) —— 第十章降维与度量学习_第3张图片

10.6 度量学习(metric learning)

度量学习(Metric Learning) 是一种机器学习方法,旨在学习适合特定任务的样本之间的距离度量或相似度度量。其目标是通过学习一个度量函数,使得在该度量下,同类样本之间的距离尽可能小,异类样本之间的距离尽可能大。

度量学习的算法过程可以概括如下:

  1. 数据准备:准备带有标签的训练数据集,其中每个样本都有一个标签,表示其所属的类别。

  2. 选择度量函数:根据任务需求,选择适当的度量函数。常用的度量函数包括欧氏距离、马氏距离、余弦相似度等。

  3. 定义损失函数:根据度量学习的目标,定义一个损失函数,用于衡量同类样本之间的距离和异类样本之间的距离。常见的损失函数包括对比损失(Contrastive Loss)、三元组损失(Triplet Loss)等。

  4. 优化度量函数:通过优化算法(如梯度下降)最小化损失函数,学习到适合任务的度量函数。在训练过程中,度量函数的参数会被不断调整以使得损失函数达到最小值。

  5. 应用学习到的度量函数:在度量学习完成后,可以使用学习到的度量函数来计算样本之间的距离或相似度。这可以应用于各种任务,如聚类、分类、检索等。

度量学习的目标是通过学习适当的度量函数,使得数据在新的度量下更好地表达其内在结构,从而提高机器学习任务的性能。它在许多领域,如图像识别、人脸识别、推荐系统等中都有广泛的应用。

Smileyan
2024.1.14 0:04

你可能感兴趣的:(机器学习,西瓜书)