資料降維
摘要:
資料降維
分類
PCA(主成分分析降維)
相關係數降維
PCA 降維(不常用)
實現思路
對資料進行
標準化
計算出資料的
相關係數矩陣
...
資料降維
分類
- PCA(主成分分析降維)
- 相關係數降維
PCA 降維(不常用)
實現思路
- 對資料進行 標準化
- 計算出資料的 相關係數矩陣 (是方陣, 維度是nxn, n是特徵的數量)
- 計算出 相關係數矩陣 的特徵值和特徵向量(雖然這裡說的是向量, 但是是矩陣, 這個矩陣的每一列都是特徵值或者特徵向量, 是nxn), 特徵值是每一個特徵的特徵值的集合, 但是在特徵向量是每一個特徵的特徵向量的集合, 前者我們提到的特徵值和特徵向量是集合
- 多特徵值進行降序排序
- 根據已經得到的特徵值計算出貢獻率和累計貢獻率(主要看累計貢獻率, 單單一個貢獻率指的是一個主成分儲存的原始特徵的資訊, 累計貢獻率是總共儲存的原始特徵資訊)
- 設定資訊閾值T, 一般設定為0.9, 如果大於T, 則記錄下來當前的位置k(k也就是我們選擇的主成分的個數, 主成分就是特徵, 也就是一列 )
- 根據k選擇主成分對應的特徵向量
- 將標準化之後的資料(矩陣) 右乘 在上一步中選擇出來的特徵向量(在這一步得到的矩陣就是m x new_n維度的了), 得到的就是主成分的分數, 也就是降維之後的資料集合
虛擬碼
X = load('data.xlsx', 'B1:I11'); m = size(X, 1); % m 表示樣本的數量 n = size(X, 2); % n 表示特徵的數量 % 資料標準化 for i = 1:m SX(:, i) = (X(:, i) - mean(X(:, i))) / std(X(:, i)); end % 計算相關係數 CM = corrcoef(SX); % V 是特徵向量, D 是特徵值 [V D] = eig(CM); % 對D特徵值進行降序排序, 將結果儲存到DS的第一列 for i = 1:n DS(:, 1) = D(n + 1 - i, n + 1 - i); end % 計算貢獻率和累計貢獻率 for i = 1:n % 第二列為當前單個, 每一個, 主成分的貢獻率 DS(:, 2) = D(i, 1) / sum(D(:, 1)); % 第三列為到當前主成分的累計貢獻率 DS(:, 3) = sum(D(1:i, 1)) / sum(D(:, 1)); end % 選擇主成分 T = 0.9; for i = 1:n if DS(:, i) > T k = i; break; end end % 獲取主成分對應的特徵向量 for i = 1:n PV(:, i) = DS(:, n + 1 - i); end % 獲取新的特徵樣本 X_new = SX * PV;
相關係數降維
- 公式:\[r=\sum_{j=1}^{m}{{(x_{j}-\overline{x_{j}})({y_{j}-\overline{y_{j}}})}\over{std(x_{j})std(y_{j})}}\]
- 如果|r|在[0.7, 1]時表示強線性關係, 說明x和y有很緊密的線性關係
- 如果|r|在[0.5, 0.7]時表示中線性關係
- 如果|r|在[0.2, 0.5]時表示低線性關係
- 如果|r|在[0, 0.2]時表示沒有關係
- r > 0表示正相關, r < 0表示負關係