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

10.1近邻学习

k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其原理是:给定测试样本,找出训练集中与其最靠近的k个训练样本(基于距离度量方式),然后基于这K个“邻居”的信息来进行预测。是一种常用的监督学习方法。

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

    k近邻学习方法:没有显示的训练过程,是懒惰学习(lazy learning),在训练阶段仅把样本保存起来,训练时间开销为零,待收到测试样本后在进行处理;相对应急切学习(eager learning)而言,就是在训练阶段就对样本进行学习处理的方法。

    k近邻分类器中,k为不同值时,分类结果也就不同;同时,若采用不同的距离计算方式,则找出的近邻也有显著差别,导致分类结果也显著不同。假设距离计算是恰当的,就是不考虑距离导致的差异性,而就从k这个参数的差异就最近邻分类器在二分类问题上的性能进行分析。

这里写图片描述

最邻近分类器

10.2低维嵌入

k近邻学习方法基于一个重要的假设,任意测试样本x附近任意小的d距离范围内总能找到一个训练样本,即训练样本的采样密度足够大(密采样dense sample)。在现实中这个假设很难满足。
eg:当d=0.001,则仅需要1000个测试样本点平均分布在归一化后的属性取值范围内,才可以使得任意测试样本在其附近0.001距离范围内总能找到一个训练样本。此时满足10.1所描述的错误率。这紧紧是k=1的情形。
若k=20,采用密采样,则需要这里写图片描述个样本。现实应用中k往往是成千上万的,样本数目是无法达到的,此外很多学习方法都涉及到距离计算(如k-means聚类),而高维空间会给距离计算带来很大的麻烦。
在高维情形下,样本数的采样以及距离计算问题。在高维情形下出现的数据样本稀疏、距离计算困难等问题,是所有机器学习方法共同面临的严重障碍,被称为维数灾难(curse of dimensionality)。
缓解维数灾难的两个途径:

  1. 特征选择;
  2. 降维(dimension reduction)。
    思路上,这两种途径都是减少维数,不过一个是在事前,一个是在事中。降维,也称维数约简,通过某种数学变换将原始高维属性空间转变为一个低维子空间(subspace),在子空间中,样本密度可以大幅提高,距离计算也相对容易。事实上,观测或收集到的数据样本虽然是高维的,但与学习任务相关的或许只是某个低维分布,这也是特征选择可以事前根据业务来定义的。
    为什么可以降维?降维后的是否影响样本距离呢?降维后要求样本空间中样本之间的距离在低维空间中得以保持,多维缩放(multiple dimensional scaling,MDS)是一种经典的降维方法。
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    对降维效果的评估,通常是比较降维前后学习器的性能,若性能有所提高,则认为降维起到了作用。若将维数降至二维或三维,则可通过可视化技术来直观地判断降维效果。
    一般来说要获得低维子空间,最简单的是对原始高维空间进行线性变换。个人想法:这个线性变换的过程在机器学习领域十分的常见,无论是线性回归算法、支持向量机还是神经网络都有用到线性变换。以神经网络来比喻我们这里的降维算法,将 d 维的属性样本降维到 d’ 维的属性空间上,其实等同为输入神经元为 d 个、输出神经元为 d’ 个的浅层神经网络结构,借用一下第五章的图解释一下

这里写图片描述
降维后的每个新的属性 x’ 其实是高维属性 x1、x2、…、xn 根据权重 W 的线性组合。这种基于线性变换进行降维的方法称为线性降维方法,对低维子空间的性质有不同的要求,相对于对权重 W 施加了不同的约束。对降维效果的评估,通常是比较降维前后学习器的性能,若性能提升了则认为降维起到了效果。

10.3主成分分析

思路:主成分分析、Principal Component Analysis、PCA的推导有很多种途径,我们选择一种容易理解的来讲解,目的是降维。
这里写图片描述
我们画的是二维情况,但是具体到高维也是可以的。μ是我们目测一个比较好的降维之后的投影方向。但是这只是目测,我们怎么规定这个准则呢?我们规定:
投影之后样本竟可能分散,即样本方差尽可能大。
这里写图片描述
PCA的目的:
PCA是一种在尽可能减少信息损失的情况下找到某种方式降低数据的维度的方法。通常来说,我们期望得到的结果,是把原始数据的特征空间(n个d维样本)投影到一个小一点的子空间里去,并尽可能表达的很好(就是说损失信息最少)。常见的应用在于模式识别中,我们可以通过减少特征空间的维度,抽取子空间的数据来最好的表达我们的数据,从而减少参数估计的误差。注意,主成分分析通常会得到协方差矩阵和相关矩阵。这些矩阵可以通过原始数据计算出来。协方差矩阵包含平方和与向量积的和。相关矩阵与协方差矩阵类似,但是第一个变量,也就是第一列,是标准化后的数据。如果变量之间的方差很大,或者变量的量纲不统一,我们必须先标准化再进行主成分分析。
PCA的过程:
1.去掉数据的类别特征(label),将去掉后的d维数据作为样本
2.计算d维的均值向量(即所有数据的每一维向量的均值)
3.计算所有数据的散布矩阵(或者协方差矩阵)
4.计算特征值(e1,e2,…,ed)以及相应的特征向量(lambda1,lambda2,…,lambda d)
5.按照特征值的大小对特征向量降序排序,选择前k个最大的特征向量,组成d*k维的矩阵W(其中每一列代表一个特征向量)
6.运用d*K的特征向量矩阵W将样本数据变换成新的子空间。(用数学式子表达就是y=w^t*x,其中x是d*1维的向量,代表一个样本,y是K*1维的在新的子空间里的向量)
1.数据准备—-生成三维样本向量
首先随机生成40*3维的数据,符合多元高斯分布。假设数据被分为两类,其中一半类别为w1,另一半类别为w2

#coding:utf-8
import numpy as np

np.random.seed(4294967295) 

mu_vec1 = np.array([0,0,0])
cov_mat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值