目录
博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有需要可以联系作者我哦!
🍅文末三连哦🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
前言
高维数据降维是指将具有大量特征的数据转换为具有更少特征的数据的过程。在现实世界中,许多数据集具有大量的特征,这可能会增加建模的复杂性,并导致维度灾难(Curse of Dimensionality)问题的出现。高维数据降维的目的是减少特征的数量,同时保留数据中最重要的信息,以便更好地理解数据、可视化数据、加快计算速度和提高模型性能。
思想原理:
维度灾难:随着特征数量的增加,数据空间的维度也会增加。高维数据具有稀疏性和冗余性,这可能会导致模型过拟合、计算复杂度增加和样本稀疏性等问题,即维度灾难。
信息压缩:高维数据降维的目标是在保留数据中最重要信息的前提下,减少数据的维度。通过降维,可以将数据中的冗余信息和噪声过滤掉,从而使得数据更加紧凑和易于处理。
特征选择和特征提取:高维数据降维可以通过特征选择(Feature Selection)和特征提取(Feature Extraction)两种方式实现。特征选择是从原始特征中选择最重要的一部分特征,而特征提取则是通过某种变换将原始特征转换为新的特征空间,以减少特征的数量。
降维方法:常见的高维数据降维方法包括主成分分析(PCA)、线性判别分析(LDA)、t-分布邻近嵌入(t-SNE)、自编码器(Autoencoder)等。这些方法在保留数据信息的同时,可以有效地减少数据的维度。
一、常见数据降维方法简介
1、降维方法分类情况
特征选择:
- 特征选择是从原始特征集中选择最重要的特征子集,保留最相关的特征,而丢弃不相关的或冗余的特征。这些方法不改变原始特征的形式,只是选择性地保留或删除特征。
- 常见的特征选择方法包括:
- 过滤法(Filter Methods):根据特征的统计量(如方差、相关系数等)或其他评价标准对特征进行评估和排序,然后选择排名靠前的特征子集。
- 包装法(Wrapper Methods):通过建立预测模型来评估特征子集的性能,根据模型性能选择最佳特征子集。常见的包装法包括递归特征消除(Recursive Feature Elimination)和正向逐步选择(Forward Stepwise Selection)等。
- 嵌入法(Embedded Methods):在模型训练过程中,通过正则化项或其他方式对特征进行选择,例如 L1 正则化(Lasso)和决策树剪枝等。
特征提取:
- 特征提取是通过某种变换将原始特征转换为新的特征空间,以减少特征的数量,同时保留数据的主要信息。这些方法可以将原始特征进行线性或非线性变换,从而得到新的特征表示。
- 常见的特征提取方法包括:
- 主成分分析(Principal Component Analysis,PCA):通过线性变换将原始特征投影到新的特征空间,使得投影后的特征具有最大的方差。PCA 是一种常用的线性降维方法。
- 线性判别分析(Linear Discriminant Analysis,LDA):在保持类别信息的同时最大化类间距离和最小化类内距离,从而得到新的特征空间。LDA 通常用于分类任务。
- t-分布邻近嵌入(t-distributed Stochastic Neighbor Embedding,t-SNE):通过非线性变换将高维数据映射到低维空间,使得相似的样本在低维空间中距离更近。t-SNE 通常用于可视化高维数据。
- 自编码器(Autoencoder):通过神经网络模型将原始特征压缩到低维空间,然后再将低维表示重构为原始特征,以此来学习数据的有效表示。自编码器在无监督学习中广泛应用于特征学习和数据降维。
二、常见数据降维分析之主成分分析
2.1背景介绍
主成分分析(Principal Component Analysis,PCA)是一种常用的线性降维技术,用于将高维数据转换为低维数据,同时保留尽可能多的原始数据信息。PCA 旨在找到数据中最重要的特征,并将其映射到新的特征空间上,以便更好地理解数据结构、可视化数据、减少计算成本和提高模型性能。接下来,我们将深入介绍 PCA 的思想原理、数学公式、实现步骤以及应用场景。
2.2思想原理
PCA 的核心思想是通过线性变换将原始数据投影到新的特征空间,使得投影后的特征具有最大的方差。这意味着,通过 PCA 转换后的特征保留了原始数据中包含的大部分信息,同时尽可能减少了特征之间的相关性。具体来说,PCA 的实现步骤如下:
1. 中心化数据:首先,对原始数据进行中心化处理,即将每个特征的均值减去其平均值,以确保数据的均值为零。
2. 计算协方差矩阵:接下来,计算中心化后的数据的协方差矩阵。协方差矩阵反映了不同特征之间的相关性程度,其对角线上的元素表示每个特征的方差,非对角线上的元素表示不同特征之间的协方差。
3. 求取特征值和特征向量:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。特征值表示了数据在特征空间上的方差,而特征向量表示了数据在特征空间上的方向。
4. 选择主成分:按照特征值的大小对特征向量进行排序,选择前 k 个特征向量作为主成分(Principal Components),其中 k 是希望降维后的维度。
5. 投影到新空间:将原始数据投影到由选定的主成分构成的新的特征空间上,得到降维后的数据。
2.3数学公式
1. 数据中心化:
若原始数据矩阵为,其中每行表示一个样本,每列表示一个特征,则中心化后的数据矩阵
可以表示为:
其中,是每个特征的均值向量。
2. 协方差矩阵:
对中心化后的数据矩阵计算协方差矩阵
:
其中,是样本数量。
3. 特征值分解:
对协方差矩阵进行特征值分解:
其中,是第
个特征值,
是对应的特征向量。
4. 选择主成分:
根据特征值的大小对特征向量进行排序,选择前 k 个特征向量作为主成分。
5. 投影到新空间:
将原始数据矩阵投影到由选定的主成分构成的新的特征空间上,得到降维后的数据矩阵
:
其中,是包含前 k 个特征向量的矩阵。
2.4PCA算法实现(Python完整代码)
首先我们基于NumPy 来生成两个类别共100个样本点。第一步,我们将使用 NumPy 库生成随机的样本点,然后使用 Matplotlib 库进行可视化。每个样本点都有三个特征,代表三维空间中的坐标。我们将随机生成两个类别的样本点,并将它们可视化出来。
import numpy as np
import matpl