Machine Learning 简明教程

Machine Learning - Principal Component Analysis

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

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

PCA 的步骤如下 −

  1. Standardize the data − PCA 要求数据标准化为均值为零和方差为单位。

  2. Compute the covariance matrix − PCA 计算标准化数据的协方差矩阵。

  3. Compute the eigenvectors and eigenvalues of the covariance matrix − PCA 然后计算协方差矩阵的特征向量和特征值。

  4. Select the principal components − PCA 根据其对应的特征值选择主成分,这些特征值表示每个成分解释的数据方差量。

  5. Project the data onto the new feature space − PCA 将数据投影到由选定的主成分定义的新特征空间上。

Example

以下是使用 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()

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

Output

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

principal component analysis
Explained variance ratio: [0.72962445 0.22850762]

Advantages of PCA

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

  1. Reduces dimensionality −PCA 对于高维数据集特别有用,因为它可以在保留数据中大部分原始可变性的同时减少特征数量。

  2. Removes correlated features −PCA 可以识别和消除相关特征,这有助于提高机器学习模型的性能。

  3. Improves interpretability −减少的特征数量可以使我们更容易解释和理解数据。

  4. Reduces overfitting −通过降低数据的维数,PCA 可以减少过拟合并提高机器学习模型的泛化能力。

  5. Speeds up computation −通过减少特征数量,训练机器学习模型所需的计算速度更快。

Disadvantages of PCA

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

  1. Information loss −PCA 通过将数据投影到低维空间中来降低数据的维数,这可能导致一些信息丢失。

  2. Can be sensitive to outliers −PCA 对离群值很敏感,离群值可能会对产生的主成分产生重大影响。

  3. Interpretability may be reduced −虽然 PCA 通过减少特征数量可以提高可解释性,但产生的主成分可能比原始特征更难解释。

  4. Assumes linearity −PCA 假设特征之间的关系是线性的,但这并不总成立。

  5. Requires standardization −PCA 要求数据标准化,但这并不总是可能或合适的。