降维与度量学习

本文探讨了降维与度量学习在机器学习中的重要性,包括k近邻(kNN)学习的工作机制、kNN的分类与回归策略、以及降维方法如主成分分析(PCA)、核化线性降维和流形学习。重点介绍了局部线性嵌入(LLE)和等度量映射(Isomap)算法,以及度量学习的概念,特别是马氏距离和度量矩阵在优化分类性能中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

降维与度量学习

k近邻学习

k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督算法,其工作机制非常简单:给定测试样本,基于某种距离度量找到训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。

在分类任务中可使用“投票法”,即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这k个样本的实际输出标记的平均值作为预测结果;还可以基于距离远近进行平均加权或加权投票,距离越近的样本权重越大。

KNN学习是“ 懒惰学习 \textcolor{red}{懒惰学习} 懒惰学习”的著名代表,此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到测试样本后再进行处理;相应的,那些在训练阶段就对样本进行学习处理的方法,称为“ 急切学习 \textcolor{red}{急切学习} 急切学习”。

算法流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JEc9DYDq-1662601990424)(F:\Typora\机器学习(西瓜书)\image\屏幕截图 2022-08-06 190022.png)]

代码实现

function [ idx ] = KNN( trainData,trainClass,testData,K )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
 
 
[N,M]=size(trainData);
%计算训练数据集与测试数据之间的欧氏距离dist
dist=zeros(N,1);
for i=1:N
    dist(i,:)=norm(trainData(i,:)-testData);
end
%将dist从小到大进行排序
[Y,I]=sort(dist,1);   
K=min(K,length(Y));
%将训练数据对应的类别与训练数据排序结果对应
labels=trainClass(I);

%确定前K个点所在类别的出现频率
classNum=length(unique(trainClass));%取集合中的单值元素的个数
labels=zeros(1,classNum);
for i=1:K
    j=trainClass(i);
    labels(j)=labels(j)+1;
end
%返回前K个点中出现频率最高的类别作为测试数据的预测分类
[~,idx]=max(labels);

%确定前K个点所在类别的出现频率
idx=mode(labels(1:K));%mode函数求众数
fprintf('该测试数据属于类 %d  ',idx);
end

低维嵌入

上一节的讨论是基于一个重要假设:任意测试样本x附近任意小的δ距离范围内总能找到一个训练样本,即训练样本的采样密度足够大,或称为“密度采样”。然而,这个假设在现实任务中通常很难满足。

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

缓解维数灾难的一个重要途径是 降维 \textcolor{red}{降维} 降维,亦称“维数简约”,即通过某种数学变换将原始高维属性空间转变为一个低维“子空间”。

若要求原始空间中的样本之间的距离在低维空间中得以保持,如图可知,即得到“多维缩放”。高维空间中的一个低维“嵌入”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xuY8Qxci-1662601990425)(F:\Typora\机器学习(西瓜书)\image\屏幕截图 2022-08-06 112918.png)]

在现实应用中为了有效降维,往往仅需降维后的距离与原始空间中的距离尽可能接近,而不必严格相等。

​ $dist_{i \cdot }^2 = \frac{1}{m}\sum\limits_{j = 1}^m {dist_{ij}^2} $ (10.7)
​ $dist_{ \cdot j}^2 = \frac{1}{m}\sum\limits_{i = 1}^m {dist_{ij}^2} $ (10.8)
​ $dist_{ \cdot \cdot }^2 = \frac{1}{ { {m^2}}}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {dist_{ij}^2} } $ (10.9)
b i j = − 1 2 ( d i s t i j 2 − d i s t i ⋅ 2 − d i s t j ⋅ 2 + d i s t ⋅ ⋅ 2 ) {b_{ij}} = - \frac{1}{2}(dist_{ij}^2 - dist_{i \cdot }^2 - dist_{j \cdot }^2 + dist_{ \cdot \cdot }^2) bij=21(distij2disti2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值