99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?
探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?
2019-10-21
收藏
探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

作者 | IAN JOHNSON

編譯 | CDA數(shù)據(jù)分析師

How to Use t-SNE Effectively

盡管對于可視化高維數(shù)據(jù)非常有用,但t-SNE圖有時可能是神秘的或誤導(dǎo)性的。通過探索它在簡單情況下的行為方式,我們可以學(xué)習(xí)如何更有效地使用它。

一種用于探索高維數(shù)據(jù)的流行方法是在2008年由t-SNE引入的 van der Maaten和Hinton]。該技術(shù)在機器學(xué)習(xí)領(lǐng)域已經(jīng)變得普遍,因為它具有幾乎神奇的能力,可以從具有數(shù)百甚至數(shù)千維度的數(shù)據(jù)創(chuàng)建引人注目的雙維“地圖”。雖然令人印象深刻,但這些圖像很容易被誤讀。本說明的目的是防止一些常見的誤讀。

我們將通過一系列簡單的例子來說明t-SNE圖可以和不可以顯示什么。t-SNE技術(shù)確實很有用 - 但前提是你知道如何解釋它。

在潛入之前:如果您之前沒有遇到過t-SNE,那么您需要了解它背后的數(shù)學(xué)知識。目標(biāo)是在高維空間中獲取一組點,并在較低維空間(通常是2D平面)中找到這些點的忠實表示。該算法是非線性的,并且適應(yīng)底層數(shù)據(jù),在不同區(qū)域上執(zhí)行不同的變換。這些差異可能是混亂的主要原因。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

t-SNE的第二個特征是可調(diào)參數(shù),“困惑”,它(松散地)說明如何在數(shù)據(jù)的本地和全局方面之間平衡注意力。在某種意義上,該參數(shù)是關(guān)于每個點具有的近鄰的數(shù)量的猜測。困惑值對得到的圖像具有復(fù)雜的影響。原始論文說:“SNE的表現(xiàn)對于困惑的變化是相當(dāng)強大的,典型的值在5到50之間。”但這個故事比那更加微妙。從t-SNE中獲取最大收益可能意味著分析具有不同困惑的多個圖。

這不是復(fù)雜的結(jié)束。例如,t-SNE算法并不總是在連續(xù)運行中產(chǎn)生類似的輸出,并且存在與優(yōu)化過程相關(guān)的附加超參數(shù)。

1.那些超參數(shù)真的很重要

讓我們從t-SNE的“hello world”開始:兩個廣泛分離的集群的數(shù)據(jù)集。為了使事情盡可能簡單,我們將考慮2D平面中的聚類,如左圖所示。(為清楚起見,兩個簇是彩色編碼的。)右邊的圖顯示了五個不同的困惑值的t-SNE圖。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

由van der Maaten和Hinton建議的范圍(5 - 50)中的困惑值,圖表確實顯示了這些簇,盡管形狀非常不同。在這個范圍之外,事情變得有點奇怪。由于困惑2,局部變化占主導(dǎo)地位。具有合并的簇的困惑圖像100示出了陷阱:為了使算法正確地操作,困惑確實應(yīng)該小于點的數(shù)量。否則,實現(xiàn)可能會產(chǎn)生意外行為。

上面的每個圖都是5000次迭代,學(xué)習(xí)率(通常稱為“epsilon”)為10,并且已經(jīng)達(dá)到了步驟5,000的穩(wěn)定點。這些價值觀有多大區(qū)別?根據(jù)我們的經(jīng)驗,最重要的是迭代直到達(dá)到穩(wěn)定的配置。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

上面的圖像顯示了困惑30的五個不同的運行。前四個在穩(wěn)定之前停止。在10,20,60和120步之后,您可以看到具有看似群集的一維甚至點狀圖像的布局。如果你看到一個奇怪的“捏”形狀的t-SNE圖,那么這個過程很可能太早停止了。不幸的是,沒有固定數(shù)量的步驟可以產(chǎn)生穩(wěn)定的結(jié)果。不同的數(shù)據(jù)集可能需要不同的迭代次數(shù)才能收斂。

另一個自然的問題是,具有相同超參數(shù)的不同運行是否產(chǎn)生相同的結(jié)果。在這個簡單的雙集群示例中,以及我們討論的大多數(shù)其他示例中,多次運行給出了相同的全局形狀。但是,某些數(shù)據(jù)集在不同的運行中會產(chǎn)生明顯不同的圖表; 我們稍后會給出一個例子。

從現(xiàn)在開始,除非另有說明,否則我們將顯示5,000次迭代的結(jié)果。這通常足以在本文的(相對較小的)例子中收斂。然而,我們會繼續(xù)表現(xiàn)出一系列的困惑,因為這似乎在每種情況下都會產(chǎn)生很大的不同。

2. t-SNE圖中的簇大小沒有任何意義

到現(xiàn)在為止還挺好。但是如果這兩個集群有不同的標(biāo)準(zhǔn)偏差,那么大小不同呢?(按尺寸,我們指的是邊界框測量值,而不是點數(shù)。)下面是平面中高斯混合物的t-SNE圖,其中一個是另一個的10倍。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

令人驚訝的是,這兩個簇在t-SNE圖中看起來大小相同。這是怎么回事?t-SNE算法使其“距離”概念適應(yīng)數(shù)據(jù)集中的區(qū)域密度變化。結(jié)果,它自然地擴展了密集的集群,并且收縮了稀疏集群,使集群大小縮小。需要明確的是,這與任何降維技術(shù)都會扭曲距離的普通事實不同。(畢竟,在這個例子中,所有數(shù)據(jù)都是二維的開始。)相反,密度均衡是通過設(shè)計發(fā)生的,并且是t-SNE的可預(yù)測特征。

然而,底線是你無法在t-SNE圖中看到聚類的相對大小。

3.集群之間的距離可能沒有任何意義

集群之間的距離怎么樣?下圖顯示了三個高斯分別為50分,一對分別是另一對的5倍。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

在困惑50時,該圖給出了對全局幾何的良好感覺。對于較低的茫然值,群集看起來是等距的。當(dāng)困惑度為100時,我們看到全局幾何結(jié)構(gòu)很好,但其中一個集群看起來錯誤地比其他集群小得多。由于困惑50在這個例子中給了我們一個好的畫面,如果我們想看到全局幾何,我們是否總能將困惑設(shè)置為50?

可悲的是沒有。如果我們?yōu)槊總€群集添加更多點,則必須增加困難以進行補償。以下是三個高斯群集的t-SNE圖,每個群集有200個點,而不是50個?,F(xiàn)在沒有一個試驗困惑度值給出了良好的結(jié)果。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

看到全球幾何需要微調(diào)困惑是個壞消息。真實世界的數(shù)據(jù)可能會有多個具有不同數(shù)量元素的集群。可能沒有一個困惑值可以捕獲所有集群的距離 - 遺憾的是,困惑是一個全局參數(shù)。解決這個問題可能是未來研究的一個有趣領(lǐng)域。

基本信息是t-SNE圖中分離良好的簇之間的距離可能沒有任何意義。

4.隨機噪聲并不總是隨機的。

一個經(jīng)典的陷阱是認(rèn)為你看到的是真正隨機數(shù)據(jù)的模式。當(dāng)你看到它時,識別噪音是一項關(guān)鍵技能,但要建立正確的直覺需要時間。關(guān)于t-SNE的一個棘手的事情是,它拋出了很多現(xiàn)有的直覺。下圖顯示了真實的隨機數(shù)據(jù),從100維的單位高斯分布中抽取了500個點。左圖是前兩個坐標(biāo)上的投影。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

困惑2的情節(jié)似乎表現(xiàn)出戲劇性的集群。如果你正在調(diào)整困惑以在數(shù)據(jù)中顯示結(jié)構(gòu),你可能會認(rèn)為你已經(jīng)中了大獎。

當(dāng)然,因為我們知道點云是隨機生成的,所以它沒有統(tǒng)計上有意義的集群:那些“團塊”沒有意義。如果回顧前面的例子,低茫然度值通常會導(dǎo)致這種分布。將這些團塊識別為隨機噪聲是讀取t-SNE圖的重要部分。

不過有其他一些有趣的東西,這可能是t-SNE的勝利。起初,困惑30的情節(jié)根本看起來不像高斯分布:云的不同區(qū)域之間只存在微小的密度差異,并且這些點看起來可疑地均勻分布。事實上,這些特征是關(guān)于高維正態(tài)分布的有用的東西,它們非常接近球體上的均勻分布:均勻分布,點之間的間距大致相等。從這個角度來看,t-SNE圖比任何線性投影都準(zhǔn)確。

5.你有時可以看到一些形狀

數(shù)據(jù)以完全對稱的方式分發(fā)很少見。讓我們看一下50維的軸對齊高斯分布,其中坐標(biāo)i的標(biāo)準(zhǔn)偏差是1 / i。也就是說,我們正在研究一個長橢圓形的點云。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

對于足夠高的困惑值,細(xì)長的形狀易于閱讀。另一方面,在低度困惑的情況下,局部效應(yīng)和無意義的“聚集”成為焦點。更加極端的形狀也會出現(xiàn),但同樣只有正確的困惑。例如,這里是兩個75個點的集群,每個集群在2D中,以平行線排列,帶有一點噪聲。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

對于一定程度的困惑,長簇看起來接近正確,這是令人放心的。

然而,即使在最好的情況下,也存在一種微妙的失真:在t-SNE圖中線條略微向外彎曲。原因在于,像往常一樣,t-SNE傾向于擴展更密集的數(shù)據(jù)區(qū)域。由于群集的中間周圍的空白空間少于末端,因此算法會放大它們。

6.對于拓?fù)洌赡苄枰鄠€繪圖

有時您可以從t-SNE圖中讀取拓?fù)湫畔?,但這通常需要多個困惑的視圖。最簡單的拓?fù)鋵傩灾皇嵌糁?。下圖顯示了50維空間中的兩組75個點。兩者都是從以原點為中心的對稱高斯分布中采樣的,但其中一個比另一個分散50倍?!靶 狈植紝嶋H上包含在大的分布中。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

困惑30視圖正確地顯示了基本拓?fù)?,但是t-SNE再次大大夸大了較小點組的大小。在困惑50時,有一種新現(xiàn)象:外部群體變成一個圓圈,因為情節(jié)試圖描繪其所有點與內(nèi)部群體的距離大致相同的事實。如果你單獨看這個圖像,很容易將這些外點誤讀為一維結(jié)構(gòu)。

更復(fù)雜的拓?fù)漕愋湍??對于?shù)學(xué)家而言,這可能是實際數(shù)據(jù)分析師的主題,但有時在野外會發(fā)現(xiàn)有趣的低維結(jié)構(gòu)。

考慮一組在三維中跟蹤鏈接或結(jié)的點。再一次,查看多個困惑值可以得到最完整的圖像。低茫然度值給出兩個完全獨立的循環(huán); 高點表現(xiàn)出一種全球連通性。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

三葉結(jié)是多次運行如何影響t-SNE結(jié)果的一個有趣例子。以下是困惑2視圖的五次運行。

該算法在圓上結(jié)算兩次,至少保留了固有拓?fù)?。但在三次運行中,最終會有三種不同的解決方案引入人工休息。使用點顏色作為指導(dǎo),您可以看到第一次和第三次運行相距很遠(yuǎn)。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

然而,在困惑50處運行五次,得到(直到對稱性)在視覺上相同的結(jié)果。顯然,有些問題比其他問題更容易優(yōu)化。

探索可視化高維數(shù)據(jù)之如何有效使用t-SNE?

結(jié)論

有一個原因是t-SNE變得如此受歡迎:它非常靈活,并且經(jīng)??梢哉业狡渌?a href='/map/jiangwei/' style='color:#000;font-size:inherit;'>降維算法無法實現(xiàn)的結(jié)構(gòu)。不幸的是,這種靈活性使解釋變得棘手。在用戶看不到的情況下,該算法進行各種調(diào)整以整理其可視化。但是,不要讓隱藏的“魔法”讓你遠(yuǎn)離整個技術(shù)。好消息是,通過研究t-SNE在簡單情況下的行為方式,可以對正在發(fā)生的事情形成直覺。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }