【机器学习】面试问答:PCA算法介绍?PCA算法过程?PCA为什么要中心化处理?PCA为什么要做正交变化?PCA与线性判别分析LDA降维的区别?

简介: 本文介绍了主成分分析(PCA)算法,包括PCA的基本概念、算法过程、中心化处理的必要性、正交变换的目的,以及PCA与线性判别分析(LDA)在降维上的区别。

面试问答:PCA算法介绍?PCA算法过程?PCA为什么要中心化处理?PCA为什么要做正交变化?

(1)简单介绍一下PCA

主成分分析(Principal componet analysis,PCA) 是一种无监督学习方法,利用正交变换把线性相关变量表示的观测数据转换为几个由线性无关变量表示的数据,线性无关的变量成为主成分。主成分的个数通常小于原始变量的个数,属于降维方法。根据分解协方差矩阵的策略,分为两种PCA方法,第一种是基于特征值分解协方差矩阵实现PCA算法,第二种是基于奇异值分解法(SVD)分解协方差矩阵实现PCA算法。

(2)PCA的算法过程

  • 对样本数据中心化处理
  • 求样本协方差矩阵
  • 对协方差矩阵进行特征值分解,将特征值从大到小排列
  • 取特征值前d大的特征向量$w1​,w2​,...,wd​$,通过以下映射将n维样本映射到d维度。

$$X_i^{’} = [w_1^Tx_i,w_2^Tx_i,...,w_d^Tx_i]^T$$

其中协方差分解,具体查看博客PCA 主成分分析算法过程及原理讲解
(3)PCA为什么要中心化

把坐标原点放在数据的中心,找方差最大的方向,如果不放在中心,坐标原点就是数据的旁边,映射不到坐标上。

具体讲解看视频解析:B站讲解PCA

(4)PCA的主成分是什么

主成分分析(Principal componet analysis,PCA) 是一种无监督学习方法,利用正交变换把线性相关变量表示的观测数据转换为几个由线性无关变量表示的数据,线性无关的变量称为主成分。

(5)PCA 中为什么要做正交变换?

PCA 的思想是将 n 维特征映射到 d 维上(d<n),这 d 维是全新的正交特征。这 d维特征称为主成分,是重新构造出来的 d 维特征,而不是简单地从 n 维特征中去除其余 n-d维特征。PCA 的目的是选择更少的主成分,那些选上的主成分能够解释数据集中最大方差。通过正交变换,各主成分的相对位置不发生变化,它只能改变点的实际坐标。
(6)PCA与线性判别分析LDA降维的区别?

  • PCA是非监督的学习算法,LDA是有监督的学习算法,考虑了类别标签
  • PCA选择的是投影后数据方差最大的方向。PCA假设方差越大,信息量越大,用主成分来表示原始数据可以去除冗余的维度,达到降维。LDA选择的是投影后类内方差小,类间方差大的方向,用到了类别标签信息,为了找到数据中具有判别性的维度,使得原始数据在这些方向上投影后,不同类别尽可能区分开。
目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 数据处理
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
探测外太空中的系外行星是天文学和天体物理学的重要研究领域。随着望远镜观测技术的进步和大数据的积累,科学家们已经能够观测到大量恒星的光度变化,并尝试从中识别出由行星凌日(行星经过恒星前方时遮挡部分光线)引起的微小亮度变化。然而,由于数据量巨大且信号微弱,传统方法难以高效准确地识别所有行星信号。因此,本项目旨在利用机器学习技术,特别是深度学习,从海量的天文观测数据中自动识别和分类系外行星的信号。这要求设计一套高效的数据处理流程、构建适合的机器学习模型,并实现自动化的预测和验证系统。
32 1
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
|
18天前
|
机器学习/深度学习 存储 数据挖掘
Hologres 与机器学习的融合:为实时分析添加预测性分析功能
【9月更文第1天】随着数据科学的发展,企业越来越依赖于从数据中获取洞察力来指导决策。传统的数据仓库主要用于存储和查询历史数据,而现代的数据仓库如 Hologres 不仅提供了高性能的查询能力,还能够支持实时数据分析。将 Hologres 与机器学习技术相结合,可以在实时数据流中引入预测性分析,为企业提供更深入的数据洞见。本文将探讨如何将 Hologres 与机器学习集成,以便实现实时的预测性分析。
42 4
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
基于机器学习的一线城市租房价格预测分析与实现,实现三种算法预测
本文通过数据采集、处理、特征选择和机器学习建模,对一线城市租房价格进行预测分析,比较了随机森林、一元线性回归和多元线性回归模型,并发现随机森林模型在预测租房价格方面表现最佳,为租房市场参与者提供决策支持。
|
29天前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
30天前
|
Java
【Java基础面试四】、介绍一下Java的数据类型
这篇文章介绍了Java的数据类型,包括8种基本数据类型(整数、浮点、字符、布尔)和3类引用数据类型(数组、类、接口),并提供了基本数据类型所占内存空间和数据范围的详细信息。
|
30天前
|
Java C++
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
这篇文章讨论了Java单继承的设计原因,指出Java不支持多继承主要是为了避免方法名冲突等混淆问题,尽管Java类不能直接继承多个父类,但可以通过接口和继承链实现类似多继承的效果。
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
|
29天前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
|
29天前
|
Java
【Java基础面试三十七】、说一说Java的异常机制
这篇文章介绍了Java异常机制的三个主要方面:异常处理(使用try、catch、finally语句)、抛出异常(使用throw和throws关键字)、以及异常跟踪栈(异常传播和程序终止时的栈信息输出)。
|
29天前
|
Java
【Java基础面试三十八】、请介绍Java的异常接口
这篇文章介绍了Java的异常体系结构,主要讲述了Throwable作为异常的顶层父类,以及其子类Error和Exception的区别和处理方式。