有沒有那種方式可以將高維數據進行可視化?比如保持數據結構不變將高維數據映射到低維空間? | 知乎問答精選

 

A-A+

有沒有那種方式可以將高維數據進行可視化?比如保持數據結構不變將高維數據映射到低維空間?

2017年08月11日 知乎問答精選 暫無評論 閱讀 1 ℃ 次

【黃斌的回答(39票)】:

高維數據可視化在Handbook of Data Visualization中有專門一章來表述。下面論述的內容全部來自由Theus撰寫的手冊第六章High-Dimensional Data Visualization(Theus, 2008)。下面這張圖能夠比較好地概括這一章,題主關心的主要是數據挖掘,所以可以著重看上面的三個分支。如果想看相關性,Mosaic和Trellis很不錯。平行坐標圖(Parallel Coordinate Plots)比較適合聚類(clustering),尋找極端值(outlier)以及觀察多個數據之間的結構。數據維數很高的時候也只能用平行坐標。Grand Tour的優點同樣在於挖掘結構。

第一種方法叫Mosaic圖,適合於要研究的都是定性變量的情況。像下面這張圖,四周是四個定性變量:水的硬度分三檔;溫度有高低;偏好有兩種;是否用戶又可以劃開兩塊。每一個方塊群都代表了控制兩個變量以後樣本的分佈,方塊的大小代表了具備對應特徵的樣本數量。四維或以下的數據用這種畫法會很方便。

如果因變量是連續變量,也可以用馬賽克圖畫。下面這張圖是發病率的可視化,影響因素有三個:風險因子、防疫計劃和抗生素注射,然後可以用紅色占比來代表不同群體內部的發病率,圖非常漂亮。這種圖很適合在開挖之前用來得到一些定性的想法。

也可以把各種擬合優度、顯著性之類的指標放進去,比如這張圖:

和Mosaic圖相類似的有Trellis圖,它的大概形狀和Mosaic比較相似,都是先對幾個定性變量取條件(一般是兩個),然後在這兩個變量的交叉格裡表現剩餘數據的形狀。不過兩個還是有不同,簡單來說,Mosaic圖有一個遞歸的層次,看的時候先找到一個變量的取值,再找到下一個,再下一個,像剝洋蔥一樣。看Trellis圖的時候我們就知道找網格了。像上面水資源那個,如果畫Trellis圖,應該是下面這張這樣的。從中可以挖掘不少信息,比如說我們可以猜測,當水溫低、水質軟的時候,會員和偏好很有可能是獨立的。

如果要用的數據都是連續變量,不好畫,可以考慮把連續變量分割成幾個區間再畫,具體劃多少個區間、每個畫多大,都是要按照實際靈活調整的問題。下面是一張更漂亮的Trellis圖,可視化了五維空間數據,其中數據點不同的顏色代表了不同的車輪數量。這裡要處理的車重、MPG等指標都可視為連續的,但靈活處理表現形式,無論是Mosaic圖還是Trellis圖都可以發揮出特別強大的功能。

平行坐標圖在數據挖掘中也很常見。在平行坐標裡,每個數據樣本點都變成了一條折線,這條折線在不同坐標軸上取值就是原始坐標值。一般來看,平行坐標圖是這樣子的:

在平行坐標圖中,極端值會特別明顯,像上圖中左上第二條坐標軸:每加侖行使高速公路里程,可以很明顯看到有幾個outlier。用平行坐標做聚類也比較方便,這和尋找極端值的原理是一致的。平行坐標軸處理高維數據也特別方便。如果數據有十幾個緯度,而且都要畫出來,可能就只有平行坐標能勝任了。如果數據點特別多,或者維度特別多,感覺圖表已經無法清晰辨認時,可以做一點透明度處理,讓高密度區域著色更濃,低密度區域透明度更高,這樣就可以展示大量高維數據。

如果感覺太繁冗,可以只畫出一些特定的指標,比如說最大值、最小值、中位數,等等。下圖是分別畫出集中指標的平行坐標圖。

最後一種方法叫Grand Tour。它的定義沒有前兩個那麼直觀,所謂Grand Tour,是一族高維空間向低位空間的稠密投影,這個投影組的參數我們一般取成時間,也有取成其它一些參數的。像上面那張汽車數據圖,就可以畫出下面幾種Grand Tour,圈圈的顏色依然代表輪胎數量。Grand Tour在挖掘中用得很多,在展示中很少用,它也比較適合處理聚類和分離問題。至於旅行的具體方向和變量選擇,有很多種算法來選擇。

最後,如果重點在可視化,其實還有蠻多其它方法來定性看數據的,比如最簡單的散點圖,雖然在高維情況效果不好,但通過切片、放縮等方法也可以起到一定作用。雷達圖,還有類似的星型圖,也可以展示高維數據,而且實現比較簡單。類似的還有很多奇思妙想的方法,比如Andrew『s Curve,用一組三角函數的值來展示高維數據,或者Chernoff臉,用一張臉上五官的尺寸和形狀來展示高維數據的特點。這些都可以百度到。如果不單純是為了畫圖而是為了找降維算法,那就更多了,幾十種肯定是有的...建議找專業書看。最後,關於上面幾種可視化方法的進一步信息,請參見手冊原文,許多細節都需要算法來確定。

參考文獻

Theus M. High-dimensional data visualization[M]//Handbook of data visualization. Springer Berlin Heidelberg, 2008: 151-178.

【SherlockNick的回答(19票)】:

謝邀。我接觸過的方法有 multidimensional scaling (MDS) 和 t-distributed stochastic neighbor embedding (t-SNE)。MDS 的輸入是一個距離矩陣,t-SNE 的輸入是一個相似度矩陣,因此題主在使用前,要先定義合適的距離或者相似度。

兩種方法的原理我已經記不清了,不過樓主可以參考下面的資料:

MDS: Modern Multidimensional Scaling(這是一整本書)

t-SNE: Visualizing Data Using t-SNE(一篇論文)

Matlab 中有兩個做 MDS 的函數,分別叫 cmdscale 和 mdscale。

t-SNE 的各種語言實現可以在這裡下載:t-SNE – Laurens van der Maaten。

下面附上我用兩種方法對 2012 年時我的 1243 個人人好友進行二維可視化得到的圖像。

距離和相似度都是基於共同好友數的,不過具體公式不記得了。

複製圖片的時候漢字都變成問號了……不過這樣正好能不洩露隱私 ;-)

這是 MDS 的整體圖:

首先顯而易見的是許多 outliers。右側那一大團放大後是這樣的:首先顯而易見的是許多 outliers。右側那一大團放大後是這樣的:

幾個大類成功地聚在了一起,但更精細的結構就沒有了。幾個大類成功地聚在了一起,但更精細的結構就沒有了。

這是 t-SNE 的圖:

t-SNE 最明顯的特徵是數據分佈的邊緣呈圓形,沒有 outliers。t-SNE 最明顯的特徵是數據分佈的邊緣呈圓形,沒有 outliers。

比較大的大類能成功找出來,但幾個比較小的類就不行了:

  • 「老家的學弟學妹」這一類,分散成若干個小團體;

  • 日本、韓國同學分散在邊緣。

事實上,把「本科同學」放大,可以看到外班同學幾乎整齊地排成一條線段,而本班同學則分散在線段的一個端點附近。

這些事實似乎說明 t-SNE 與 MDS 相比,能夠發掘出更深層次的結構,但發掘出來的結構並不一定正確。

標籤:-機器學習


相關資源:




給我留言