日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

聚类分析与可视化

發(fā)布時間:2023/12/14 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聚类分析与可视化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

聚類分析與可視化

——《The Wiley Handbook of Human Computer Interaction》學(xué)習(xí)心得

小組成員:吳** / 周** / 蔣**

概述

最近,在交互媒體專題設(shè)計這門課的課程安排下,我們小組對《The Wiley Handbook of Human Computer Interaction》這本書的第945頁至第966頁部分進(jìn)行了翻譯和學(xué)習(xí)。該部分的章節(jié)名為 “ Visual Analytics for Comparing Multiple Clustering Results of Bioinformatics Data”,其主要介紹了一款能夠幫助生物學(xué)家進(jìn)行多種聚類結(jié)果分析的軟件——XCluSim。在接下來的文章中,我們將分享我們在學(xué)習(xí)該章節(jié)后的收獲和感悟。

什么是聚類分析

百度百科對“聚類分析”一詞是這樣解釋的:聚類分析是指將物理或抽象對象的集合分組為由類似對象組成的多個類的分析過程。簡單地來說,聚類分析就是將一組元數(shù)據(jù)劃分為多個類或簇,同一個簇中的數(shù)據(jù)具有很大的相似性,而不同簇中的數(shù)據(jù)具有較大的差異性。聚類與分類是不同的,因為聚類所要求劃分的類是未知的,這與機器學(xué)習(xí)中的無監(jiān)督學(xué)習(xí)【1】過程相似。也正因為聚類過程是沒有明確方向的,所以不同的聚類方法往往會得到不同的結(jié)果,這就要求人們對聚類結(jié)果的質(zhì)量進(jìn)行量化。目前為止,常用的評價指標(biāo)包括了Purity(純度)、Entropy(熵)、Accuracy(準(zhǔn)確率)、NMI(歸一化互信息)、ARI(調(diào)整蘭德指數(shù))【2】等。

XCluSim的誕生

自從Eisen實驗室推廣了微陣列數(shù)據(jù)的聚類分析和可視化【3】,聚類分析已經(jīng)廣泛應(yīng)用于生物信息學(xué)界。隨著遺傳探測技術(shù)在容量和準(zhǔn)確性方面的快速提高,聚類分析在高吞吐量探測技術(shù)產(chǎn)生的大數(shù)據(jù)描述性建模(分割或分區(qū))中發(fā)揮著更加重要的作用。但是,對于各種聚類分析算法的結(jié)果質(zhì)量,盡管已經(jīng)有了一些評價指標(biāo),在大多數(shù)實際研究項目中,其仍是由經(jīng)驗人員進(jìn)行主觀評判的,且往往僅特定于目標(biāo)應(yīng)用,并不具有普適性。為了選擇數(shù)據(jù)集的最佳聚類方法及其參數(shù),研究人員必須運行多個聚類算法并進(jìn)行比較,而這種比較任務(wù)往往是十分苛刻和費力的。于是,為了解決這個問題,該章節(jié)的作者們開發(fā)了一款專門面向生物信息大數(shù)據(jù)的聚類結(jié)果可視化分析軟件——XCluSim。該軟件基本滿足了以下4個設(shè)計目標(biāo):
(1)方便在不同層面上對多種聚類結(jié)果進(jìn)行可伸縮的視覺比較;
(2)支持生成多種聚類結(jié)果;
(3)促進(jìn)對各種聚類算法的特性及其結(jié)果中參數(shù)的理解;
(4)為不同類型的單個聚類結(jié)果提供有效的專用可視化。

XCluSim的優(yōu)勢

很遺憾的是,我們小組并沒有找到獲取XCluSim的途徑,所以我們并沒有親身體驗過XCluSim的強大功能。但是,通過對該章節(jié)內(nèi)容的系統(tǒng)學(xué)習(xí),我們已經(jīng)深刻體會到該系統(tǒng)設(shè)計的嚴(yán)密性以及豐富的層次性,所以我們希望通過我們的簡單介紹能讓大家對這款軟件有一個初步的了解。

(一)比較多個聚類結(jié)果

XCluSim部分工作界面如下:

顯然,上圖一共被分為五個部分:
(a)參數(shù)信息視圖,向用戶提供了所有聚類結(jié)果的參數(shù)概述。該視圖被垂直劃分為多個子視圖,每個子視圖對應(yīng)單獨的聚類算法。每個子視圖內(nèi)部又被劃分為多個矩形區(qū)域,分別表示該聚類算法的不同參數(shù)。
(b)強定向布局概覽,其通過物理距離直觀地展示了各種聚類結(jié)果的相似性。在該視圖中,每個聚類算法的結(jié)果都被表示為一個嵌入了餅狀圖的節(jié)點。其中,聚類結(jié)果越相似的節(jié)點靠得越近,而餅狀圖則向用戶直觀地展示了集群的數(shù)量和大小。
(c)樹狀圖概覽,其功能與強定向布局概覽類似,都是向用戶展示多種聚類結(jié)果的整體相似性。不同的是,該概覽使用了更熟悉的可視化組件(即樹狀圖),且相較于強定向布局概覽,它節(jié)省了更多的空間而不會出現(xiàn)遮擋。
(d)增強版并行集視圖,其更加詳細(xì)地展示了多個聚類結(jié)果之間的一致性和不一致性。在并行集視圖中,每一行水平的堆疊條都表示了一種聚類結(jié)果,而水平堆疊條中的每個條都表示聚類結(jié)果中的一個簇。除此之外,相鄰兩行堆疊條之間還存在許多寬度不一的線條,通過線條相連的簇具有某些相同的“穩(wěn)定項”,而線條的寬度則表示了該穩(wěn)定項的大小。用戶可以通過調(diào)節(jié)視圖底部的直方圖來控制所顯示穩(wěn)定項的大小范圍。
(e)列表視圖,其通過分組模式和熱圖模式向用戶具體地展示了所訪問聚類結(jié)果的詳細(xì)信息。在分組模式下,用戶可以查看穩(wěn)定組的數(shù)據(jù);而在熱圖模式下,用戶可以查看原始數(shù)據(jù)。

(二)查看單個聚類結(jié)果

XCluSim部分工作界面如下:

上圖主要組成如下:
(a)樹狀圖與熱圖的組合,用于分層顯示聚類結(jié)果。
(b)簇級別的強定向布局,用于顯示同一聚類結(jié)果中不同簇之間的相似性,其中的折線表示每個簇中所有成員對象的平均模式。
(c)SOM聚類【4】結(jié)果的通用蜂巢狀可視化,其中每個六邊形單元格都表示聚類結(jié)果中的一個簇。每個單元格的背景強度代表了相應(yīng)簇的大小,而中間的折線圖則顯示了聚類成員的平均模式。
(d)可達(dá)性圖及OPTICS平行坐標(biāo)圖,OPTICS會計算每個項的可達(dá)性距離。(略,這一塊實在沒看懂…)

(三)小結(jié)

通過對以上內(nèi)容的學(xué)習(xí),我們發(fā)現(xiàn)整個XCluSim的設(shè)計過程基本滿足人們對于視覺信息的搜索認(rèn)知:先概覽,再縮放和過濾,以及按需獲取詳細(xì)信息。這種設(shè)計思路是十分值得我們進(jìn)行借鑒和學(xué)習(xí)的。另外,XCluSim中對于顏色編碼的使用也十分的巧妙。它使用了一種叫做Tree Colors【5】的顏色編碼策略,它是為樹狀數(shù)據(jù)設(shè)計的,用于表示節(jié)點之間的相似性。其基本思路是父節(jié)點色調(diào)范圍的一部分會通過遞歸的方式分配給它的子節(jié)點,這樣就能使具有相同父節(jié)點的子節(jié)點具有相似的顏色

拓展延伸

據(jù)文章所言,XCluSim可以很好地幫助生物學(xué)家挖掘某些基因的表達(dá)能力,具體案例包括了諸如闡明鐵氧化酶在新型隱球菌中的作用等。在整個實驗流程中,研究人員利用XCluSim對實驗數(shù)據(jù)的多種聚類分析結(jié)果進(jìn)行觀察和比較,從中尋找某些比較穩(wěn)定的簇群,而這些簇群往往代表著某些能夠影響表達(dá)的基因序列。因為我們的小組成員都不是從事生物方向的,對于各種生物術(shù)語和實驗流程的整體把握度還不夠,所以就不在這里對具體實驗實例進(jìn)行過多闡述。

因為網(wǎng)上關(guān)于XCluSim這款軟件的信息實在少得可憐,我們小組也沒能夠進(jìn)行具體的嘗試,無法對其作出具體的評估,所以只能在網(wǎng)上尋找一些我們認(rèn)為能夠幫助讀者理解這篇文章內(nèi)容的資料。具體內(nèi)容如下:
(1)使用python演示如何通過聚類分析尋找共表達(dá)基因【6】。該文章詳細(xì)地介紹了如何模擬數(shù)據(jù)集,如何使用K-means算法進(jìn)行聚類分析,如何進(jìn)行數(shù)據(jù)提取和可視化等步驟。

聚類模擬過程如下:
(來自 https://commons.wikimedia.org/wiki/File:Kmeans_animation.gif)

(2)一種基于語義的大型圖像集可視化方法【7】。這是IEEE TRANSACTIONS ON VISUALIZATION AND COMPUTER GRAPHICS期刊于2018年發(fā)表的一篇文章。雖然該文章主要介紹的是一種針對大型圖像集的可視化方法,但我們認(rèn)為它的某些設(shè)計思想對XCluSim的發(fā)展有一定的幫助。該論文所描述的系統(tǒng)使用了星系比喻其合理地使用各個獨立的星系(如太陽系)來表示不同的簇,而星系中的恒星(如太陽)代表了該星系的特征,星系中的行星(如地球)和其他天體代表了簇中不同的對象個體。簇與簇之間的相似性可以用星系間的距離表示,簇的大小可以用星系的體積表示,簇中各個對象之間的相似性也可以通過空間距離來表示。相較于2D空間,星系比喻所使用的3D空間能夠帶給用戶更加直觀的感受和層次更加豐富的信息,我們相信這種方式能夠更好地幫助XCluSim的用戶理解和分析單個聚類算法的結(jié)果。

星系比喻的部分界面如下:

(3)基于MNIST數(shù)據(jù)集的無監(jiān)督學(xué)習(xí)的一種簡單應(yīng)用——Encoder編碼器【8】。其基本原理實際上就是將高維特征進(jìn)行壓縮降維編碼,最后直觀地在二維平面或三維空間中顯示數(shù)據(jù)的聚類情況

Tensorflow平臺下的具體代碼如下:

import tensorflow as tf import matplotlib.pyplot as pltfrom tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_Labels_Images", one_hot=False)# 設(shè)置訓(xùn)練超參數(shù) learning_rate = 0.01 # 學(xué)習(xí)率 training_epochs = 10 # 訓(xùn)練次數(shù) batch_size = 256 # 每次訓(xùn)練的樣本數(shù) display_step = 1 # 多少輪顯示一次結(jié)果 n_input = 784 # 輸入數(shù)據(jù)的維度X = tf.placeholder("float", [None, n_input])# 初始化權(quán)重和偏置 n_hidden_1 = 128 n_hidden_2 = 64 n_hidden_3 = 10 n_hidden_4 = 2 weights = {'encoder_h1': tf.Variable(tf.truncated_normal([n_input, n_hidden_1], )),'encoder_h2': tf.Variable(tf.truncated_normal([n_hidden_1, n_hidden_2], )),'encoder_h3': tf.Variable(tf.truncated_normal([n_hidden_2, n_hidden_3], )),'encoder_h4': tf.Variable(tf.truncated_normal([n_hidden_3, n_hidden_4], )),'decoder_h1': tf.Variable(tf.truncated_normal([n_hidden_4, n_hidden_3], )),'decoder_h2': tf.Variable(tf.truncated_normal([n_hidden_3, n_hidden_2], )),'decoder_h3': tf.Variable(tf.truncated_normal([n_hidden_2, n_hidden_1], )),'decoder_h4': tf.Variable(tf.truncated_normal([n_hidden_1, n_input], )), } biases = {'encoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),'encoder_b2': tf.Variable(tf.random_normal([n_hidden_2])),'encoder_b3': tf.Variable(tf.random_normal([n_hidden_3])),'encoder_b4': tf.Variable(tf.random_normal([n_hidden_4])),'decoder_b1': tf.Variable(tf.random_normal([n_hidden_3])),'decoder_b2': tf.Variable(tf.random_normal([n_hidden_2])),'decoder_b3': tf.Variable(tf.random_normal([n_hidden_1])),'decoder_b4': tf.Variable(tf.random_normal([n_input])), }def encoder(x):layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['encoder_h1']), biases['encoder_b1']))layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['encoder_h2']), biases['encoder_b2']))layer_3 = tf.nn.sigmoid(tf.add(tf.matmul(layer_2, weights['encoder_h3']), biases['encoder_b3']))# 為了便于編碼層的輸出,編碼層隨后一層不使用激活函數(shù)layer_4 = tf.add(tf.matmul(layer_3, weights['encoder_h4']), biases['encoder_b4'])return layer_4def decoder(x):layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['decoder_h1']), biases['decoder_b1']))layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['decoder_h2']), biases['decoder_b2']))layer_3 = tf.nn.sigmoid(tf.add(tf.matmul(layer_2, weights['decoder_h3']), biases['decoder_b3']))layer_4 = tf.nn.sigmoid(tf.add(tf.matmul(layer_3, weights['decoder_h4']), biases['decoder_b4']))return layer_4# 定義網(wǎng)絡(luò)結(jié)構(gòu) encoder_op = encoder(X) decoder_op = decoder(encoder_op)y_pred = decoder_op y_true = X# 設(shè)置損失函數(shù) cost = tf.reduce_mean(tf.pow(y_true - y_pred, 2)) optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)# 開始訓(xùn)練 with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)total_batch = int(mnist.train.num_examples / batch_size)for epoch in range(training_epochs):for i in range(total_batch):batch_xs, batch_ys = mnist.train.next_batch(batch_size) # max(x) = 1, min(x) = 0_, c = sess.run([optimizer, cost], feed_dict={X: batch_xs})if epoch % display_step == 0:print("Epoch:", '%04d' % (epoch + 1), "cost=", "{:.9f}".format(c))print("Optimization Finished!")encoder_result = sess.run(encoder_op, feed_dict={X: mnist.test.images})plt.scatter(encoder_result[:, 0], encoder_result[:, 1], c=mnist.test.labels)plt.colorbar()plt.show()

聚類結(jié)果如下:

結(jié)語

總的來說,我們小組在這次學(xué)習(xí)過程中的收獲還是蠻大的。雖然有些操作在沒有實際嘗試的情況下理解起來比較困難,同時對于一些生物方面的知識的缺乏也對我們造成了一定的困擾,但是這并不妨礙我們學(xué)習(xí)XCluSim這款軟件所蘊含的設(shè)計思想和可視化技巧。我們相信在今后的學(xué)習(xí)生活中,我們一定會十分感謝這次學(xué)習(xí)經(jīng)歷的。

參考

【1】吳恩達(dá) —— 無監(jiān)督學(xué)習(xí)
https://blog.csdn.net/qq_29373285/article/details/82529333
【2】聚類分析的評價指標(biāo)
https://blog.csdn.net/qq_36064669/article/details/82586582
【3】聚類分析和全基因組表達(dá)模式的展示
https://www.pnas.org/content/95/25/14863.short
【4】Self Organizing Maps(SOM):一種基于神經(jīng)網(wǎng)絡(luò)的聚類算法
https://www.cnblogs.com/sylvanas2012/p/5117056.html
【5】Tree Colors: Color Schemes for Tree-Structured Data
https://ieeexplore.ieee.org/abstract/document/6875961
【6】基因共表達(dá)聚類分析及可視化
https://blog.csdn.net/qazplm12_3/article/details/78904744
【7】A Semantic-based Method for Visualizing Large Image Collections
https://ieeexplore.ieee.org/abstract/document/8358974
【8】Tensorflow在MNIST中的應(yīng)用
https://blog.csdn.net/hellozex/article/details/78540482

總結(jié)

以上是生活随笔為你收集整理的聚类分析与可视化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。