機器學習 - 主成分分析



主成分分析 (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 要求資料標準化,這可能並不總是可行或合適的。

廣告