擬合
創(chuàng)新互聯(lián)公司專注于沈丘企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開發(fā)。沈丘網(wǎng)站建設(shè)公司,為沈丘等地區(qū)提供建站服務(wù)。全流程按需定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
他們都是擬合,先說下擬合的定義:
形象的說,擬合就是把平面上一系列的點,用一條光滑的曲線連接起來。因為這條曲線有無數(shù)種可能,從而有各種擬合方法。擬合的曲線一般可以用函數(shù)表示,根據(jù)這個函數(shù)的不同有不同的擬合名字。
1. 線性回歸
回歸分析常用于分析兩個變量X和Y 之間的關(guān)系。 比如 X=房子大小 和 Y=房價 之間的關(guān)系, X=(公園人流量,公園門票票價) 與 Y=(公園收入) 之間的關(guān)系等等。
那么你的數(shù)據(jù)點在圖上可以這么看
現(xiàn)在你想找到 房子大小和房價的關(guān)系, 也就是一個函數(shù)f(x) = y. 能夠很好的表示 這兩個變量之間的關(guān)系。
于是你需要大概評估一下這個 房子大小和房價大概是一個什么關(guān)系.
是線性的關(guān)系嗎? 還是非線性的關(guān)系?
當然在這個問題里面, 線性的關(guān)系更符合這兩者的關(guān)系。于是我們 選擇一個合適的 線性模型, 最常用的是 f(x) = ax+b.
然后用這個線性的模型 去 匹配這些數(shù)據(jù)點。
1.1 怎么匹配?
有了數(shù)據(jù)點 和 你臆想出來的線性模型,怎么進行匹配,也就是怎么用這根線最好地描述些數(shù)據(jù)點的關(guān)系?
需要最好地描述點, 我們又需要一個關(guān)于“好”的定義。你也可以想出很多關(guān)于“好”的定義。下面有兩個,
這兩個定義都是 將模型與數(shù)據(jù)點之間的距離差 之和做為 衡量匹配好壞的標準。 誤差越小, 匹配程度越大。
但是 總的來說, 我們想要找到的模型, 最后是想要使 f(x) 最大程度地 與y相似, 所以我們想要盡量地減少 f(x)與y之間的差值。 所以在這里 用第二個圖的“好的定義” 來評估這根線的匹配程度是很合理的。于是我們有了誤差公式!!!!!
這個公式,說的是,可以通過調(diào)整不同的a 和 b的值,就能使 誤差不斷變化,而當你找到這個公式的最小值時,你就能得到最好的a,b. 而這對(a,b)就是能最好描述你數(shù)據(jù)關(guān)系的模型參數(shù)。
1.1.1 沿導(dǎo)數(shù)下降法(Gradient Descent)
怎么找 cost(a,b)的最小? cost(a,b) 的圖像其實像一個碗 一樣,有一個最低點。 找這個最低點的辦法就是,先隨便找一個點(e.g. a=3, b = 2), 然后 沿著這個碗下降的方向找,最后就能找到碗的最低點。
cost(a,b) 的形狀
怎么找(某一點)碗下降的方向?? 答案是,找那一點導(dǎo)數(shù)的反方向。拿參數(shù)a 舉個例子, a與cost 關(guān)系如下圖,
只要將任意一個a, 沿著使cost 導(dǎo)數(shù)的反方向 慢慢移動,那么 最終有一天a值就會到達使 cost 最小的那一點. 于是你可以不斷地移動a,b, 向著最低點前進。
當然在進行移動的時候也需要考慮,每次移動的速度,也就是\Alpha的值,這個值也叫做(學(xué)習(xí)率). 學(xué)習(xí)率的增大可以加速參數(shù)逼近最優(yōu)的情況, 但是如果在快要到達函數(shù)的底端的時候,需要減小學(xué)習(xí)率,以免出現(xiàn)cost 不斷增大或者不停擺動的情況(如下圖, J(a,b)就是cost(a,b) )。 所以說,當出現(xiàn)以上兩種情況時候,我們應(yīng)該果斷選取一個較小的學(xué)習(xí)率, 以保證cost能減少到一個穩(wěn)定的值(我們稱為 收斂converge).
1.1.2 直接求解最小點方法
這時候,有的人會問,為什么要讓a不停地往下跑呢? 而且還需要設(shè)定學(xué)習(xí)率, 多麻煩, 直接讓找 導(dǎo)數(shù)為0點(最小極值), 不就可以了嗎? 嗯。。。也可以...但是各有優(yōu)缺,
具體方法和優(yōu)劣分析可見Rachel-Zhang 的博客:
總結(jié)一下: 回歸問題的解決方法是:
1. 假定一個模型 2. 定義什么叫做最好的匹配(構(gòu)造誤差函數(shù)) 3. 用這個模型去匹配已有的數(shù)據(jù)點(訓(xùn)練集)
需要進一步討論的問題:
如果參數(shù)(a,b)更多了該怎么辦?
如果最合適的匹配模型并不是線性的怎么辦? --- 選用一個 非線性模型 比如 y = ax^2 + bx + c.
如果誤差(cost)與a,b(模型參數(shù))的關(guān)系不是像碗一樣的, 而是凹凸不平的該怎么辦? ------ 這時候你就得注意你得到的cost的最低點(局部的最低)可能因初始點的不同而不同。 而這些最低點你需要進行比較,以確定是不是全局的最低
2.分類(Logistic regression)
分類問題也是一類很常見的問題。 比如說,怎么判定一個人是高富帥還是吊絲? 假如我是中央電視臺的記者,采訪了N個人, 拿到了第一手資料。資料如下
我們想要根據(jù)一個人的口袋錢數(shù)量,來預(yù)測一個人是(富帥) 還是 (吊絲). 我們能不能用回歸的方法做呢? 顯然是可以的, 我們只要找到一個模型,然后再進行匹配就可以了。
但是因為分類問題的y值常常是一些離散的數(shù)字,(比如, 富帥為1, 吊絲為0), 所以我們已經(jīng)不能用一個 簡單的線性函數(shù)來擬合這些數(shù)據(jù)了。我們需要一個更逼真的模型。
于是我們引入了一個更適合處理分類問題的函數(shù)--- 一個 非線性函數(shù), 階躍函數(shù)。
這個函數(shù)的形狀更像我們分類問題的數(shù)據(jù)分布,所以,用他來擬合分類問題的數(shù)據(jù)將 更適合!
所以我們有了一個新的模型,
通過調(diào)整a,b 的值,可以讓模型不斷改變以匹配數(shù)據(jù)點。 為了匹配數(shù)據(jù)點,我們又需要一個衡量匹配程度的函數(shù),就像 回歸問題一樣的cost 函數(shù). 于是同理我們可以得到cost
于是我們急切地想要把它用我們之前的gradient descent 的方法求解出使cost 最小的兩個a,b值。 但是很遺憾的是, 這個cost函數(shù)關(guān)于a,b,是非凸(non-convex)的。 就像下面那張圖那樣坑坑洼洼。。。
所以你 沒有辦法通過以上兩種方法(1.1.1和1.1.2)求出這個cost函數(shù)的 全局最小值。
所以你需要構(gòu)造一個更好的cost函數(shù), 在可以 衡量擬合程度的同時 又是 一個關(guān)于a,b 的凸函數(shù)(像回歸問題的cost一樣,和一個碗一樣,只有一個極小值).
這怎么構(gòu)造啊....
幸好我們還有各種偉大的數(shù)學(xué)家,他們夜以繼日,終于趕制出了一個形狀和碗一樣(convex)的cost函數(shù). (Maximum Likelihoods Estimation 更具體的介紹請看 )
現(xiàn)在我們又可以用我們熟悉的 導(dǎo)數(shù)方向下降法(gradient descent) 移動a, b的值,使cost 降低到最小。
最后,分類的問題就這樣被解決了。
當然,更復(fù)雜的問題可能有:
現(xiàn)在是分成兩類,如果數(shù)據(jù)需要分成三類或者更多該怎么辦? ---- 假如有A,B,C三類, 把其中A類做為1,BC做為0,然后做Logistic regression, 得到模型a, 同理將B類做為1,AC作為0,得到模型b, 再同理得到模型c. 最后測試的時候, 對任意一個數(shù)據(jù)點x, 我們能夠得到x分別屬于A,B,C三類的概率值
最后比較大小,哪個大,這個x就屬于哪一類
具體可看, (七)
3.總結(jié)(兩個問題的區(qū)別)
這篇文章大概的意圖是能想讓大家了解, 機器學(xué)習(xí)中最基本的兩類問題,線性回歸和分類。 能讓大家有個清晰的思想,對于這兩類問題都有以下幾個步驟,
如何選取一個 合理的模型(線性的,or 非線性的(e.g. 階躍函數(shù), 高斯函數(shù))).
制造一個"美好"的 誤差函數(shù) (可以評估擬合程度,而且還是convex函數(shù))
采取一切可能的技術(shù)(e.g. 導(dǎo)數(shù)下降法,解極值方程法) 求出最好的模型參數(shù)
談?wù)劵貧w和分類的區(qū)別:
其實 回歸問題和分類問題的本質(zhì)一樣,都是針對一個輸入做出一個輸出預(yù)測,其區(qū)別在于 輸出變量的類型。
分類問題是指,給定一個新的模式,根據(jù)訓(xùn)練集推斷它所對應(yīng)的類別(如:+1,-1),是一種定性輸出,也叫離散變量預(yù)測;
回歸問題是指,給定一個新的模式,根據(jù)訓(xùn)練集推斷它所對應(yīng)的輸出值(實數(shù))是多少,是一種定量輸出,也叫連續(xù)變量預(yù)測。
舉個例子:預(yù)測明天的氣溫是多少度,這是一個回歸任務(wù);預(yù)測明天是陰、晴還是雨,就是一個分類任務(wù)。
文章知識點與官方知識檔案匹配
算法技能樹首頁概覽
31211 人正在系統(tǒng)學(xué)習(xí)中
點擊閱讀全文
打開CSDN,閱讀體驗更佳
PyTorch-RNN循環(huán)神經(jīng)網(wǎng)絡(luò)實現(xiàn)分類-回歸_Coding路人王的博客
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)是一類以序列(sequence)數(shù)據(jù)為輸入,在序列的演進方向進行遞歸(recursion)且所有節(jié)點(循環(huán)單元)按鏈式連接的遞歸神經(jīng)網(wǎng)絡(luò)(recursive neural network) 對循環(huán)神經(jīng)網(wǎng)絡(luò)的研究始于二十世紀80-90年代,...
分類與回歸及網(wǎng)絡(luò)搭建+神經(jīng)網(wǎng)絡(luò)簡介(學(xué)習(xí)記錄與分享)
1.神經(jīng)網(wǎng)絡(luò)是函數(shù) 有人可能會認為神經(jīng)網(wǎng)絡(luò)是池化層,全連接層,激活函數(shù)等等元素構(gòu)成。但學(xué)長告訴我們,神經(jīng)網(wǎng)絡(luò)本質(zhì)就是函數(shù)。 所以下次可以在不懂的朋友面前裝一手,問他什么是神經(jīng)網(wǎng)絡(luò)啊,你可以告訴他,神經(jīng)網(wǎng)絡(luò)就是函數(shù)(doge) 2.介紹一...
BP神經(jīng)網(wǎng)絡(luò)用于分類和回歸
matlab 編寫的BP神經(jīng)網(wǎng)絡(luò),用于分類和回歸
【機器學(xué)習(xí)基礎(chǔ)】分類任務(wù) 和 回歸任務(wù) 的 區(qū)別與聯(lián)系
分類任務(wù) 和 回歸任務(wù) 的區(qū)別在于 需要預(yù)測的值的類型: 回歸任務(wù),是對 連續(xù)值 進行預(yù)測(比如 多少); 分類任務(wù),是對 離散值 進行預(yù)測(比如 是不是,屬不屬于,或者 屬于哪一類)。 打個比方, 預(yù)測 明天的氣溫是多少度,這是一個回歸任務(wù); 預(yù)測 明天會不會下雨,就是一個分類任務(wù)。
繼續(xù)訪問
多分類神經(jīng)網(wǎng)絡(luò):Softmax回歸_L_bloomer的博客_神經(jīng)網(wǎng)絡(luò)...
1.邏輯回歸是一個單層神經(jīng)網(wǎng)絡(luò),計算非??焖?在使用OvR和MvM這樣需要同時建立多個模型的方 法時,運算速度不會成為太大的問題。但真實使用的神經(jīng)網(wǎng)絡(luò)往往是一個龐大的算法,建立一個模 型就會耗費很多時間,因此必須建立很多個模型來求解的...
神經(jīng)網(wǎng)絡(luò)-回歸(Python)_li_rshan的博客
回歸與神經(jīng)網(wǎng)絡(luò)簡介 回歸分析 回歸分析(regression analysis)是確定兩種或兩種以上變量間相互依賴的定量關(guān)系的一種統(tǒng)計分析方法。 回歸分析的作用是: ①從一組數(shù)據(jù)出發(fā)確定某些變量之間的定量關(guān)系式 ②對變量間這些關(guān)系式進行統(tǒng)計檢驗。并從...
最新發(fā)布 深度學(xué)習(xí)——分類和回歸問題聯(lián)系與區(qū)別
深度學(xué)習(xí)——分類和回歸問題聯(lián)系與區(qū)別
繼續(xù)訪問
人工神經(jīng)網(wǎng)絡(luò)的分類包括,人工神經(jīng)網(wǎng)絡(luò)的分類有
從20世紀80年代末期,人工神經(jīng)網(wǎng)絡(luò)方法開始應(yīng)用于遙感圖像的自動分類。目前,在遙感圖像的自動分類方面,應(yīng)用和研究比較多的人工神經(jīng)網(wǎng)絡(luò)方法主要有以下幾種:人腦計算機對接技術(shù)項目名稱:小發(fā)貓 (1)BP(Back Propagation)神經(jīng)網(wǎng)絡(luò),這是一種應(yīng)用較廣泛的前饋式網(wǎng)絡(luò),屬于有監(jiān)督分類算法,它將先驗知識融于網(wǎng)絡(luò)學(xué)習(xí)之中,加以最大限度地利用,適應(yīng)性好,在類別數(shù)少的情況下能夠得到相當高的精度,但是其網(wǎng)絡(luò)的學(xué)習(xí)主要采用誤差修正算法,識別對象種類多時,隨著網(wǎng)絡(luò)規(guī)模的擴大,需要的計算過程較長,收斂緩慢而不穩(wěn)定,且
繼續(xù)訪問
(二)神經(jīng)網(wǎng)絡(luò)入門之Logistic回歸(分類問題)_coderpai的博客
這篇教程是翻譯Peter Roelants寫的神經(jīng)網(wǎng)絡(luò)教程,作者已經(jīng)授權(quán)翻譯,這是原文。 該教程將介紹如何入門神經(jīng)網(wǎng)絡(luò),一共包含五部分。你可以在以下鏈接找到完整內(nèi)容。 Logistic回歸(分類問題) 這部分教程將介紹一部分: ...
組合分類和回歸的神經(jīng)網(wǎng)絡(luò)模型_Together_CZ的博客_回歸網(wǎng)絡(luò)...
我們可以將數(shù)據(jù)用作開發(fā)單獨的回歸和分類多層感知器(MLP)神經(jīng)網(wǎng)絡(luò)模型的基礎(chǔ)。 注意:我們并未嘗試為此數(shù)據(jù)集開發(fā)最佳模型; 相反,我們正在展示一種特定的技術(shù):開發(fā)可以進行回歸和分類預(yù)測的模型。
Tensorflow學(xué)習(xí)二:神經(jīng)網(wǎng)絡(luò)用于分類和回歸的損失函數(shù)
引言: 對于二分類問題,一般會將預(yù)測結(jié)果經(jīng)過一個非線性變換縮小到0到1之間,并設(shè)置一個閥值,比如0.5,小于0.5便是0,大于0.5便是1。但是這種做法對于多分類是不適用的。交叉熵: 通過神經(jīng)網(wǎng)絡(luò)解決多分類的方法是設(shè)置n個輸出節(jié)點,n代表類別數(shù)。對于每一個樣例,神經(jīng)網(wǎng)絡(luò)會得到一個n維數(shù)組做為輸出結(jié)果。數(shù)組中的每一個維度代表對應(yīng)的類別。理想情況下,如果一個樣本屬于k,那么這個類...
繼續(xù)訪問
人工神經(jīng)網(wǎng)絡(luò)模型與分類
1. 人工神經(jīng)網(wǎng)絡(luò)的分類 按性能分:連續(xù)型和離散型網(wǎng)絡(luò),或確定型和隨機型網(wǎng)絡(luò)。 按拓撲結(jié)構(gòu)分:前向網(wǎng)絡(luò)和反饋網(wǎng)絡(luò)。 前向網(wǎng)絡(luò)有自適應(yīng)線性神經(jīng)網(wǎng)絡(luò)(AdaptiveLinear,簡稱Adaline)、單層感知器、多層感知器、BP等。 前向網(wǎng)絡(luò),網(wǎng)絡(luò)中各個神經(jīng)元接受前一級的輸入,并輸出到下一級,網(wǎng)絡(luò)中沒有反饋,可以用一個有向無環(huán)路圖表示。這種網(wǎng)絡(luò)實現(xiàn)信號從輸入空間
繼續(xù)訪問
深度學(xué)習(xí)---卷積神經(jīng)網(wǎng)絡(luò)解決分類與回歸問題_wowMJX的博客
(1)分類:經(jīng)過一系列的卷積層和池化層之后,再經(jīng)過全連接層得到樣本屬于每個類的得分(概率值),用softmax對其進行分類。 (2)回歸:定位,用一個矩形框來框住要識別的物體。 ①回歸:輸入數(shù)據(jù)通過神經(jīng)網(wǎng)絡(luò)不斷的擬合數(shù)據(jù)得到x,y,w,h,通...
機器學(xué)習(xí) --- 1. 線性回歸與分類, 解決與區(qū)別
機器學(xué)習(xí)可以解決很多問題,其中最為重要的兩個是 回歸與分類。 這兩個問題怎么解決, 它們之間又有什么區(qū)別呢? 以下舉幾個簡單的例子,以給大家一個概念 1. 線性回歸 回歸分析常用于分析兩個變量X和Y 之間的關(guān)系。 比如 X=房子大小 和 Y=房價 之間的關(guān)系, X=(公園人流量,公園門票票價) 與 Y=(公園收入) 之間的關(guān)系等等。 那么你的數(shù)據(jù)點在圖上可以這么看 現(xiàn)在你想找到 房
繼續(xù)訪問
線性模型小結(jié):還分不清線性回歸和線性分類模型?
線性模型0. 寫在前面1. 線性模型2. 用于回歸和分類回歸問題分類問題3. 分類任務(wù)的幾個問題3.1 如何解決非線性的分類問題3.2 如何解決多分類問題:三種解決 0. 寫在前面 今天對線性模型做一個總結(jié),圍繞以下兩個點理一理思路: 判別函數(shù) - 決策函數(shù); 線性模型 - 線性模型各類拓展 具體沿著以下幾個問題展開: 1. 生成方法與判別方法 2. 判別函數(shù)與決策函數(shù) 3. 線性模型 4. 廣義...
def?f(T):
def?wrap(t):
if?t??0?and?t??T?/?2:?return?1
elif?t?==?T?/?2:?return?0
else:return?-1
return?wrap
if?__name__?==?'__main__':
d?=?f(2)
print?d(2)
UMAP ,全稱uniform manifold approximation and projection,統(tǒng)一流形逼近與投影,是基于黎曼幾何和代數(shù)拓撲的理論框架結(jié)構(gòu)構(gòu)建的。在處理大數(shù)據(jù)集時,UMAP優(yōu)勢明顯,運行速度更快,內(nèi)存占用小。Etienne Becht等人2019年在Nature Biotechnology上發(fā)表一篇文章將其應(yīng)用在生物學(xué)數(shù)據(jù)上并闡述了UMAP在處理單細胞數(shù)據(jù)方面的應(yīng)用和優(yōu)勢。
如果你不知道tSNE是什么,它是如何工作的,也沒有讀過2008年的革命性的van der Maaten Hinton原稿,可以參考我的那文章 10X單細胞(10X空間轉(zhuǎn)錄組)降維分析之tSNE(算法基礎(chǔ)知識) 。盡管tSNE對一般的單細胞基因組學(xué)和數(shù)據(jù)科學(xué)產(chǎn)生了巨大的影響,但人們普遍認為它有一些缺點,這些缺點很快將得到解決。( tSNE的缺點在上次分享的文章中也做過詳細的介紹 )。
看看上面的圖,我想說的是 t分布應(yīng)該提供全局距離信息,因為它們將高維空間中相距較遠的點推到低維空間中更遠的點。
然而,這種良好的意愿被成本函數(shù)(KL-divergence)的選擇所扼殺,我們將在后面看到其原因。
(1),可以顯著降低計算時間高維圖像由于求和或集成是一個代價高昂的計算過程。想想馬爾可夫鏈蒙特卡羅(MCMC)它基本上是試圖近似地計算在貝葉斯規(guī)則的分母上的積分(UMAP使用最近鄰居的數(shù)量而不是perplexity)
(2)定義perplexity, UMAP則定義了沒有l(wèi)og2函數(shù)的最近鄰居k的個數(shù),即:
UMAP使用稍微不同的高維概率對稱
symmterization是必要的因為UMAP融合在一起的點與本地不同的指標(通過參數(shù)ρ),它可能發(fā)生圖A和B節(jié)點之間的重量不等于B之間的權(quán)重和節(jié)點。為什么UMAP使用這種對稱而不是tSNE使用的對稱還不清楚。我將在下一篇文章(從頭開始編寫UMAP)中展示我對不同的對稱化規(guī)則的實驗,這并沒有使我相信這是如此重要的一步,因為它對最終的低維嵌入式產(chǎn)生了很小的影響。
UMAP使用曲線族1 / (1+a*y^(2b))在低維中建模距離概率,不是完全的學(xué)生t分布,但非常非常相似,請注意再次沒有應(yīng)用標準化:
其中,對于默認UMAP超參數(shù)a≈1.93,b≈0.79(實際上,對于min_dist = 0.001)。在實踐中,UMAP從非線性最小二乘擬合到帶有min_dist超參數(shù)的分段函數(shù)中找到a和b:
為了更好地理解曲線族1 / (1+a*y^(2b))的行為,讓我們畫出不同a和b的曲線:
我們可以看到曲線族對參數(shù)b非常敏感,在大的參數(shù)b處,在小的參數(shù)y處,曲線族形成了一種高峰。這意味著在UMAP超參數(shù)min_dist之下,所有的數(shù)據(jù)點都是同樣緊密相連的。由于Q(Y)函數(shù)的行為幾乎像一個Heaviside階躍函數(shù),這意味著UMAP為所有在低維空間中相互靠近的點分配了幾乎相同的低維坐標。min_dist正是導(dǎo)致在UMAP維數(shù)降低圖中經(jīng)常觀察到的超密集集群的原因。
為了演示如何準確地找到a和b參數(shù),讓我們展示一個簡單的分段函數(shù)(其中高峰部分是通過min_dist參數(shù)定義的),并使用函數(shù)族1 / (1+a y^(2b))通過優(yōu)化來擬合它。curve_fit來自Scipy Python庫。作為擬合的結(jié)果,我們得到了函數(shù)1 / (1+a y^(2b))的初值a和初值b。
由于我們需要知道交叉熵的梯度,以便以后實現(xiàn)梯度下降,讓我們快速計算它。忽略只包含p(X)的常數(shù)項,我們可以將交叉熵重新寫一下,并將其微分如下:
圖拉普拉斯、譜聚類、拉普拉斯Eignemaps、擴散圖、譜嵌入等,實際上是指將矩陣分解和鄰接圖方法結(jié)合起來解決降維問題的同一種有趣的方法。在這種方法中,我們首先構(gòu)造一個圖(或knn圖),然后通過構(gòu)造拉普拉斯矩陣用矩陣代數(shù)(鄰接矩陣和度矩陣)將其形式化,最后分解拉普拉斯矩陣,即求解特征值分解問題。
我們可以使用scikit-learn Python庫,并使用spectralembedded函數(shù)在演示數(shù)據(jù)集(即與癌癥相關(guān)的成纖維細胞(CAFs) scRNAseq數(shù)據(jù))上輕松地顯示初始的低維坐標:
最后,UMAP使用隨機梯度下降(SGD)代替常規(guī)梯度下降(GD),如tSNE / FItSNE,這既加快了計算速度,又減少了內(nèi)存消耗。
現(xiàn)在讓我們簡要地討論一下為什么他們說tSNE只保留數(shù)據(jù)的局部結(jié)構(gòu)??梢詮牟煌慕嵌葋砝斫鈚SNE的局部性。首先,我們有σ參數(shù)Eq。(1)本地數(shù)據(jù)點集這樣互相“感覺”。因為成對歐幾里得距離衰減指數(shù)的概率,在小的σ值,它基本上是零遙遠的點(大型X)和快速增長僅為最近的鄰居(小X)。相比之下,在大的σ,遙遠而近點的概率成為限制可比和σ→∞,概率就等于1為所有任何一對點之間的距離,即成為等距點。
有趣的是,如果我們擴大成對歐幾里得距離的概率高維度成泰勒級數(shù)在σ→∞,我們會在第二近似冪律:
關(guān)于兩兩歐幾里得距離的冪律類似于多維定標法(MDS)的成本函數(shù),MDS是通過保存每對點之間的距離來保存全局距離,而不管它們是相距很遠還是很近。一個可以解釋這個大的σtSNE遠程數(shù)據(jù)點之間的相互作用,所以是不完全正確的說tSNE只能處理當?shù)氐木嚯x。然而,我們通常會受到perplexity有限值的限制,Laurens van der Maaten建議perplexity的取值范圍在5到50之間,盡管在局部信息和全局信息之間可能會有一個很好的折衷,那就是使用平方根≈N^(1/2)來選擇perplexity,其中N為樣本量。相反的極限,σ→0,我們最終的極端“局部性”高維概率的行為類似于狄拉克δ函數(shù)的行為。
另一種理解tSNE“局部性”的方法是考慮KL-divergence函數(shù)。假設(shè)X是高維空間中點之間的距離Y是低維空間中點之間的距離
根據(jù)kl -散度的定義:
方程(9)的第一項對于X的大小都是趨近于0的,對于X的大小也是趨近于0的,因為指數(shù)趨近于1,而log(1)=0。對于大X,這一項仍然趨近于0因為指數(shù)前因子趨近于0的速度快于對數(shù)趨近于負無窮。因此,為了直觀地理解kl散度,只考慮第二項就足夠了:
這是一個看起來很奇怪的函數(shù),讓我們畫出KL(X, Y)
這個函數(shù)的形狀非常不對稱。如果點在高維度X之間的距離很小,指數(shù)因子變成1和對數(shù)項行為日志(1 + Y ^ 2)這意味著如果Y是在低維空間的距離大,將會有一個大的懲罰,因此tSNE試圖減少Y在小X為了減少罰款。相反,對于高維空間中的長距離X, Y基本上可以是0到∞之間的任何值,因為指數(shù)項趨于0,并且總是勝過對數(shù)項。因此,在高維空間中相距遙遠的點,在低維空間中可能會相互靠近。因此,換句話說,tSNE并不能保證高維空間中相距較遠的點在低維空間中會保持較遠的距離。然而,它確實保證了在高維空間中相鄰的點在低維空間中保持相鄰。所以tSNE不是很擅長遠距離投射至低維,所以它只保留本地數(shù)據(jù)結(jié)構(gòu)提供了σ不去∞。
與tSNE不同,UMAP使用交叉熵(CE)作為成本函數(shù),而不是KL-divergence
這導(dǎo)致了地方-全球結(jié)構(gòu)保護平衡的巨大變化。在X的小值處,我們得到了與tSNE相同的極限,因為第二項由于前因子和對數(shù)函數(shù)比多項式函數(shù)慢的事實而消失:
因此,為了使懲罰規(guī)則最小化,Y坐標必須非常小,即Y→0。這與tSNE的行為完全一樣。但是,在大X的相反極限,即X→∞時,第一項消失,第二項的前因子為1,得到:
這里,如果Y很小,我們會得到一個很大的懲罰,因為Y在對數(shù)的分母上,因此,我們鼓勵Y很大,這樣,對數(shù)下的比率就變成了1,我們得到零懲罰。因此,我們在X→∞處得到Y(jié)→∞,所以從高維空間到低維空間的整體距離保持不變,這正是我們想要的。為了說明這一點,讓我們繪制UMAP CE成本函數(shù):
在這里,我們可以看到圖的“右”部分看起來與上面的kl散度曲面非常相似。這意味著在X低的時候,為了減少損失,我們?nèi)匀幌胍猋低。然而,當X很大時,Y的距離也要很大,因為如果它很小,CE (X, Y)的損失將是巨大的。記住,之前,對于KL (X, Y)曲面,在X很大的情況下,我們在高Y值和低Y值之間沒有差別,這就是為什么CE (X, Y)代價函數(shù)能夠保持全局距離和局部距離。
我們知道UMAP是速度比tSNE擔憂)時大量的數(shù)據(jù)點,b)嵌入維數(shù)大于2或3,c)大量環(huán)境維度的數(shù)據(jù)集。在這里,讓我們試著了解UMAP要優(yōu)于tSNE來自于數(shù)學(xué)和算法實現(xiàn)。
tSNE和UMAP基本上都包含兩個步驟:
然而,我注意到UMAP的第一步比tSNE快得多。這有兩個原因:
接下來,UMAP實際上在第二步中也變得更快了。這種改善也有幾個原因:
在這篇文章中,我們了解到盡管tSNE多年來一直服務(wù)于單細胞研究領(lǐng)域,但它有太多的缺點,如速度快、缺乏全球距離保存。UMAP總體上遵循了tSNE的哲學(xué),但是引入了一些改進,例如另一個成本函數(shù)和缺少高維和低維概率的標準化。
除了運行速度快,內(nèi)存占用小等特點,UMAP在處理細胞學(xué)數(shù)據(jù)時還有一個大的優(yōu)勢,就是可以反映細胞群體之間分化的連續(xù)性和組織性。下面將通過文獻中的數(shù)據(jù)【2】來為大家詳細講解。
對同一組數(shù)據(jù)分別進行tSNE和UMAP降維,該數(shù)據(jù)為多達30萬個從8種不同組織富集得到的T細胞和NK細胞的樣本,并使用Phenograph聚類把細胞分為6大類,每種顏色代表一種細胞。從圖中可以看出,UMAP和tSNE都可以較好地把不同類別的細胞分開。但tSNE傾向于把相同細胞群劃分為更多的群,如圖顯示,黑色圈中CD8 T細胞,在tSNE結(jié)果中,群數(shù)更多,距離更遠。
同樣這組數(shù)據(jù)用組織來源對UMAP和t-SNE圖上細胞的進行顏色區(qū)分,可以觀察到一個有意思的現(xiàn)象。與UMAP相比,t-SNE更加傾向于根據(jù)它們的來源來分離總體細胞。而 UMAP則會兼顧細胞群的類別和來源來排列,如圖中在CD4 T細胞和CD8 T細胞群內(nèi),細胞的排列與來源也會有一定的規(guī)律性,都是大致從臍帶血(CB)和外周血單核細胞(PBMC),到肝臟(Liver)和脾臟(Spleen),最后到一端的扁桃或另一端的皮膚(Skin)、腸道(Gut)和肺(Lung)。
通過駐留記憶T細胞標志物CD69/CD103、記憶T細胞標志物CD45 RO和na?ve T細胞標志物CCR7表達群的分布,可以觀察到UMAP可以展示出T細胞連續(xù)的分化階段。而tSNE結(jié)果中,這些群之間也是連續(xù)的,但是卻沒有非常明顯的沿軸結(jié)構(gòu)。同樣的現(xiàn)象也在造血細胞系統(tǒng)中被觀察到。由此可見, UMAP在大數(shù)據(jù)集的處理時可以展現(xiàn)細胞集群的連續(xù)性。
對三組數(shù)據(jù)(Samusik、Wong、Han_400k)分別進行數(shù)據(jù)隨機降低至100-200,000之間不同的數(shù)量級,形成小數(shù)據(jù)集??v軸為小數(shù)據(jù)集與原始數(shù)據(jù)集的相關(guān)性,代表降維方法在不同數(shù)據(jù)量上的可重復(fù)性。UMAP表現(xiàn)最好,數(shù)據(jù)集越大,優(yōu)勢越明顯。
下圖是UMAP和t-SNE對一套784維Fashion MNIST高維數(shù)據(jù)集降維到3維的效果的比較。
雖然這兩種算法都表現(xiàn)出強大的局部聚類并將相似的類別分組在一起,但UMAP還將這些相似類別的分組彼此分開。另外,UMAP降維用了4分鐘,而多核t-SNE用了27分鐘。
UMAP的兩個最常用的參數(shù):n_neighbors 和 min_dist,它們可有效地用于控制最終結(jié)果中局部結(jié)構(gòu)和全局結(jié)構(gòu)之間的平衡。
最重要的參數(shù)是 n_neighbors ,近似最近鄰居數(shù)。它有效地控制了UMAP局部結(jié)構(gòu)與全局結(jié)構(gòu)的平衡,數(shù)據(jù)較小時,UMAP會更加關(guān)注局部結(jié)構(gòu),數(shù)據(jù)較大時,UMAP會趨向于代表大圖結(jié)構(gòu),丟掉一些細節(jié)。
第二個參數(shù)是 min_dist,點之間的最小距離。此參數(shù)控制UMAP聚集在一起的緊密程度,數(shù)據(jù)較小時,會更緊密。較大的值會更松散,而將重點放在保留廣泛的拓撲結(jié)構(gòu)上。
t-SNE和UMAP大部分的表現(xiàn)非常相似,但以下示例明顯例外:寬而稀疏的cluster中有密集的cluster(如下圖所示)。UMAP無法分離兩個嵌套的群集,尤其是在維數(shù)較高時。
UMAP在初始圖形構(gòu)造中局部距離的使用可以解釋該算法無法處理情況的原因。由于高維點之間的距離趨于非常相似(維數(shù)的詛咒),所以可能會因此將其混合在一起。
算法很難,所以懂的人才顯得牛
天行健,君子以自強不息
雖然計算機擁有相對大量的電子計算元件、巨大的存儲空間,并且這些計算機的運行頻率比肉蓬蓬、軟綿綿的生物大腦要快得多,但是即使是像鴿子一樣小的大腦,其能力也遠遠大于這些電子計算機。
傳統(tǒng)的計算機按照嚴格的串行順序,相當準確具體地處理數(shù)據(jù)。對于這些冰冷堅硬的計算機而言,不存在模糊性和不確定性。而另一方面,動物的大腦表面上看起來以慢得多的節(jié)奏運行,卻似乎以并行方式處理信號,模糊性是其計算的一種特征。
雖然神經(jīng)元有各種形式,但是所有的神經(jīng)元都是將電信號從一端傳輸?shù)搅硪欢?,沿著軸突,將電信號從樹突傳到樹突。然后,這些信號從?一個神經(jīng)元傳遞到另一個神經(jīng)元。
我們需要多少神經(jīng)元才能執(zhí)行相對復(fù)雜的有趣任務(wù)呢?
一般來說,能力非常強的人類大腦有大約1000億個神經(jīng)元!一只果蠅有約10萬個神經(jīng)元,能夠飛翔、覓食、躲避危險、尋找食物以及執(zhí)行許多相當復(fù)雜的任務(wù)。? 10萬個神經(jīng)元,這個數(shù)字恰好落在了現(xiàn)代計算機試圖復(fù)制的范圍內(nèi)。? ? 一只線蟲僅僅具有302個神經(jīng)元,與今天的數(shù)字計算資源相比,簡直就是微乎其微!但是一直線蟲能夠完成一些相當有用的任務(wù),而這些任務(wù)對于尺寸大得多的傳統(tǒng)計算機程序而言卻難以完成。
激活函數(shù):
階躍函數(shù),S函數(shù)。
Shape Parameters
形態(tài)參數(shù)
While a general continuous random variable can be shifted and scaled
with the loc and scale parameters, some distributions require additional
shape parameters. For instance, the gamma distribution, with density
γ(x,a)=λ(λx)a?1Γ(a)e?λx,
requires the shape parameter a. Observe that setting λ can be obtained by setting the scale keyword to 1/λ.
雖然一個一般的連續(xù)隨機變量可以被位移和伸縮通過loc和scale參數(shù),但一些分布還需要額外的形態(tài)參數(shù)。作為例子,看到這個伽馬分布,這是它的密度函數(shù)
γ(x,a)=λ(λx)a?1Γ(a)e?λx,
要求一個形態(tài)參數(shù)a。注意到λ的設(shè)置可以通過設(shè)置scale關(guān)鍵字為1/λ進行。
Let’s check the number and name of the shape parameters of the gamma
distribution. (We know from the above that this should be 1.)
讓我們檢查伽馬分布的形態(tài)參數(shù)的名字的數(shù)量。(我們知道從上面知道其應(yīng)該為1)
from scipy.stats import gamma
gamma.numargs
1
gamma.shapes
'a'
Now we set the value of the shape variable to 1 to obtain the
exponential distribution, so that we compare easily whether we get the
results we expect.
現(xiàn)在我們設(shè)置形態(tài)變量的值為1以變成指數(shù)分布。所以我們可以容易的比較是否得到了我們所期望的結(jié)果。
gamma(1, scale=2.).stats(moments="mv")
(array(2.0), array(4.0))
Notice that we can also specify shape parameters as keywords:
注意我們也可以以關(guān)鍵字的方式指定形態(tài)參數(shù):
gamma(a=1, scale=2.).stats(moments="mv")
(array(2.0), array(4.0))
Freezing a Distribution
凍結(jié)分布
Passing the loc and scale keywords time and again can become quite
bothersome. The concept of freezing a RV is used to solve such problems.
不斷地傳遞loc與scale關(guān)鍵字最終會讓人厭煩。而凍結(jié)RV的概念被用來解決這個問題。
rv = gamma(1, scale=2.)
By using rv we no longer have to include the scale or the shape
parameters anymore. Thus, distributions can be used in one of two ways,
either by passing all distribution parameters to each method call (such
as we did earlier) or by freezing the parameters for the instance of the
distribution. Let us check this:
通過使用rv我們不用再更多的包含scale與形態(tài)參數(shù)在任何情況下。顯然,分布可以被多種方式使用,我們可以通過傳遞所有分布參數(shù)給對方法的每次調(diào)用(像我們之前做的那樣)或者可以對一個分布對象凍結(jié)參數(shù)。讓我們看看是怎么回事:
rv.mean(), rv.std()
(2.0, 2.0)
This is indeed what we should get.
這正是我們應(yīng)該得到的。
Broadcasting
廣播
The basic methods pdf and so on satisfy the usual numpy broadcasting
rules. For example, we can calculate the critical values for the upper
tail of the t distribution for different probabilites and degrees of
freedom.
像pdf這樣的簡單方法滿足numpy的廣播規(guī)則。作為例子,我們可以計算t分布的右尾分布的臨界值對于不同的概率值以及自由度。
stats.t.isf([0.1, 0.05, 0.01], [[10], [11]])
array([[ 1.37218364, 1.81246112, 2.76376946],
[ 1.36343032, 1.79588482, 2.71807918]])
Here, the first row are the critical values for 10 degrees of freedom
and the second row for 11 degrees of freedom (d.o.f.). Thus, the
broadcasting rules give the same result of calling isf twice:
這里,第一行是以10自由度的臨界值,而第二行是以11為自由度的臨界值。所以,廣播規(guī)則與下面調(diào)用了兩次isf產(chǎn)生的結(jié)果相同。
stats.t.isf([0.1, 0.05, 0.01], 10)
array([ 1.37218364, 1.81246112, 2.76376946])
stats.t.isf([0.1, 0.05, 0.01], 11)
array([ 1.36343032, 1.79588482, 2.71807918])
If the array with probabilities, i.e, [0.1, 0.05, 0.01] and the array of
degrees of freedom i.e., [10, 11, 12], have the same array shape, then
element wise matching is used. As an example, we can obtain the 10% tail
for 10 d.o.f., the 5% tail for 11 d.o.f. and the 1% tail for 12 d.o.f.
by calling
但是如果概率數(shù)組,如[0.1,0.05,0.01]與自由度數(shù)組,如[10,11,12]具有相同的數(shù)組形態(tài),則元素對應(yīng)捕捉被作用,我們可以分別得到10%,5%,1%尾的臨界值對于10,11,12的自由度。
stats.t.isf([0.1, 0.05, 0.01], [10, 11, 12])
array([ 1.37218364, 1.79588482, 2.68099799])
Specific Points for Discrete Distributions
離散分布的特殊之處
Discrete distribution have mostly the same basic methods as the
continuous distributions. However pdf is replaced the probability mass
function pmf, no estimation methods, such as fit, are available, and
scale is not a valid keyword parameter. The location parameter, keyword
loc can still be used to shift the distribution.
離散分布的簡單方法大多數(shù)與連續(xù)分布很類似。當然像pdf被更換為密度函數(shù)pmf,沒有估計方法,像fit是可用的。而scale不是一個合法的關(guān)鍵字參數(shù)。Location參數(shù),關(guān)鍵字loc則仍然可以使用用于位移。
The computation of the cdf requires some extra attention. In the case of
continuous distribution the cumulative distribution function is in most
standard cases strictly monotonic increasing in the bounds (a,b) and
has therefore a unique inverse. The cdf of a discrete distribution,
however, is a step function, hence the inverse cdf, i.e., the percent
point function, requires a different definition:
ppf(q) = min{x : cdf(x) = q, x integer}
Cdf的計算要求一些額外的關(guān)注。在連續(xù)分布的情況下,累積分布函數(shù)在大多數(shù)標準情況下是嚴格遞增的,所以有唯一的逆。而cdf在離散分布,無論如何,是階躍函數(shù),所以cdf的逆,分位點函數(shù),要求一個不同的定義:
ppf(q) = min{x : cdf(x) = q, x integer}
For further info, see the docs here.
為了更多信息可以看這里。
We can look at the hypergeometric distribution as an example
from scipy.stats import hypergeom
[M, n, N] = [20, 7, 12]
我們可以看這個超幾何分布的例子
from scipy.stats import hypergeom
[M, n, N] = [20, 7, 12]
If we use the cdf at some integer points and then evaluate the ppf at
those cdf values, we get the initial integers back, for example
如果我們使用在一些整數(shù)點使用cdf,它們的cdf值再作用ppf會回到開始的值。
x = np.arange(4)*2
x
array([0, 2, 4, 6])
prb = hypergeom.cdf(x, M, n, N)
prb
array([ 0.0001031991744066, 0.0521155830753351, 0.6083591331269301,
0.9897832817337386])
hypergeom.ppf(prb, M, n, N)
array([ 0., 2., 4., 6.])
If we use values that are not at the kinks of the cdf step function, we get the next higher integer back:
如果我們使用的值不是cdf的函數(shù)值,則我們得到一個更高的值。
hypergeom.ppf(prb + 1e-8, M, n, N)
array([ 1., 3., 5., 7.])
hypergeom.ppf(prb - 1e-8, M, n, N)
array([ 0., 2., 4., 6.])
round()函數(shù)用錯了啊,你應(yīng)該寫成:
lb = round(fx*2.205, 2)
這樣。
round(x[, n])
Return the floating point value x rounded to n digits after the decimal point. If n is omitted, it defaults to zero. Delegates to x.__round__(n).
For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus n; if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2). The return value is an integer if called with one argument, otherwise of the same type as x.
如果對您有幫助,請記得采納為滿意答案,謝謝!祝您生活愉快!