機器學習——降維

主成分分析(PCA)

1.主成分分析法是降維的最常使用的算法。
2.在PCA中,要做的是找到一個方向向量(Vector direction),當把所有的數據都投射到該向量上時,希望投射距離均方差能儘可能地小。
3.方向向量是一個經過原點的向量,而投射誤差是從特徵向量向該方向向量作垂線的長度。
4.主成分分析最小化的是投射距離誤差(Projected Error)。

主成分分析問題

1.PCA將n個特徵降維到k個,可用來進行數據壓縮。
(1).如果100維的向量最後可以用10維來表示,那麼壓縮率爲90%。
(2).同樣圖像處理領域的KL變換使用PCA 做圖像壓縮。
(3).但PCA 要保證降維後,還要保證數據的特性損失最小。
2.PCA 技術的一大好處是對數據進行降維的處理。
(1).對新求出的“主元”向量的重要性進行排序,根據需要取前面最重要的部分,將後面的維數省去,可以達到降維從而簡化模型或是對數據進行壓縮的效果。
(2).同時最大程度的保持了原有數據的信息。
這裏要注意線性迴歸的誤差是預測值向x軸作垂線,主成分分析是預測值向模型作垂線
在這裏插入圖片描述

奇異值分解(SVD)

1.計算協方差矩陣A:
A = Sigma=1nXXT\sum = \frac{1}{n}X'X'^T
在這裏插入圖片描述
(1) 當 X, Y 的聯合分佈像上圖那樣時,大致上有: X 越大 Y 也越大, X 越小 Y 也越小,這種情況,稱爲“正相關”。
在這裏插入圖片描述
(2) 當 X, Y 的聯合分佈像上圖那樣時,大致上有: X 越大 Y 越小, X 越小 Y 也越小,這種情況,稱爲“負相關”。
在這裏插入圖片描述
(3) 當 X, Y 的聯合分佈像上圖那樣時,大致上有:既不是X 越大Y 也越大,也不是 X 越大 Y 也越小,這種情況,稱爲“不相關”。

2.計算協方差矩陣A的特徵向量矩陣U
要滿足AU = US
A :協方差矩陣
S :特徵值矩陣
U :特徵向量矩陣

數據降維與重建

1.如果希望將數據從n維降至k維,只需要從U中選取前K個向量,獲得一個n×k維度的矩陣,我們用Ureduce表示。
2.然後通過如下計算獲得要求的新特徵數據集Z:Z = XUreduce

應用PCA的建議

1.壓縮
減少內存及磁盤的數據需求
加速學習算法

2.可視化

3.注意PCA不是處理過擬合的一個好方法,處理過擬合應使用正則化代替

代碼實現

import matplotlib.pyplot as plt
# 降維
from sklearn.decomposition import PCA
from sklearn.datasets import load_breast_cancer

# 讀取數據(調用乳腺癌數據集)
data = load_breast_cancer()
x = data.data
y = data.target
print(y)

# 加一個降維後的維度
pca = PCA(n_components=2)

# 訓練模型並返回一個降維後的模型
X_new = pca.fit_transform(x)

# 畫圖
plt.title('癌症數據集分佈')
plt.scatter(X_new[y == 0, 0], X_new[y == 0, 1],label=data.target_names[1])
plt.scatter(X_new[y == 1, 0], X_new[y == 1, 1],label=data.target_names[0])
plt.legend()
plt.show()

效果展示

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章