专栏首页WD学习记录机器学习 学习笔记(15) 低维嵌入 主成分分析

机器学习 学习笔记(15) 低维嵌入 主成分分析

低维嵌入

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

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

若要求原始空间中样本之间的距离在低维空间中得以保持,即多维缩放(Multiple Dimensional Scaling,MDS)。

假定m个样本在原始空间的距离矩阵为

,其第i行j列的元素

为样本

的距离。我们的目标是获得样本在

维空间的表示

,且任意两个样本在

维空间中的欧式距离等于原始空间中的距离,即

,其中B为降维后的样本内积矩阵,

,有

令降维后的样本Z被中心化,即

,显然,矩阵B的行与列之和均为0,即

,则:

其中

表示矩阵的迹,

,令:

由此可以通过降维前后保持不变的距离矩阵D求取内积矩阵B.

对矩阵B做特征值分解,

,其中

为特征值构成的对角矩阵,

,V为特征向量矩阵,假定其中有

个非零特征值,它们构成对角矩阵

,令

表示相应的特征向量矩阵,则Z可以表达为:

MDS算法描述:

输入:距离矩阵

,其元素

为样本

的距离。低维空间维数

过程:根据

分别计算出

           根据

计算矩阵B

           对矩阵B做特征值分解

           取

个最大特征值所构成的对角矩阵,

为相应的特征向量矩阵

输出:

,每行是一个样本的低维坐标

一般来说,想要获得低维子空间,最简单的是对原始高维空间进行线性变换。基于线性变换来进行降维的方法称为线性降维方法。

主成分分析

主成分分析(Principal Component Analysis,简称PCA)是最常用的一种降维方法。

对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有的样本进行恰当的表达?应该具有两个性质:

  • 最近重构性:样本点到这个超平面的距离足够近
  • 最大可分性:样本点在这个超平面上的投影能尽可能分开

PCA算法描述:

输入:样本集

,低维样本空间数

过程:对所有样本进行中心化:

           计算样本的协方差矩阵

           对协方差矩阵

做特征值分解

           取最大的

个特征值所对应的特征向量

输出:投影矩阵

PCA仅需保留

与样本的均值向量即可通过简单的向量减法和矩阵-向量乘法将新样本投影至低维空间中。显然,低维空间与原始高维空间必有不同,因为对应于最小的

个特征值的特征向量被舍弃了,这是降维导致的结果,但是舍弃这部分信息往往是必要的:一方面,舍弃这部分信息之后能使样本的采样密度增大,这正是降维的重要动机;另一方面,当数据收到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将它们舍弃能在一定程度上起到去燥的效果。

# 代码来自于机器学习实战
# 2个参数:一个参数是用于进行PCA操作的数据集,第二个参数是可选参数,即应用N个特征
# 首先计算并减去原始数据集的平均值,然后计算协方差矩阵及其特征值
# 然后利用argsort函数对特征值进行从小到大排序
# 根据特征值排序的逆序就可以得到最大的N个向量
# 这些向量将构成后面对数据进行转换的矩阵
# 该矩阵则利用N个特征将原始数据转换到新空间中
# 最后原始数据被重构后返回
# 同时,降维之后的数据集也被返回
def pca(dataMat,topNfeat=9999999):
    meanVals=mean(dataMat,axis=0)
    meanRemoved=dataMat-meanVals # 去除平均值
    covMat=cov(meanRemoved,rowvar=0)
    eigVals,eigVects=linalg.eig(mat(covMat))
    eigValInd=argsort(eigVals)
    # 从大到小对N个值排序
    eigValInd=eigValInd[:-(topNfeat+1):-1]
    redEigVects=eigVects[:,eigValInd]
    # 将数据转换到新空间
    lowDDataMat=meanRemoved*redEigVects
    reconMat=(lowDDataMat*redEigVects.T)+meanVals
    return lowDDataMat,reconMat

非线性降维的一种常用方法就是基于核技巧对线性降维方法进行核化

参考:

  1. 《机器学习》
  2. 《机器学习实战》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习 学习笔记(4)牛顿法 拟牛顿法

    的值,函数f(x)有极值的必要条件是在极值点处一阶导数为0,即梯度向量为0.特别是当

  • 机器学习 学习笔记(1)矩阵 导数 SVD

    为奇排列或者偶排列,即其中出现的降序的次数为奇数或者偶数,例如(1,3,2)中降序次数为1,(3,1,2)中降序次数为2。

  • 机器学习深度学习 笔试面试题目整理(3)

    (2)逻辑回归的基本概念    这个最好从广义线性模型的角度分析,逻辑回归是假设y服从Bernoulli分布。

  • 《spss统计分析与行业应用案例详解》:实例十四 两个独立样本的检验

    两独立样本检验也是非参数检验方法的一种,其基本功能是可以判断两个独立的样本是否来自相同分布的总体。这种检验过程是通过分析两个独立样本的均数、中位数、离散趋势、偏...

    统计学家
  • 不好意思,我膨胀了!shader 入门精要!Cocos Creator 3D Shader !

    先找到模型的材质,看看默认使用的是什么effect (一般都是builtin-standard.effect)。

    白玉无冰
  • 推荐收藏 | 如何在实际中计划和执行一个机器学习和深度学习项目

    做研究打比赛和真正的做一个机器学习和深度项目是不一样的,如果你有这方面的困惑的话,可以看看这篇文章。

    Sam Gor
  • Python读书笔记11(循环遍历所有内容)

    前面的文章和大家分享了数字、字符串、列表和元组,我们重新声明这些变量回顾一下! ? 数字、浮点数直接用等号声明 字符串需要将内容用英文单引号或双引号括起来 列...

    用户1332619
  • 推荐收藏 | 如何在实际中计划和执行一个机器学习和深度学习项目

    做研究打比赛和真正的做一个机器学习和深度项目是不一样的,如果你有这方面的困惑的话,可以看看这篇文章。

    石晓文
  • Oracle 12c体系结构挂图

    在下周上海举办的甲骨文全球大会上, 我们为Oracle技术爱好者们精心准备了很多礼品,图片中的“Oracle Database 12c 体系结构图”就是其中之一...

    数据和云
  • Python读书笔记11

    前面的文章和大家分享了数字、字符串、列表和元组,我们重新声明这些变量回顾一下! 数字、浮点数直接用等号声明 字符串需要将内容用英文单引号或双引号括起来 列表是外...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券