機器學習實操 第一部分 機器學習基礎 第8章 降維技術
內容概要
第8章探討了降維技術,這些技術在處理高維數據時至關重要。高維數據不僅會使訓練過程變得極其緩慢,還會增加找到良好解決方案的難度,這就是所謂的維度災難問題。幸運的是,在實際問題中,通常可以通過降維技術顯著減少特征數量,將難以處理的問題轉化為可處理的問題。本章詳細介紹了降維的主要方法(投影和流形學習),并深入探討了三種流行的降維技術:PCA(主成分分析)、隨機投影和局部線性嵌入(LLE)。通過這些技術,讀者將了解如何應對維度災難,并提升模型的訓練效率和性能。
主要內容
-
維度災難
- 定義:高維空間中數據的行為與低維空間截然不同,導致訓練實例稀疏分布,增加過擬合風險。
- 影響:高維數據需要指數級增長的訓練實例來保持相同的密度,這在實際中是不可行的。
-
降維的主要方法
- 投影:通過將數據投影到低維子空間來減少維度。適用于數據在低維子空間中分布的情況。
- 流形學習:通過建模數據所在的低維流形結構來減少維度。適用于數據在高維空間中形成低維流形的情況。
-
PCA(主成分分析)
- 原理:識別數據方差最大的方向(主成分),并將數據投影到這些方向上。
- 步驟:計算主成分,選擇保留方差最大的方向,投影數據。
- 應用:用于數據壓縮、可視化和預處理。
-
隨機投影
- 原理:通過隨機線性投影將數據映射到低維空間,同時保持數據間的距離關系。
- 優點:簡單、快速、內存高效,適用于高維數據。
-
局部線性嵌入(LLE)
- 原理:通過保留數據局部線性關系來展開扭曲的流形結構。
- 步驟:識別每個實例的最近鄰,構建權重矩陣,找到低維表示以保留局部關系。
- 應用:適用于非線性數據的降維。
-
其他降維技術
- MDS(多維縮放):保留實例間的距離。
- Isomap:保留測地線距離。
- t-SNE:用于可視化,強調相似實例的聚集。
- LDA(線性判別分析):用于分類任務的降維。
關鍵代碼和算法
8.1 PCA降維
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris# 加載數據
iris = load_iris()
X = iris.data
y = iris.target# 應用PCA降維到2維
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)# 輸出方差解釋比例
print("Explained variance ratio:", pca.explained_variance_ratio_)# 可視化降維后的數據
import matplotlib.pyplot as plt
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()
8.2 隨機投影降維
from sklearn.random_projection import GaussianRandomProjection
from sklearn.datasets import fetch_openml# 加載MNIST數據
mnist = fetch_openml('mnist_784', as_frame=False)
X_train, y_train = mnist.data[:60_000], mnist.target[:60_000]# 應用隨機投影降維
gaussian_rnd_proj = GaussianRandomProjection(eps=0.1, random_state=42)
X_reduced = gaussian_rnd_proj.fit_transform(X_train)# 輸出降維后的形狀
print("Reduced shape:", X_reduced.shape)
8.3 LLE降維
from sklearn.manifold import LocallyLinearEmbedding
from sklearn.datasets import make_swiss_roll# 生成Swiss roll數據
X_swiss, t = make_swiss_roll(n_samples=1000, noise=0.2, random_state=42)# 應用LLE降維
lle = LocallyLinearEmbedding(n_components=2, n_neighbors=10, random_state=42)
X_unrolled = lle.fit_transform(X_swiss)# 可視化降維后的數據
plt.scatter(X_unrolled[:, 0], X_unrolled[:, 1], c=t)
plt.xlabel('LLE1')
plt.ylabel('LLE2')
plt.show()
精彩語錄
-
中文:降維技術不僅加快了訓練速度,降低了過擬合風險,還使得數據可視化成為可能。
英文原文:Dimensionality reduction not only speeds up training and reduces the risk of overfitting but also makes data visualization possible.
解釋:強調了降維技術的三大優勢。 -
中文:PCA通過識別數據方差最大的方向來選擇主成分。
英文原文:PCA identifies the directions of maximum variance in the data to select principal components.
解釋:介紹了PCA的核心思想。 -
中文:隨機投影利用隨機線性投影來保持數據間的距離關系。
英文原文:Random projection uses random linear projections to preserve the distance relationships between data points.
解釋:描述了隨機投影的工作原理。 -
中文:LLE通過保留數據的局部線性關系來展開流形。
英文原文:LLE preserves local linear relationships to unroll the manifold.
解釋:介紹了LLE的基本原理。 -
中文:t-SNE是一種強大的可視化工具,能夠將高維數據映射到二維或三維空間。
英文原文:t-SNE is a powerful tool for visualizing high-dimensional data by reducing it to two or three dimensions.
解釋:指出了t-SNE的適用場景。
總結
通過本章的學習,讀者將掌握降維技術的核心概念和應用方法。這些內容包括維度災難的原理、降維的主要方法(投影和流形學習),以及PCA、隨機投影和LLE等具體技術。降維技術不僅能夠提升模型的訓練效率,還能幫助發現數據中的隱藏模式,提高模型的性能和可解釋性。這些技術在處理高維數據時尤為重要,是機器學習中的關鍵工具。