西瓜书 第十章 降维与度量学习

10.1k近邻学习

k近邻(简称KNN)学习:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。
预测:①(分类任务)投票法,将选择的k个样本中出现最多次的类作为预测结果。
            ②(回归任务)平均法,将k个样本的输出值求平均作为结果。
            ③(回归任务)加权平均法,基于距离远近将k个输出结果加权后作为结果,距离越近权重越大。
懒惰学习:在学习阶段将样本保存起来,收到测试样本后再进行处理。k近邻学习就是其代表,
急切学习:在训练阶段就对样本进行学习处理的方法。

k近邻学习器中k值不同会导致结果的不同,且计算距离方式不同。找出的近邻也会不同从而导致结果的不同,下面暂时假设距离计算“恰当”,我们来看一下不同的k值对结果的影响:
k近邻学习器示例.png

那么对于训练时间开销为0的懒惰学习器其性能如何呢?
对于k=1的最近邻分类器,给定测试样本x,若其最近邻样本为z,则其错误率为x与z标记不一样,即P(err)=1-\sum_{c∈y}P(c|x)P(c|z).
在假设样本独立同分布的情况下,最后得到的结果是最近邻分类器的错误率不超过贝叶斯最优分类器的错误率的两倍。

10.2低维嵌入

在学习中,我们常常会遇到在高维度的情况下样本稀疏(难以近邻的样本)距离计算困难等问题,被称为“维度灾难”
缓解维度灾难的两个途径:①降维。②特征选择
降维又称为“维数简约”,即通过某种数学变换将原始高维属性空间转变为一个低维“子空间”。

多维缩放(MDS)

目标:原始空间中样本之间的距离在低维空间中得以保持,从而得到在低维空间的样本矩阵。

假定m个样本之间的距离矩阵D∈R^{m*m},其中第i行j列的元素dist_{ij}为样本x_i到x_j的距离,我们的目标是获得样本在d'维空间的表示Z∈R^{d'*m},d'<d,且任意两个样本在d'维空间中的欧式距离等于原始空间中的距离,即||z_i-z_j||=dist_{ij}
降维后的内积矩阵B:

1.PNG

令降维后的样本矩阵Z被中心化:
2.png

3.png

将上面的等式整理后,我们可以得到降维后样本矩阵Z的内积矩阵B中元素与原始维度中距离矩阵中元素的关系b_{ij}=-{\frac{1}{2}}(dist^2_{ij}-dist^2_{i\cdot}-dist^2{{\cdot}j}+dist^2_{{\cdot}\cdot}),所以我们可以通过矩阵D来求得内积矩阵B。
对矩阵B做特征值分解,B={V}{\Lambda}V^T,其中\Lambda特征值构成的对角矩阵,有d个非零特征值,降到d'维取其d'个非零特征值,用\Lambda_*表示,则Z={\Lambda_*^{1/2}}V_*^T∈R^{d^**m}.

MDS算法.png

MDS算法,由于降维主要与其他学习方法一起使用,作为数据处理的第一步,很少单独使用,所以这里我就不详细的列出实例,有兴趣的可以参考一下链接的代码实例。

线性降维

定义:基于线性变换来进行降维的方法。

给定d维空间的样本X=(x_1,x_2,...,x_m)∈R^{d*m},变换之后得到d'≤d维度空间中的样本Z=W^TX,其中W∈R^{d*d'}变换矩阵,Z是样本在新空间中的表达。

10.3主成分分析(PCA)

PCA本质上是线性降维的一种,通过线性变换,将原空间中的样本投影到低维空间。这是如何实现的呢?PCA是利用一组新的坐标系来投影变换,这组坐标系中的每个基向量都是标准正交基向量。
而要用一个超平面来恰当的表示高维样本似乎有点困难,即要样本在超平面上表现出来而且还要足够分散,所以超平面具有以下两个性质:①最近重构性:样本点到这个超平面的距离足够近,即样本点在超平面附件。②最大可分性:样本点在这个超平面上的投影足够分散,即样本点投影后坐标具有可分性。

基于上面两个性质我们可以得到PCA的两种代价推导:
①基于重构性推导

我先简单介绍一下数学上推导的思路,假设存在一个新坐标系w∈R^{d*d},通过线性变换可以将X样本集合投影到一个新的超平面,而若是舍弃坐标系的部分坐标,即可以将样本投影到低维度的超平面了,然后基于求到的低维度样本坐标,我们通过重构,即将低维度的坐标通过线性变换使其映射到原空间中,通过重构后的坐标来和最开始的样本集合X比较距离大小,即重构后的坐标要尽量的接近原空间坐标。于是我们得到了PCA的优化目标,通过对目标求解就可以得到w

公式和推导.PNG

②基于最大可分性推导

最大可分性就是要样本投影到新坐标系后尽可能分开,即投影后样本点之间的方差最大化。
投影后样本点的协方差矩阵是\sum_{i}W^Tx_ix_i^{T}W,所以优化目标为:\max_W {tr(W^TXX^TW)} s.t. W^TW=I,

2.png

上面的过程为数学推导求PCA最优目标的推导过程,实际上我们在求新坐标时并不需要如此复杂,只需将XX^T进行特征值分解即可求出解。

PCA算法.png

那么我们用多少低维维度更合适呢?即d'为多少?
d'可以是人为定义,如果事先的任务已经明确需要多少维度的空间;也可以通过d'值不同的低维空间来对一些开销较小的学习器进行交叉验证,获得较好的d'值。
下面以鸢尾花数据为例,进行降维分类,代码如下:


鸢尾花数据集.png
import matplotlib.pyplot as plt      #加载matplotlib用于数据可视化
from sklearn.decomposition import PCA   #加载PAC算法
from sklearn.datasets import load_iris   #导入鸢尾花数据

data = load_iris()         #字典形式加载数据集
y = data.target           #y为样本标签
x = data.data
pca = PCA(n_components=2)     #设置降维后维度为2
reduced_x=pca.fit_transform(x)     #对样本降维

red_x,red_y = [],[]
blue_x,blue_y = [],[]
green_x,green_y = [],[]

for i in range(len(reduced_x)):      #将降维后的数据按标签分类存入数组中
    if y[i] == 0:
        red_x.append(reduced_x[i][0])
        red_y.append(reduced_x[i][1])
    elif y[i] == 1:
        blue_x.append(reduced_x[i][0])
        blue_y.append(reduced_x[i][1])
    else:
        green_x.append(reduced_x[i][0])
        green_y.append(reduced_x[i][1])

#可视化
plt.scatter(red_x,red_y,c='r',marker='x')     #marker设置点的样式
plt.scatter(blue_x,blue_y,c='b',marker='d')
plt.scatter(green_x,green_y,c='g',marker='3')
plt.show()
运行结果.png

如上图通过将四维的数据降为二维空间从而实现聚类,正如前面所说降维并不是一个单独的算法存在,它通常与其他学习算法一起使用,使用降维先处理数据从而降低其他学习算法的开销。


10.4核化线性函数

线性降维有时候会导致部分信息丢失,如课本中将原本的二维数据映射到三维后再利用线性降维,发现原始的低维结构丢失了,原本的低维空间称为本真低维空间。

例子.png

非线性降维,为了保持本真的低维空间,如核化线性降维(KPCA)利用核技巧对线性降维进行核化。

假定我们将高维特征空间中的数据投影到w上:(\sum_{i=1}^mz_iz_i^T)w_j=\lambda_jw_j其中z_i是样本点x_i在高维特征空间中的像,z_i=\emptyset(x_i)
即假设将原空间的样本点x通过映射\emptyset,映射到高维空间去,然后在进行PCA降维,但是因为不知道映射\emptyset具体形式所以引入核函数来对x进行核处理,将原来的线性降维核化从而实现非线性降维。

数学推导过程.png

由于不知道\emptyset故引入核函数,k(x_i,x_j)=\emptyset(x_i)^T{\emptyset}(x_j)                          (10.23)
数学推导过程.png

10.5流形学习

流形:局部与欧式空间同胚的空间,即它在局部具有欧式空间的性质,能用欧式距离来进行距离计算
流形学习:借鉴了拓扑流形概念的降维方法,基于流形这一特性,在局部建立降维映射关系,然后设法将局部映射推广到全局。而当维数降至而二维或者三维时就能对数据进行可视化展示,所以流形学习也用于可视化。主要代表方法有等度量映射和局部线性嵌入。

等度量映射

等距离度量的基本出发点:认为低维流形嵌入高维空间后,直接在高维计算直线距离是具有误导性,因为该距离是不可达的,所以我们可以用测地线距离来表示两点间的距离,因为测地线距离是两点间的本真距离。

那么测地线距离如何计算呢?
利用局部上与欧式空间同胚的性质,对每个点基于欧式距离找出其邻近点,然后就能建立一个近邻连接图,所以计算测地线距离的问题转变为计算邻近连接图上两点间的最短路径。而得到两点间距离后就可以利用MDS方法来获得样本点在低维空间中的坐标。

Isomap算法.png

【注:因为该算法利用了MDS算法来得到低维样本坐标,但是并没有给出投影向量w,所以对于新样本无从下手;解决方法是利用已有的高维坐标和低维坐标一个作为输入一个作为输出来训练一个回归学习器,来对新样本进行降维输出。】
k邻近图的构建:
①指定近邻点个数,如欧式距离最近的k个点为近邻点,称为k近邻图;
②指定距离阈值 ,距离小于阈值的点被认为是近邻点,称为 近邻图。

局部线性嵌入(LLE)

局部线性嵌入试图保持邻域内样本的线性关系。即:x_i=w_{ij}x_j+w_{ik}x_k+w_{il}x_l在原空间有该线性关系降维后也应该具有该关系。
数学推导思路:通过使样本点与其邻域样本坐标通过线性组合重构的该点间距离最小从而求出重构的系数w,假设样本x_i在低维度坐标为z_i该坐标与其邻域样本点通过线性组合重构的点应该距离最小,因为w已知从而来求出Z

过程.png
过程.png

LLE算法.png

10.6度量学习

机器学习中,对数据进行降维主要目的就是找到一个适合的低维度空间来进行训练学习,学习的性能比在原空间好;而原高维度空间容易出现维度灾难,从而使得距离计算困难。样本稀疏等问题,所以降维是解决问题的主要途径,也就是降维的目的。
度量学习则是从另一途径来解决维度灾难的,既然高维度距离计算,那就通过学习来得到一个适合的距离度量,这就是度量学习的目的学习一个合适的距离度量。

对于两个d维样本x_i,x_j,它们的平方欧式距离为:dist^2_{ed}(x_i,x_j)=||x_i-x_j||^2_2=dist^2_{ij,1}+dist^2_{ij,2}+...+dist^2_{ij,d},若属性重要性不同则可以引入权重w,得:dist^2_{ed}(x_i,x_j)=||x_i-x_j||^2_2=w_i*dist^2_{ij,1}+w_2*dist^2_{ij,2}+...+w_d*dist^2_{ij,d}=(x_i-x_j)^TW(x_i-x_j),其中w_i≥0,W=dig(w)为一个对角矩阵。

由于w的非对角元素均为0,这意味着坐标轴正交,即属性间无关.而实际问题中属性有可能相关的,所以这是的坐标轴不再正交,因此将W换为一个普通的半正定对称矩阵M,于是得到马氏距离:dist^2_{mah}(x_i,x_j)=(x_i-x_j)^TM(x_i-x_j)=||x_i-x_j||^2_M.其中M称为“度量矩阵”。
度量学习的目的就是计算出合适的度量矩阵。在实际计算过程中我们可以将M嵌入到近邻分类器评价体系中,通过优化性能指标来求出M。

参考:https://blog.csdn.net/sdm12345/article/details/95335162
https://blog.csdn.net/qq_38825002/article/details/81356377
https://www.jianshu.com/p/2c7e8340decd

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,967评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,273评论 3 415
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,870评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,742评论 1 309
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,527评论 6 407
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,010评论 1 322
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,108评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,250评论 0 288
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,769评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,656评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,853评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,371评论 5 358
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,103评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,472评论 0 26
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,717评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,487评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,815评论 2 372

推荐阅读更多精彩内容