机器学习期末复习降维
时间: 2024-12-27 22:18:50 浏览: 6
### 机器学习期末复习中的降维方法与技巧
#### 主成分分析 (PCA)
主成分分析是一种常用的线性降维技术,通过正交变换将一组可能存在相关性的变量转换成一组线性不相关的变量。这些新变量被称为“主成分”。第一主成分具有最大的方差,在此之后的每一个主成分都尽可能多地解释剩余的数据变异。
```python
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
```
这种方法能够有效地减少特征空间维度的同时保留大部分信息[^1]。
#### t分布随机邻域嵌入 (t-SNE)
t-SNE 是一种非线性降维算法,特别适合于高维数据可视化。它通过计算输入空间中样本之间的概率相似度,并尝试在低维空间中找到对应的映射点使得其间的距离关系保持一致来实现这一点。
```python
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, random_state=0)
Y_tsne = tsne.fit_transform(X)
```
尽管 t-SNE 可以很好地捕捉局部结构并提供直观的结果展示,但它并不总是能很好地保存全局几何特性[^2]。
#### 线性判别分析 (LDA)
不同于无监督的方法如 PCA 和 t-SNE,LDA 属于有监督的学习方式。给定类别标签的情况下,LDA 寻找那些可以最大化类间分离而最小化同类内差异的方向来进行投影。这有助于提高分类性能。
```python
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
lda = LDA(n_components=2)
X_lda = lda.fit_transform(X, y)
```
对于多分类问题来说,LDA 的效果尤为显著,因为它考虑到了不同类别之间的真实边界。
#### 自编码器 (Autoencoder)
自编码器属于神经网络的一种特殊形式,旨在重构自身的输入而不是预测目标值。隐藏层通常被设计得比输入/输出层更窄,从而迫使模型学会压缩表示法。经过训练后的中间层权重可用于提取原始数据的关键特征作为新的低维表达。
```python
import tensorflow.keras as keras
input_layer = keras.layers.Input(shape=(784,))
encoded = keras.layers.Dense(32, activation='relu')(input_layer)
decoded = keras.layers.Dense(784, activation='sigmoid')(encoded)
autoencoder = keras.models.Model(input_layer, decoded)
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
autoencoder.fit(x_train, x_train,
epochs=50,
batch_size=256,
shuffle=True,
validation_data=(x_test, x_test))
```
这种基于深度学习的技术提供了强大的灵活性和表现力,尤其适用于处理复杂模式下的图像或文本等领域内的任务。
阅读全文