這篇是繼PCA和KPCA、t-SNE三種降維方法后的第4篇。
在大數(shù)據(jù)時代,我們不斷面臨高維度數(shù)據(jù)的挑戰(zhàn)。為了更好地理解這些數(shù)據(jù),MDS算法應(yīng)運(yùn)而生。本文將詳細(xì)介紹MDS算法的原理、步驟及其應(yīng)用場景,幫助你深入了解這個強(qiáng)大的降維工具。
一、關(guān)于MDS算法
多維尺度變換(Multidimensional Scaling,簡稱MDS)算法是一種數(shù)據(jù)降維和可視化方法,最早起源于心理學(xué)領(lǐng)域,它能夠?qū)⒏呔S度數(shù)據(jù)轉(zhuǎn)換到低維度空間(如二維或三維),在保持?jǐn)?shù)據(jù)點間距離關(guān)系的同時,讓我們能夠直觀地觀察和分析數(shù)據(jù)。在20世紀(jì)50年代至60年代,研究人員開始嘗試使用MDS來解決心理學(xué)實驗中的數(shù)據(jù)分析問題,主要用于分析個體之間的相似性和差異性。隨著研究的深入和方法的完善,MDS逐漸被廣泛應(yīng)用于社會科學(xué)、生物學(xué)、信息科學(xué)等多個領(lǐng)域。
MDS算法的核心思想是使用距離矩陣來表示數(shù)據(jù)點之間的相似性或關(guān)聯(lián)性。在實際問題中,我們可能需要分析不同類型的數(shù)據(jù),通過將這些數(shù)據(jù)轉(zhuǎn)換為距離矩陣,我們可以利用MDS算法來挖掘數(shù)據(jù)中的結(jié)構(gòu)信息和潛在關(guān)系。
MDS算法通過將高維數(shù)據(jù)降維到二維或三維空間,使得數(shù)據(jù)的可視化分析變得更加直觀。此外,在降維過程中,MDS盡量保持?jǐn)?shù)據(jù)點之間的距離關(guān)系,從而有助于挖掘數(shù)據(jù)中的真實結(jié)構(gòu)。
降維打擊·來自https://www.zcool.com.cn/work/ZMzc1MjcwNjQ=.html
二、MDS的原理是什么?
在MDS算法中,降維映射的原理是通過保持原始空間中數(shù)據(jù)點之間的相對距離來將數(shù)據(jù)從高維空間映射到低維空間。為了便于理解,我們將降維映射過程分為以下幾個步驟:
- 構(gòu)建距離矩陣:首先,我們需要計算原始空間中數(shù)據(jù)點之間的距離。常用的距離度量方法包括歐幾里得距離、Minkowski距離等。通過計算每對數(shù)據(jù)點之間的距離,我們可以構(gòu)建一個距離矩陣。
- 中心化距離矩陣:為了進(jìn)一步處理距離矩陣,我們需要對其進(jìn)行中心化處理,使得數(shù)據(jù)點相對于原點對稱。中心化矩陣的計算方法是:H?=?I?- (1/n) *i*i^T,其中I是單位矩陣,n是數(shù)據(jù)點的數(shù)量,i是一個全1的n維向量,i^T代表對該向量轉(zhuǎn)置。
- 計算內(nèi)積矩陣:通過中心化距離矩陣,我們可以計算內(nèi)積矩陣B。內(nèi)積矩陣表示數(shù)據(jù)點之間的內(nèi)積關(guān)系,可以用于進(jìn)一步分析數(shù)據(jù)的結(jié)構(gòu)。內(nèi)積矩陣B可以通過中心化矩陣H和距離矩陣D的平方形式計算得到:B?= -1/2 *?H?*?D^2 *?H。
- 計算特征值和特征向量:在得到內(nèi)積矩陣B后,我們需要計算其特征值和特征向量。特征值表示數(shù)據(jù)的主要變化方向,特征向量表示對應(yīng)方向上的大小。我們將選取最大的k個特征值及其對應(yīng)的特征向量,作為降維后的k維空間的基。
- 計算降維后的坐標(biāo):將原始數(shù)據(jù)投影到選定的k維基上,我們可以得到降維后的坐標(biāo)。具體計算方法為:新坐標(biāo) = 特征向量矩陣 * 特征值矩陣的平方根。這樣,我們就得到了降維后的數(shù)據(jù)表示。
雖然步驟看起來有點復(fù)雜,但是實際實現(xiàn)還是很簡單的,下面距離說明一下,大家就很容易明白了。
三、MDS算法示例
讓我們用一個關(guān)于水果口味的例子來說明MDS算法的原理。
假設(shè)我們有5種水果:蘋果(A)、香蕉(B)、橙子(C)、葡萄(D)和菠蘿(E)。我們對這些水果進(jìn)行了甜度(Sweetness)、酸度(Sourness)和多汁程度(Juiciness)的評分。評分?jǐn)?shù)據(jù)如下:
A: (6, 4, 5)
B: (8, 1, 3)
C: (5, 7, 6)
D: (7, 3, 4)
E: (4, 6, 8)
我們希望通過MDS算法將這些三維評分?jǐn)?shù)據(jù)降維到二維空間,以便更直觀地分析水果之間的口味關(guān)系。
步驟1:計算距離
我們可以使用歐氏距離(也可以用其他距離計算方法)來計算水果之間的距離。計算結(jié)果如下:
A-B: 4.69
A-C: 3.74
A-D: 2.45
A-E: 3.32
B-C: 6.56
B-D: 3.32
B-E: 6.56
C-D: 5.29
C-E: 2.45
D-E: 5.29
步驟2:構(gòu)建距離矩陣
將計算出的距離整合成一個距離矩陣D:
A B C D E
A 0.0 4.69 3.74 2.45 3.32
B 4.69 0.0 6.56 3.32 6.56
C 3.74 6.56 0.0 5.29 2.45
D 2.45 3.32 5.29 0.0 5.29
E 3.32 6.56 2.45 5.29 0.0
步驟3:中心化距離矩陣
我們需要計算中心化矩陣H。數(shù)據(jù)點的數(shù)量n為5。因此,我們可以得到:
I = | 1 0 0 0 0 |
| 0 1 0 0 0 |
| 0 0 1 0 0 |
| 0 0 0 1 0 |
| 0 0 0 0 1 |
1 = | 1 |
| 1 |
| 1 |
| 1 |
| 1 |
1 * 1^T = | 1 1 1 1 1 |
| 1 1 1 1 1 |
| 1 1 1 1 1 |
| 1 1 1 1 1 |
| 1 1 1 1 1 |
H = I - (1/5) * 1 * 1^T
= | 0.8 -0.2 -0.2 -0.2 -0.2 |
| -0.2 0.8 -0.2 -0.2 -0.2 |
| -0.2 -0.2 0.8 -0.2 -0.2 |
| -0.2 -0.2 -0.2 0.8 -0.2 |
| -0.2 -0.2 -0.2 -0.2 0.8 |
步驟4:計算內(nèi)積矩陣
接下來,我們需要計算內(nèi)積矩陣B。首先,我們需要計算距離矩陣D的平方:
D^2 =
| 0.00 21.98 13.99 6.00 11.02 |
| 21.98 0.00 43.03 11.02 43.03 |
| 13.99 43.03 0.00 28.00 6.00 |
| 6.00 11.02 28.00 0.00 28.00 |
| 11.02 43.03 6.00 28.00 0.00 |
然后,我們用中心化矩陣H和距離矩陣D的平方計算內(nèi)積矩陣B:
B = -1/2 * H * D^2 * H ≈
| 2.12 -2.27 -1.07 1.12 0.11 |
| -2.27 15.33 -8.99 5.21 -9.29 |
| -1.07 -8.99 9.72 -6.07 6.42 |
| 1.12 5.21 -6.07 6.12 -6.37 |
| 0.11 -9.29 6.42 -6.37 9.13 |
步驟5:計算特征值和特征向量
我們需要計算內(nèi)積矩陣B的特征值和特征向量。我們得到了如下特征值和特征向量:
特征值:λ1 ≈ 32.32,λ2 ≈ 6.39
特征向量(對應(yīng)λ1):v1 ≈ (-0.02 0.63 -0.48 0.36 -0.49)
特征向量(對應(yīng)λ2):v2 ≈ (-0.53 0.59 0.33 -0.50 0.10)
我們選取最大的兩個特征值λ1和λ2,以及對應(yīng)的特征向量v1和v2,作為降維后的二維空間的基。
步驟6:計算降維后的坐標(biāo)
我們將原始數(shù)據(jù)投影到選定的二維基上,計算新坐標(biāo)。首先,構(gòu)建特征向量矩陣V和特征值矩陣Λ的平方根:
V =
|-0.02 -0.53 |
|0.63 0.59 |
|-0.48 0.33 |
|0.36 -0.50 |
|-0.49 0.10 |
Λ^(1/2) = | √32.32 0 |
| 0 √6.39 |
然后,我們計算降維后的坐標(biāo):新坐標(biāo) = V * Λ^(1/2)
新坐標(biāo) ≈
|-0.11 -1.33 |
|3.60 1.50 |
|-2.76 0.84 |
|2.02 -1.26 |
|-2.76 0.25 |
最后,我們得到了降維后的二維坐標(biāo):
蘋果(A):(-0.11, -1.33 )
香蕉(B):(3.60, 1.50)
橙子(C):(-2.76, 0.84 )
葡萄(D):(2.02, -1.26 )
菠蘿(E):(0.36, 2.89)
至此,我們已經(jīng)將原始高維空間中的水果口味距離通過MDS算法映射到了二維空間。在這個二維空間中,我們可以觀察到水果之間的相對距離關(guān)系,從而更容易地分析和理解它們之間的口味差異。
四、MDS算法的優(yōu)缺點
下面是一個關(guān)于MDS算法優(yōu)缺點的表格:
MDS的優(yōu)點 | MDS的缺點 |
---|---|
計算相對比較容易而且不需要提供先驗知識。 | 當(dāng)數(shù)據(jù)量較大時,運(yùn)算時間可能較長。 |
在降維過程中盡量保持?jǐn)?shù)據(jù)點之間的距離關(guān)系,有助于挖掘數(shù)據(jù)中的結(jié)構(gòu)信息,適用于各種類型的數(shù)據(jù),如距離、相似性、關(guān)聯(lián)性等。 | 各個維度的地位相同,無法區(qū)分不同維度的重要性。 |
五、案例:降維、聚類與分類
舉一個PCA中介紹過的例子。
這里介紹一下鳶尾花數(shù)據(jù)集,鳶尾花在機(jī)器學(xué)習(xí)里是??椭?。數(shù)據(jù)集由具有150個實例組成,其特征數(shù)據(jù)包括四個:萼片長、萼片寬、花瓣長、花瓣寬。數(shù)據(jù)集中一共包括三種鳶尾花,分別叫做Setosa、Versicolor、Virginica,就像下圖:
也就是說這組數(shù)據(jù)的維度是150*4,數(shù)據(jù)是有標(biāo)簽的。(有標(biāo)簽是指每個實例我們都知道它對應(yīng)的類別)
此時我們進(jìn)行MDS降維,將四維數(shù)據(jù)降為二維,并使用不同顏色標(biāo)注各個類別的鳶尾花,可以得到如下分布情況:
歐幾里得距離
上圖中構(gòu)建距離矩陣時,使用的歐幾里得距離,我們還可以嘗試一下其他距離度量方法,比如馬氏距離'mahalanobis':
馬氏距離
City block 距離:
City block 距離
chebychev距離:
chebychev距離
correlation距離:
correlation距離
此外還有很多其他距離度量方法,這里就不一一列舉了。
盡管MDS算法的初衷是降維而非聚類,不過由于MDS降維后的數(shù)據(jù)常常會用做機(jī)器學(xué)習(xí)的輸入數(shù)據(jù),在數(shù)據(jù)降維的同時查看降維后數(shù)據(jù)的分布情況,對于模式識別/分類任務(wù)的中間狀態(tài)確定還是十分有益的,再直白些說,這些圖片放在論文里豐富一下內(nèi)容也是極好的。
在這種應(yīng)用場景下,數(shù)據(jù)降維的最主要目的其實還是解決數(shù)據(jù)特征過于龐大的問題,這個例子中特征只有4個,所以還不太明顯。很多時候我們面對的是幾十上百乃至更多的特征維度,這些特征中包含著大量冗余信息,使得計算任務(wù)變得非常繁重,調(diào)參的難度和會大大增加。此時加入一步數(shù)據(jù)降維就是十分有必要的了。
六、MATLAB的MDS降維快速實現(xiàn)
MDS算法在MATLAB中有官方函數(shù),名字叫做mdscale,熟悉編程的同學(xué)可以直接調(diào)用。
但是在運(yùn)用mdscale函數(shù)實現(xiàn)降維時,還是有很多坑的,筆者替大家踩過了。并把MDS降維以及可視化的功能進(jìn)行了封裝。它可以實現(xiàn):
1.指定輸出的維度。也就是降維之后的維度,當(dāng)然這個數(shù)不能大于輸入數(shù)據(jù)的特征維度。
options.NumDimensions = 3; %降維后的數(shù)據(jù)維度
2.繪制特征分布圖。在降維維度為2或者3時,可以繪制特征分布圖,當(dāng)然你也可以選擇設(shè)置不畫圖,圖個清靜。
figflag = 'on'; %是否畫圖,'on'為畫圖,'off'為不畫,只有NumDimensions為2或者3時起作用,3以上無法畫圖
3.指定距離度量方法。
options.Distance = 'euclidean'; %距離量度方法選擇,可選:'euclidean' (default) |
%'seuclidean' | 'cityblock' | 'chebychev' | 'minkowski' |
%'mahalanobis' | 'cosine' | 'correlation' | 'spearman' |
%'hamming' | 'jaccard'
% 具體描述見:https://ww2.mathworks.cn/help/stats/pdist.html?s_tid=doc_ta#mw_39296772-30a1-45f3-a296-653c38875df7
設(shè)置好這些配置參數(shù)后,只需要調(diào)用下邊這行代碼:
mdsVal = kMDS(Fea,options,species,figflag); %mdsVal為降維后的數(shù)據(jù)矩陣
就可以繪制出這樣一張圖:
如果要繪制三維圖,把options.NumDimensions設(shè)置成3就好了。繪制出來是這樣:
不過上述是知道標(biāo)簽值species的情況,如果不知道標(biāo)簽值,設(shè)置species=[]就行了,此時畫出來的分布圖是單一顏色的。
上述代碼秉承了本專欄一向的易用屬性,功能全部集中在kMDS函數(shù)里了,這個函數(shù)更詳細(xì)的介紹如下:
mdsVal = kMDS(Fea,options,species,figflag); %mdsVal為降維后的數(shù)據(jù)矩陣
%% 執(zhí)行數(shù)據(jù)的MDS降維
% 可以實現(xiàn)2維、3維以及更高維度的降維,只有二維和三維可以畫圖
% 輸入:
% Fea:待降維數(shù)據(jù),R*Q的矩陣,R為批次數(shù),Q為特征維度,例如特征維度為8的共100組數(shù),tempFea的維度應(yīng)為100*8。輸入該變量時一定要注意行列方向是否正確,如不正確需要轉(zhuǎn)置
% options:一些與MDS降維有關(guān)的設(shè)置,使用結(jié)構(gòu)體方式賦值,比如 options.Distance = 'euclidean' ,具體包括:
% -Distance:距離量度方法選擇,可選:'euclidean' (default) | 'seuclidean' | 'cityblock' | 'chebychev' | 'minkowski' | 'mahalanobis' | 'cosine' | 'correlation' | 'spearman' | 'hamming' | 'jaccard'
% 具體描述見:https://ww2.mathworks.cn/help/stats/pdist.html?s_tid=doc_ta#mw_39296772-30a1-45f3-a296-653c38875df7
% -NumDimensions:降維后的數(shù)據(jù)維度,默認(rèn)為2
% species:分組變量,可以是數(shù)組、數(shù)值向量、字符數(shù)組、字符串?dāng)?shù)組等,但是需要注意此變量維度需要與Fea的組數(shù)一致。該變量可以不賦值,調(diào)用時對應(yīng)位置寫為[]即可
% 例如species可以是[1,1,1,2,2,2,3,3,3]這樣的數(shù)組,代表了Fea前3行數(shù)據(jù)為第1組,4-6行數(shù)據(jù)為第2組,7-9行數(shù)據(jù)為第三組。
% 關(guān)于此species變量更多信息,可以查看下述鏈接中的"Grouping variable":
% https://ww2.mathworks.cn/help/stats/gscatter.html?s_tid=doc_ta#d124e492252
%
% figflag:是否畫圖,'on'為畫圖,'off'為不畫,只有NumDimensions為2或者3時起作用,3以上無法畫圖
需要上邊這個函數(shù)文件以及測試代碼的同學(xué),可以在下邊獲?。?/strong>文章來源:http://www.zghlxwxcb.cn/news/detail-403976.html
MDS降維算法 | 工具箱文檔 (khsci.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-403976.html
到了這里,關(guān)于【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!