机器学习笔记 第十章 降维与度量学习

10.1  k近邻学习

        基本思想:对于测试的样本,基于某种距离度量找到训练集中和测试样本最靠近的k个训练样本,然后基于这k个训练样本来预测。值得注意的是,在分类任务中可使用投票法,回归任务中可使用平均法,此外,还可以进行加权平均或加权投票。

        给定测试样本x,设其最近邻样本为z,那么最近邻分类器出错的概率就是x和z类别标记不同的概率,即

P(err)=1-\sum_{c\in \gamma }^{}P(c|x)P(c|z).

对于任意的测试样本,总是能够在任意近的范围内找到训练样本z。令c^{*}=argmax_{c\in \gamma }P(c|x)表示贝叶斯最优分类器的结果,有

                                        P(err)=1-\sum_{c\in \gamma }^{}P(c|x)P(c|z)

                                                ​​​​​​​        \simeq 1-\sum_{c\in \gamma }^{}P^{2}(c|x)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \leqslant 1-P^{2}(c^{*}|x)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        =(1+P(c^{*}|x))(1-P(c^{*}|x))

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \leqslant 2\times (1-P(c^{*}|x)).

        通过上式可以得出,最近邻分类器的泛化错误率不超过贝叶斯最优分类器错误率的两倍。

10.2  低维嵌入

        降维就是通过某种数学变换将高维属性空间转变为低维子空间,从而提高样本密度,也更容易求解距离。如图10.1所示,原始高维空间中的样本点,在低维嵌入子空间中更容易学习

图10.2  低维嵌入示意图

        假设m个样本在原始空间的距离矩阵为D\in R^{m\times m},其第ij列的元素dist_{ij}为样本x_{i}x_{j}的距离。我们要做的是获得样本在d'维空间的表示Z\in R^{d'\times m},d'\leqslant d,且||z_{i}-z_{j}||=dist_{ij}。令B=Z^{T}Z\in R^{m\times m},其中B是降维后样本的内积矩阵,b_{ij}=z_{i}^{T}z_{j},故有

dist_{ij}^{2}=||z_{i}||^{2}+||z_{j}||^{2}-2z_{i}^{T}z_{j}=b_{ii}+b_{jj}-2b_{ij}.

        令Z被中心化,即\sum_{i=1}^{m}z_{i}=0。那么矩阵B的行和列之和均为零,即\sum_{i=1}^{m}b_{ij}=\sum_{j=1}^{m}b_{ij}=0,故

\sum_{i=1}^{m}dist_{ij}^{2}=tr(B)+mb_{jj}

\sum_{j=1}^{m}dist_{ij}^{2}=tr(B)+mb_{ii}

\sum_{i=1}^{m}\sum_{j=1}^{m}dist_{ij}^{2}=2mtr(B)

其中tr(.)表示矩阵的迹,tr(B)=\sum_{i=1}^{m}||z_{i}||^{2},令

dist_{i.}^{2}=\frac{1}{m}\sum_{j=1}^{m}dist_{ij}^{2}

dist_{.j}^{2}=\frac{1}{m}\sum_{i=1}^{m}dist_{ij}^{2}

dist_{..}^{2}=\frac{1}{m^{2}}\sum_{i=1}^{m}\sum_{j=1}^{m}dist_{ij}^{2}

可得

b_{ij}=-\frac{1}{2}(dist_{ij}^{2}-dist_{i.}^{2}-dist_{.j}^{2}+dist_{..}^{2})

通过上式可知,可通过降维前后保持距离不变矩阵D求内积矩阵B。求出矩阵的B的特征向量矩阵V,即B=V\Lambda V^{T},其中\Lambda =diag(\lambda _{1},\lambda _{2},...,\lambda _{d}),且\lambda _{1}\geqslant \lambda _{2}\geqslant ...\geqslant \lambda _{d}。假设其中有d^{*}个非零特征值,则Z可表达为

Z=\Lambda _{*}^{\frac{1}{2}}V_{*}^{T}\in R^{d^{*}\times m}.

        可取d'\ll d个最大特征向量组成对角矩阵\tilde{\Lambda }=diag(\lambda _{1},\lambda _{2},...,\lambda _{d'}),则Z可表达为

Z=\tilde{\Lambda} _{*}^{\frac{1}{2}}\tilde{V}_{*}^{T}\in R^{d'\times m}.

        最后进行线性变换,给定d维空间中的样本X=(x_{1},x_{2},...,x_{m})\in R^{d\times m},变换之后得到d'维空间的样本

Z=W^{T}X

其中W\in R^{d\times d'}是变换矩阵,Z\in R^{d'\times m}是新样本在新空间中的表达。z_{i}=W^{T}x_{i}是原属性向量x_{i}在新坐标\left \{ w_{1},w_{2},...,w_{d'} \right \}中的坐标向量。

        降维效果通常是比较降维前后学习器的性能来体现的,如果性能有所提高,那么降维起了作用,当降维到二维或者三维,那么可以可以利用可视化技术来判断降维效果。

10.3  主成分分析

        对于正交属性空间中的样本点,若存在这样的超平面,则具有这样的性质

        \bullet最近重构性:样本点到这个超平面的距离足够近;

        \bullet最大可分性:样本点在这个超平面上的投影尽可能分开。

        假设数据样本已经中心化,即\sum_{i}^{}x_{i}=0;且投影变换后的新坐标系为\left \{ w_{1},w_{2},...,w_{d} \right \},其中w_{i}是标准正交基向量,||w_{i}||_{2}=1w_{i}^{T}w_{j}=0(i\neq j)。如果将维度降低到d'<d,则样本点x_{i}在低维坐标系中投影是z_{i}=(z_{i1};z_{i2};...;z_{id'}),其中z_{ij}=w_{j}^{T}x_{i}x_{i}在低维坐标系下第j维的坐标。用z_{i}重构x_{i},则\hat{x}_{i}=\sum_{j=1}^{d'}z_{ij}w_{j}x_{i}\hat{x}_{i}之间的距离为

\sum_{i=1}^{m}\left \| \sum_{j=1}^{d'}z_{ij}w_{j}-x_{i} \right \|_{2}^{2}=\sum_{i=1}^{m}z_{i}^{T}z_{i}-2\sum_{i=1}^{m}z_{i}^{T}W^{T}x_{i}

+const\propto -tr(W^{T}(\sum_{i=1}^{m}x_{i}x_{i}^{T})W)

        根据最近重构性,上式被最小化,由于w_{j}是标准正交基,\sum_{i=1}^{m}x_{i}x_{i}^{T}是协方差矩阵,故有

min_{W}-tr(W^{T}XX^{T}W)

s.t. W^{T}W=I​​​​​​​

10.4  核化线性降维

        如下图所示,从二维空间中采样后以S形曲面映射到三维空间中,若采用线性降维方法,那么将丢失原本的低维结构。

        核化线性降维是基于核技巧对线性降维方法进行核化,接下来进行核主成分分析(简称KPCA)。假定高维空间中把数据投影到又W确定的超平面上,即

(\sum_{i=1}^{m}z_{i}z_{i}^{T})W=\lambda W

其中z_{i}是样本点x_{i}在高维特征空间中的像,可得

W=\frac{1}{\lambda }(\sum_{i=1}^{m}z_{i}z_{i}^{T})W=\sum_{i=1}^{m}z_{i}\frac{z_{i}^{T}W}{\lambda }=\sum_{i=1}^{m}z_{i}\alpha _{i}

其中\alpha _{i}=\frac{1}{\lambda }z_{i}^{T}W,假设x_{i}通过映射\phi产生z_{i},即z_{i}=\phi (x_{i}),i=1,2,...,m.

(\sum_{i=1}^{m}\phi (x_{i})\phi (x_{i})^{T})W=\lambda W

W=\sum_{i=1}^{m}\phi (x_{i})\alpha _{i}.

通常情况下,\phi的具体形式我们不得而知,于是引入核函数

\kappa (x_{i},x_{j})=\phi (x_{i})^{T}\phi (x_{j}).

简化可得

KA=\lambda A

其中K\kappa对应的核矩阵,(K)_{ij}=\kappa (x_{i},x_{j})A=(\alpha _{1};\alpha _{2};...;\alpha _{m})。对上式进行特征值分解,取K最大的d'个特征值对应的特征向量。对于新样本x,其投影后的第j维坐标为

z_{j}=w_{j}^{T}\phi (x)=\sum_{i=1}^{m}\alpha _{i}^{j}\phi (x_{i})^{T}\phi (x)=\sum_{i=1}^{m}\alpha _{i}^{j}\kappa (x_{i},x)

其中\alpha _{i}已经过规范化,\alpha _{i}^{j}\alpha _{i}的第j个分量。

10.5  流形学习

        流形学习是一类借鉴了拓扑流形概念的降维方法,如果低维流形嵌入到高维空间中,那么其分布虽然看上去十分复杂,但在局部上仍具有欧式空间的性质。接下来介绍一种著名的流形学习。

        等度量映射的观点是,高维空间上的直线距离在低维上不可达,而应是流体上的本真距离。如下图所示,想象一只虫子从一点爬到另一点,不能脱离曲面行走,那么红色曲线才是最短路径。

        那么,怎样来计算测地线距离呢?我们对每个点基于欧氏距离找到其近邻点,以此建立一个近邻连接图,计算近邻连接图上两点之间的最短路径,可以采用Dijkstra算法或者Floyd算法。

10.6  实验

        主成分分析算法的实现步骤

        1.准备数据。准备你要进行PCA的数据集,可以使用任何可用的数据集,如鸢尾花数据集、手写数字数据集等。

        2.标准化数据。在进行 PCA 前,通常需要对数据进行标准化,使每个特征的均值为 0,标准差为 1。

        3.计算协方差矩阵。计算标准化后数据的协方差矩阵,以便理解特征之间的关系。

        4.可视化结果。可以使用 matplotlib 进行可视化,查看降维后的数据。

import numpy as np  
import matplotlib.pyplot as plt  
from sklearn.decomposition import PCA  
from sklearn.datasets import load_iris  

# 加载示例数据集,使用鸢尾花数据集  
data = load_iris()  
X = data.data  
y = data.target  

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

# 可视化结果  
plt.figure(figsize=(8, 6))  
scatter = plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y, cmap='viridis', edgecolor='k')  
plt.title('PCA Low-Dimensional Embedding of Iris Dataset')  
plt.xlabel('Principal Component 1')  
plt.ylabel('Principal Component 2')  
plt.colorbar(scatter, label='Classes')  
plt.show()  

        运行上述代码,其运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值