国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

這篇具有很好參考價值的文章主要介紹了【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這篇是繼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)。

【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

降維打擊·來自https://www.zcool.com.cn/work/ZMzc1MjcwNjQ=.html

二、MDS的原理是什么?

在MDS算法中,降維映射的原理是通過保持原始空間中數(shù)據(jù)點之間的相對距離來將數(shù)據(jù)從高維空間映射到低維空間。為了便于理解,我們將降維映射過程分為以下幾個步驟:

  1. 構(gòu)建距離矩陣:首先,我們需要計算原始空間中數(shù)據(jù)點之間的距離。常用的距離度量方法包括歐幾里得距離、Minkowski距離等。通過計算每對數(shù)據(jù)點之間的距離,我們可以構(gòu)建一個距離矩陣。
  2. 中心化距離矩陣:為了進(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)置。
  3. 計算內(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
  4. 計算特征值和特征向量:在得到內(nèi)積矩陣B后,我們需要計算其特征值和特征向量。特征值表示數(shù)據(jù)的主要變化方向,特征向量表示對應(yīng)方向上的大小。我們將選取最大的k個特征值及其對應(yīng)的特征向量,作為降維后的k維空間的基。
  5. 計算降維后的坐標(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ù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

也就是說這組數(shù)據(jù)的維度是150*4,數(shù)據(jù)是有標(biāo)簽的。(有標(biāo)簽是指每個實例我們都知道它對應(yīng)的類別)

此時我們進(jìn)行MDS降維,將四維數(shù)據(jù)降為二維,并使用不同顏色標(biāo)注各個類別的鳶尾花,可以得到如下分布情況:

【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

歐幾里得距離

上圖中構(gòu)建距離矩陣時,使用的歐幾里得距離,我們還可以嘗試一下其他距離度量方法,比如馬氏距離'mahalanobis':

【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

馬氏距離

City block 距離:

【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

City block 距離

chebychev距離:

【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

chebychev距離

correlation距離:

【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

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ù)矩陣

就可以繪制出這樣一張圖:

【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

如果要繪制三維圖,把options.NumDimensions設(shè)置成3就好了。繪制出來是這樣:

【數(shù)據(jù)降維-第4篇】多維尺度變換(MDS)快速理解,及MATLAB實現(xiàn)

不過上述是知道標(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>

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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包