數(shù)據(jù)降維

寫在前面

  • 態(tài)度決定高度!讓優(yōu)秀成為一種習(xí)慣!
  • 世界上沒有什么事兒是加一次班解決不了的,如果有,就加兩次!(- - -茂強(qiáng))

綜述

面對(duì)著大數(shù)據(jù)時(shí)代的發(fā)展,數(shù)據(jù)成為目前一切科學(xué)的基礎(chǔ),擁有數(shù)據(jù),就代表著擁有商機(jī),擁有決定權(quán),每個(gè)公司或者科研項(xiàng)目,想要用實(shí)際說話,就必須有一個(gè)良好的數(shù)據(jù)基礎(chǔ),所以數(shù)據(jù)清晰,數(shù)據(jù)結(jié)構(gòu)化,標(biāo)準(zhǔn)化,數(shù)據(jù)降維,數(shù)據(jù)可視化是目前大數(shù)據(jù)或者數(shù)據(jù)科學(xué)重中之重。

目前的數(shù)據(jù)降維技術(shù)

我們可以用一張圖來說明一下目前的數(shù)據(jù)降維技術(shù)


目前數(shù)據(jù)降維技術(shù)
  • 主成分分析算法(PCA)
    Principal Component Analysis(PCA)是最常用的線性降維方法,它的目標(biāo)是通過某種線性投影,將高維的數(shù)據(jù)映射到低維的空間中表示,并期望在所投影的維度上數(shù)據(jù)的方差最大,以此使用較少的數(shù)據(jù)維度,同時(shí)保留住較多的原數(shù)據(jù)點(diǎn)的特性。
    通俗的理解,如果把所有的點(diǎn)都映射到一起,那么幾乎所有的信息(如點(diǎn)和點(diǎn)之間的距離關(guān)系)都丟失了,而如果映射后方差盡可能的大,那么數(shù)據(jù)點(diǎn)則會(huì)分散開來,以此來保留更多的信息。可以證明,PCA是丟失原始數(shù)據(jù)信息最少的一種線性降維方式。(實(shí)際上就是最接近原始數(shù)據(jù),但是PCA并不試圖去探索數(shù)據(jù)內(nèi)在結(jié)構(gòu))
    設(shè)n維向量w為目標(biāo)子空間的一個(gè)坐標(biāo)軸方向(稱為映射向量),最大化數(shù)據(jù)映射后的方差,有:


    主成分目標(biāo)

    其中m是數(shù)據(jù)實(shí)例的個(gè)數(shù), xi是數(shù)據(jù)實(shí)例i的向量表達(dá), x拔是所有數(shù)據(jù)實(shí)例的平均向量。定義W為包含所有映射向量為列向量的矩陣,經(jīng)過線性代數(shù)變換,可以得到如下優(yōu)化目標(biāo)函數(shù):


    優(yōu)化目標(biāo)函數(shù)

    其中tr表示矩陣的跡
    A

    A是數(shù)據(jù)協(xié)方差矩陣。
    容易得到最優(yōu)的W是由數(shù)據(jù)協(xié)方差矩陣前k個(gè)最大的特征值對(duì)應(yīng)的特征向量作為列向量構(gòu)成的。這些特征向量形成一組正交基并且最好地保留了數(shù)據(jù)中的信息。
    PCA的輸出就是Y = W‘X,由X的原始維度降低到了k維。

    PCA追求的是在降維之后能夠最大化保持?jǐn)?shù)據(jù)的內(nèi)在信息,并通過衡量在投影方向上的數(shù)據(jù)方差的大小來衡量該方向的重要性。但是這樣投影以后對(duì)數(shù)據(jù)的區(qū)分作用并不大,反而可能使得數(shù)據(jù)點(diǎn)揉雜在一起無法區(qū)分。這也是PCA存在的最大一個(gè)問題,這導(dǎo)致使用PCA在很多情況下的分類效果并不好。具體可以看下圖所示,若使用PCA將數(shù)據(jù)點(diǎn)投影至一維空間上時(shí),PCA會(huì)選擇2軸,這使得原本很容易區(qū)分的兩簇點(diǎn)被揉雜在一起變得無法區(qū)分;而這時(shí)若選擇1軸將會(huì)得到很好的區(qū)分結(jié)果。


    PCA
  • Linear Discriminant Analysis(LDA)線性判別分析
    Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一種有監(jiān)督的(supervised)線性降維算法。與PCA保持?jǐn)?shù)據(jù)信息不同,LDA是為了使得降維后的數(shù)據(jù)點(diǎn)盡可能地容易被區(qū)分!
    了解詳情可參考LDA線性判別
  • 基于重建權(quán)值 (LLE)
    Locally linear embedding(LLE)是一種非線性降維算法,它能夠使降維后的數(shù)據(jù)較好地保持原有流形結(jié)構(gòu)。LLE可以說是流形學(xué)習(xí)方法最經(jīng)典的工作之一。很多后續(xù)的流形學(xué)習(xí)、降維方法都與LLE有密切聯(lián)系。
    見圖1,使用LLE將三維數(shù)據(jù)(b)映射到二維(c)之后,映射后的數(shù)據(jù)仍能保持原有的數(shù)據(jù)流形(紅色的點(diǎn)互相接近,藍(lán)色的也互相接近),說明LLE有效地保持了數(shù)據(jù)原有的流行結(jié)構(gòu)。
    但是LLE在有些情況下也并不適用,如果數(shù)據(jù)分布在整個(gè)封閉的球面上,LLE則不能將它映射到二維空間,且不能保持原有的數(shù)據(jù)流形。那么我們?cè)谔幚頂?shù)據(jù)中,首先假設(shè)數(shù)據(jù)不是分布在閉合的球面或者橢球面上。


    LLE

    LLE算法認(rèn)為每一個(gè)數(shù)據(jù)點(diǎn)都可以由其近鄰點(diǎn)的線性加權(quán)組合構(gòu)造得到。算法的主要步驟分為三步:(1)尋找每個(gè)樣本點(diǎn)的k個(gè)近鄰點(diǎn);(2)由每個(gè)樣本點(diǎn)的近鄰點(diǎn)計(jì)算出該樣本點(diǎn)的局部重建權(quán)值矩陣;(3)由該樣本點(diǎn)的局部重建權(quán)值矩陣和其近鄰點(diǎn)計(jì)算出該樣本點(diǎn)的輸出值。具體的算法流程如圖2所示:


    流程
  • Laplacian Eigenmaps 拉普拉斯特征映射
    繼續(xù)寫一點(diǎn)經(jīng)典的降維算法,前面介紹了PCA,LDA,LLE,這里講一講Laplacian Eigenmaps。其實(shí)不是說每一個(gè)算法都比前面的好,而是每一個(gè)算法都是從不同角度去看問題,因此解決問題的思路是不一樣的。這些降維算法的思想都很簡(jiǎn)單,卻在有些方面很有效。這些方法事實(shí)上是后面一些新的算法的思路來源。
    Laplacian Eigenmaps看問題的角度和LLE有些相似,也是用局部的角度去構(gòu)建數(shù)據(jù)之間的關(guān)系。詳情可參考:拉普拉斯特征映射
    其他的就不一一介紹了,下面就切入正題,本文將介紹一種新的降維方式

T-SNE降維

TSNE是由SNE衍生出的一種算法,SNE最早出現(xiàn)在2002年,它改變了MDS和ISOMAP中基于距離不變的思想,將高維映射到低維的同時(shí),盡量保證相互之間的分布概率不變,SNE將高維和低維中的樣本分布都看作高斯分布,而Tsne將低維中的坐標(biāo)當(dāng)做T分布,這樣做的好處是為了讓距離大的簇之間距離拉大,從而解決了擁擠問題。從SNE到TSNE之間,還有一個(gè)對(duì)稱SNE,其對(duì)SNE有部分改進(jìn)作用。
可以參考TSNE

  • 首先介紹一下SNE
    高維數(shù)據(jù)用X表示,Xi表示第i個(gè)樣本,低維數(shù)據(jù)用Y表示,則高維中的分布概率矩陣P定義如下:


    X

    P(i,j)表示第i個(gè)樣本分布在樣本j周圍的概率。delta是依據(jù)最大熵原理來決定,entropy=sum(pi*log(pi)),以每個(gè)樣本點(diǎn)作為中心的delta都需要使得最后分布的熵較小,通常以log(k)為上限,k為你所決定的鄰域點(diǎn)的個(gè)數(shù)。
    低維中的分布概率矩陣計(jì)算如下:


    Y

    這里我們把低維中的分布看作是均衡的,每個(gè)delta都是0.5,由此可以基本判斷最后降維之后生成的分布也是一個(gè)相對(duì)均勻的分布。
    隨機(jī)給定一個(gè)初始化的Y,進(jìn)行優(yōu)化,使得Y的分布矩陣逼近X的分布矩陣。我們給定目的函數(shù),用KL散度來定義兩個(gè)不同分布之間的差距:
    KL

    則可以計(jì)算梯度為:


    SGD

    每次梯度下降的步長(zhǎng)可設(shè)定固定或者自適應(yīng)、隨機(jī)等,也可以加上一個(gè)動(dòng)量的梯度,初始值一般設(shè)為1e-4的隨機(jī)正態(tài)分布。
    STEP

    這樣通過不斷的迭代,就可以達(dá)到X,Y分布的逼近
  • 對(duì)稱SNE
    顧名思義,就是讓高維和低維中的概率分布矩陣是對(duì)稱的,能方便運(yùn)算,但是對(duì)擁擠問題無改進(jìn)。
    低維的分布為:


    Y

    高維的分布為:


    X

    同樣采用KL散度作為兩個(gè)分布之間的差異標(biāo)準(zhǔn),只是梯度有一些改變:
    梯度
  • TSNE
    TSNE對(duì)高維中的分布采用對(duì)稱SNE中的做法,低維中的分布則采用更一般的T分布,也是對(duì)稱的,我們可以發(fā)現(xiàn)sum(P)=sum(Q)=1。
    高維分布:


    X

    低維一版的T分布


    Y

    則梯度為:
    梯度

    TSNE算法流程如下:
    TSNE算法流程
  • 最后不得不說一下LargeVis
    這個(gè)是最新的流形學(xué)數(shù)據(jù)降維方式,主要也是采用了tnse的思想,LargeVis在t-SNE改進(jìn)算法的基礎(chǔ)上,參考了近年來較為新穎的優(yōu)化技巧,如隨機(jī)投影樹、負(fù)采樣、邊采樣(實(shí)質(zhì)也是負(fù)采樣)等,直接將訓(xùn)練的時(shí)間復(fù)雜度降至線性級(jí)。
    怎么用可以參考LargeVis

數(shù)據(jù)降維的實(shí)現(xiàn)

推薦大家參考一下數(shù)據(jù)降維
tsne可以參考TSNE

  • 看個(gè)tsne的python例子
    import numpy as np
    from sklearn.manifold import TSNE
    X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
    model = TSNE(n_components=2, random_state=0)
    np.set_printoptions(suppress=True)
    model.fit_transform(X)
    array([[ 0.00017599, 0.00003993],
    [ 0.00009891, 0.00021913],
    [ 0.00018554, -0.00009357],
    [ 0.00009528, -0.00001407]])
    如果數(shù)據(jù)量比較大,我們可以采用spark來跑tnse
    可以參考: spark-tsne
    在spark這個(gè)項(xiàng)目上有個(gè)很好的例子,就是MINIST
    MINIST可視化

    如果想更深層次的了解sne -> tsne -> largvis可以參考:
    from-sne-to-tsne-to-largevis
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,481評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,697評(píng)論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,182評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,406評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,933評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,772評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,973評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評(píng)論 1 285
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,644評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,953評(píng)論 2 373

推薦閱讀更多精彩內(nèi)容