机器学习 - 主成分分析



主成分分析 (PCA) 是一种流行的无监督降维技术,用于机器学习,用于将高维数据转换为低维表示。PCA 用于通过发现变量之间潜在的关系来识别数据中的模式和结构。它通常用于图像处理、数据压缩和数据可视化等应用。

PCA 通过识别数据的**主成分 (PC)** 来工作,这些主成分是原始变量的线性组合,捕获了数据中最大的变化。第一个主成分解释了数据中最大的方差,其次是第二个主成分,依此类推。通过将数据的维度降低到仅包含最重要的 PC,PCA 可以简化问题并提高下游机器学习算法的计算效率。

PCA 所涉及的步骤如下:

  • 标准化数据 - PCA 要求数据标准化为均值为零且方差为一的格式。

  • 计算协方差矩阵 - PCA 计算标准化数据的协方差矩阵。

  • 计算协方差矩阵的特征向量和特征值 - 然后,PCA 计算协方差矩阵的特征向量和特征值。

  • 选择主成分 - PCA 根据其相应的特征值选择主成分,特征值指示每个成分解释的数据变化量。

  • 将数据投影到新的特征空间 - PCA 将数据投影到由选定的主成分定义的新特征空间中。

示例

以下是如何使用 scikit-learn 库在 Python 中实现 PCA 的示例:

# Import the necessary libraries
import numpy as np
from sklearn.decomposition import PCA

# Load the iris dataset
from sklearn.datasets import load_iris
iris = load_iris()

# Define the predictor variables (X) and the target variable (y)
X = iris.data
y = iris.target

# Standardize the data
X_standardized = (X - np.mean(X, axis=0)) / np.std(X, axis=0)

# Create a PCA object and fit the data
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_standardized)

# Print the explained variance ratio of the selected components
print('Explained variance ratio:', pca.explained_variance_ratio_)

# Plot the transformed data
import matplotlib.pyplot as plt
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()

在此示例中,我们加载鸢尾花数据集,标准化数据,并创建一个具有两个成分的 PCA 对象。然后,我们将 PCA 对象拟合到标准化数据,并将数据转换到两个主成分上。我们打印所选成分的解释方差比率,并使用前两个主成分作为 x 和 y 轴绘制转换后的数据。

输出

执行此代码时,它将生成以下绘图作为输出:

Principal Component Analysis
Explained variance ratio: [0.72962445 0.22850762]

PCA 的优点

以下是使用主成分分析的优点:

  • 降低维度 - PCA 对于高维数据集特别有用,因为它可以在保留数据中大部分原始可变性的同时减少特征的数量。

  • 去除相关特征 - PCA 可以识别并去除相关特征,这有助于提高机器学习模型的性能。

  • 提高可解释性 - 减少的特征数量可以使数据更容易解释和理解。

  • 减少过拟合 - 通过降低数据的维度,PCA 可以减少过拟合并提高机器学习模型的泛化能力。

  • 加速计算 - 由于特征数量减少,训练机器学习模型所需的计算速度更快。

PCA 的缺点

以下是使用主成分分析的缺点:

  • 信息丢失 - PCA 通过将其投影到低维空间来降低数据的维度,这可能导致某些信息丢失。

  • 可能对异常值敏感 - PCA 可能对异常值敏感,异常值会对最终的主成分产生重大影响。

  • 可解释性可能会降低 - 虽然 PCA 可以通过减少特征数量来提高可解释性,但最终的主成分可能比原始特征更难以解释。

  • 假设线性 - PCA 假设特征之间的关系是线性的,这可能并不总是正确的。

  • 需要标准化 - PCA 要求数据标准化,这可能并不总是可行或合适的。

广告