降维技术解析

降维技术是指在保留数据核心信息的同时减少特征(列)的数量。以下是降维技术的必要性:

  • 数据压缩,减少存储空间需求。
  • 降低计算时间。
  • 去除冗余特征。
  • 消除相关特征。
  • 将数据维度降低到2D或3D,便于精确绘图和可视化,更清晰地观察模式。
  • 有助于去除噪声,从而提高模型性能。

降维技术如何工作(以PCA为例)

降维技术有多种方法,如PCA、ICAt-SNE等。将以PCA为例进行说明。

首先,需要理解数据中的“信息”。以以下虚构数据为例,包含了人们的年龄、体重和身高。

信息存在于方差中!由于所有人的“身高”都相同,即方差为0,因此它没有增加任何信息,可以在不丢失任何信息的情况下移除“身高”列。

现在知道信息是方差,让理解PCA的工作原理。在PCA中,寻找新的维度(特征),这些维度能够捕获最大的方差(即信息)。

考虑一条通过所有点的蓝点虚线。这条蓝点虚线捕获了所有信息,因此可以不丢失任何信息地用这条蓝点虚线(1维)替换“年龄”和“体重”(2维),从而实现降维(从2维到1维)。这条蓝点虚线被称为主成分。

可能会好奇如何找到这条蓝点虚线(主成分)的,这背后有很多数学原理。可以阅读相关文章来了解详细内容,但简而言之,使用特征值和特征向量来找到能够捕获最大方差的方向。

让通过一个例子来看如何使用PCA。使用了葡萄酒质量数据,它包含了12个特征,如酸度、残糖、氯化物等,以及1600个样本的葡萄酒质量。可以从这里下载Jupyter笔记本并跟随操作。

首先,加载数据。

import numpy as np import pandas as pd from sklearn.decomposition import PCA df = pd.read_csv('winequality-red.csv') df.head() y = df.pop('quality')

加载数据后,移除了葡萄酒的“质量”,因为它是目标特征。现在将对数据进行标准化,因为如果不这样做,PCA将无法找到最优的主成分。例如,有一个以“米”为单位的特征,另一个以“公里”为单位,以“米”为单位的特征将比以“公里”为单位的特征具有更大的方差(1公里=1000米),因此PCA将更加重视方差大的特征。所以,来进行数据标准化。

from sklearn.preprocessing import StandardScaler scalar = StandardScaler() df_scaled = pd.DataFrame(scalar.fit_transform(df), columns=df.columns) df_scaled

现在可以应用PCA了。

pca = PCA() df_pca = pd.DataFrame(pca.fit_transform(df_scaled)) df_pca

应用PCA后,得到了11个主成分。有趣的是,每个主成分捕获了多少方差。

import matplotlib.pyplot as plt pd.DataFrame(pca.explained_variance_ratio_).plot.bar() plt.legend('') plt.xlabel('主成分') plt.ylabel('解释方差');

前5个主成分捕获了大约80%的方差,因此可以替换11个原始特征(酸度、残糖、氯化物等)与新的5个特征,这些新特征包含了80%的信息。因此,将11维降低到了只有5维,同时保留了大部分信息。

PCA也可用于聚类。使用了鸢尾花数据集进行此目的。以下图像将显示使用PCA、ICAt-SNE进行聚类的结果。

  • 独立变量变得不那么可解释。
  • PCA之前必须对数据进行标准化。
  • 信息丢失。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485