热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

机器学习:降维算法核主成分分析KPCA算法原理推导

我的小程序:待办计划:给自己立个小目标吧!说真的,刚开始接触机器学习,一看到带“核”字的算法就头疼࿰

我的小程序:


待办计划:给自己立个小目标吧!

说真的,刚开始接触机器学习,一看到带“核”字的算法就头疼(-…-),没高人指引,总觉得理解起来费劲,也不确定理解的对不对。可能是因为这个“核”有点抽象,没有具体形式(形式不确定),操作很风骚。当然到现在也不敢说自己有多理解,只能扯扯目前所理解到的核主成分分析KPCA。

PCA是简单的线性降维的方法,KPCA则是其非线性的扩展,可以挖掘到数据集中的非线性信息

KPCA的主要过程是:

  1. 首先将原始数据非线性映射到高维空间;
  2. 再把第1步中的数据从高维空间投影降维到需要的维数d'

可以看出,KPCA只是比PCA多了一步映射到高维空间的操作,降维的操作是一样的。所以,KPCA最终投影到的超平面也应满足PCA中的最近重构性或最大可分性。于是KPCA最终的投影向量w_{j}也应满足PCA中的等式(参见:机器学习:降维算法-主成分分析PCA算法两种角度的推导):

ZZ^{T}w_{j} = \lambda_{j}w_{j}.

即:

(\sum_{i=1}^{m}z_{i}z_{i}^{T})w_{j} = \lambda_{j}w_{j}.

其中z_{i}是样本点x_{i}映射到的高维空间中的像。进一步得:

\begin{align*} w_{j} &= \frac{1}{\lambda_{j}}(\sum_{i=1}^{m}z_{i}z_{i}^{T})w_{j}\\ &= \sum_{i=1}^{m}z_{i}\frac{z_{i}^{T}w_{j}}{\lambda_{j}}\\ &= \sum_{i=1}^{m}z_{i}\alpha _{i}^{j} \end{align*}.

其中\alpha _{i}^{j} = \frac{z_{i}^{T}w_{j}}{\lambda_{j}}\alpha _{i}的第j个分量。

假设z_{i}是由原始空间的样本x_{i}通过映射\phi产生,即z_{i} = \phi (x_{i}),i=1,2,...,m.若映射已知,那么容易求到z_{i}和投影向量w_{j},问题就解决了。但通常情况下,是不知道\phi的具体形式的(后面会发现,我们不用知道\phi的具体形式一样能求解!)。不管怎样,先表达出\phi这种映射关系:

(\sum_{i=1}^{m}z_{i}z_{i}^{T})w_{j} = \lambda_{j}w_{j}写成:

(\sum_{i=1}^{m}\phi (x_{i})\phi (x_{i})^{T})w_{j} = \lambda_{j}w_{j}................................................................(1)

w_{j} = \sum_{i=1}^{m}z_{i}\alpha _{i}^{j}写成:

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

将(2)式代入(1)式得:

(\sum_{i=1}^{m}\phi (x_{i})\phi (x_{i})^{T})\sum_{i=1}^{m}\phi (x_{i})\alpha _{i}^{j} = \lambda_{j}\sum_{i=1}^{m}\phi (x_{i})\alpha _{i}^{j}................................(3)

记:

\Phi = \{\phi (x_{1}),\phi (x_{2}),...,\phi (x_{m})\},

\alpha ^{j} = (\alpha _{1}^{j},\alpha _{2}^{j},...,\alpha _{m}^{j})^{T}.

\Phi\alpha ^{j}代入(3)式得:

\Phi \Phi ^{T}\Phi \alpha ^{j} = \lambda_{j}\Phi\alpha ^{j}................................................................................(4)

关键的地方到了,接下来引入核函数:

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

核函数本质上也就是个函数,跟y=kx没啥区别,特殊之处在于,它的计算结果表达了变量x_{i},x_{j}在高维空间的内积\phi (x_{i})^{T}\phi (x_{i})值。就是说,本来是在高维空间(甚至无限维空间)计算的内积\phi (x_{i})^{T}\phi (x_{i}),可以在原始较低维的空间通过核函数\kappa (*,*)计算得到。

有常见的几种核函数,到底选用哪种核函数,可能需要去尝试,看哪种核函数产生的效果好(比如在KPCA中,就是看哪种核函数带来的降维效果更好)。

之所以引入核函数,可以认为有两方面原因:

  1. 映射关系\phi未知;
  2. 映射到的高维空间维数可能非常高(甚至无限维),在高维空间计算\phi (x_{i})^{T}\phi (x_{i})开销太大,十分困难。

核函数对应的核矩阵为:

K = \begin{bmatrix} \kappa (x_{1},x_{1})& . & . & \kappa (x_{1},x_{m})\\ . & . & . & .\\ . & . & . & .\\ \kappa (x_{m},x_{1}) & . & . & \kappa (x_{m},x_{m}) \end{bmatrix} = \Phi ^{T}\Phi.

(4)式两边左乘\Phi ^{T}得:

\Phi ^{T}\Phi \Phi ^{T}\Phi \alpha ^{j} = \lambda_{j}\Phi ^{T}\Phi\alpha ^{j},

把核矩阵K代入上式,可得:

K^{2}\alpha ^{j} = \lambda_{j}K\alpha ^{j}:

两边去掉K,得:

K\alpha ^{j} = \lambda_{j}\alpha ^{j}.

(这里还是没搞清楚,为什么能直接去掉K,理论上K是可逆矩阵时才能直接消去。但核函数确定的核矩阵只要求是半正定的,半正定矩阵又不一定是可逆的。这里去掉K的依据是什么?望博友指点。)

可以看到,通过核函数的这一波操作,原始空间到高维空间的映射变得无形了,最终得到的式子并没有看到映射\phi的影子,这就是“核”操作的风骚之处。我们不知道映射\phi的具体形式,我们也不用知道它的形式。

显然,上式是特征分解问题,取K的最大的d'个特征值对应的特征向量即可。

对于新样本x,其投影后第j(j = 1,2,...,d')维坐标为:

\begin{align*} x'_{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) \end{align*}.

可以看到,KPCA需要对所有样本求和,计算开销还是挺大的。

待办计划:给自己立个小目标吧!

 

参考资料:周志华《机器学习》

参考博文:

核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程 

机器学习:核函数和核矩阵简介

相关博文:机器学习:降维算法-主成分分析PCA算法两种角度的推导


推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • Python中HOG图像特征提取与应用
    本文介绍如何在Python中使用HOG(Histogram of Oriented Gradients)算法进行图像特征提取,探讨其在目标检测中的应用,并详细解释实现步骤。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
author-avatar
你就是一朵奇葩_518
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有