Machine Learning 简明教程
Machine Learning - Principal Component Analysis
主成分分析 (PCA) 是机器学习中一种流行的无监督降维技术,用于将高维数据转换为低维表示。PCA 用于通过发现变量之间的底层关系来识别数据中的模式和结构。它通常用于图像处理、数据压缩和数据可视化等应用。
PCA 通过识别数据的主成分 (PC) 来工作,这些是原始变量的线性组合,它们捕捉了数据中的最大变化。第一个主成分占数据中最大的方差,其次是第二个主成分,依此类推。通过仅将数据维度降低到最显着的主成分,PCA 可以简化问题并提高下游机器学习算法的计算效率。
PCA 的步骤如下 −
-
Standardize the data − PCA 要求数据标准化为均值为零和方差为单位。
-
Compute the covariance matrix − PCA 计算标准化数据的协方差矩阵。
-
Compute the eigenvectors and eigenvalues of the covariance matrix − PCA 然后计算协方差矩阵的特征向量和特征值。
-
Select the principal components − PCA 根据其对应的特征值选择主成分,这些特征值表示每个成分解释的数据方差量。
-
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 轴绘制转换后的数据。
Advantages of PCA
以下是使用主成分分析的优点 −
-
Reduces dimensionality −PCA 对于高维数据集特别有用,因为它可以在保留数据中大部分原始可变性的同时减少特征数量。
-
Removes correlated features −PCA 可以识别和消除相关特征,这有助于提高机器学习模型的性能。
-
Improves interpretability −减少的特征数量可以使我们更容易解释和理解数据。
-
Reduces overfitting −通过降低数据的维数,PCA 可以减少过拟合并提高机器学习模型的泛化能力。
-
Speeds up computation −通过减少特征数量,训练机器学习模型所需的计算速度更快。
Disadvantages of PCA
以下是使用主成分分析的缺点−
-
Information loss −PCA 通过将数据投影到低维空间中来降低数据的维数,这可能导致一些信息丢失。
-
Can be sensitive to outliers −PCA 对离群值很敏感,离群值可能会对产生的主成分产生重大影响。
-
Interpretability may be reduced −虽然 PCA 通过减少特征数量可以提高可解释性,但产生的主成分可能比原始特征更难解释。
-
Assumes linearity −PCA 假设特征之间的关系是线性的,但这并不总成立。
-
Requires standardization −PCA 要求数据标准化,但这并不总是可能或合适的。