亚洲精品国产精品制服丝袜,亚洲欧美日韩精品a∨,97在线热免费视频精品视频,亚洲人成在线观看网站不卡

用 K-means 聚類做市場(chǎng)狀態(tài)分析 —— 大陽(yáng)線之后更危險(xiǎn)?

發(fā)布時(shí)間:2017-07-18  |   來源: 川總寫量化

作者:石川


1 無監(jiān)督聚類


無監(jiān)督學(xué)習(xí)(unsupervised learning)是機(jī)器學(xué)習(xí)中的三大類問題之一,另外兩類分別為監(jiān)督學(xué)習(xí)(supervised learning)和強(qiáng)化學(xué)習(xí)(reinforcement learning)。在無監(jiān)督學(xué)習(xí)問題中,對(duì)于給定的觀測(cè)數(shù)據(jù)無需(也沒有)已知的響應(yīng)(response),而是希望分析出觀測(cè)數(shù)據(jù)本身的結(jié)構(gòu)。在無監(jiān)督學(xué)習(xí)中,聚類(clustering)和降維(dimension reduction)是主要的兩大應(yīng)用場(chǎng)景。


無監(jiān)督聚類的目的是將觀測(cè)點(diǎn)按照它們的特征分成若干個(gè)子集——這些子集又稱為簇(cluster)——以使得每一簇內(nèi)的觀測(cè)點(diǎn)有相似的特性,而不同簇之間的觀測(cè)點(diǎn)有不同的特性。聚類分析的算法有很多;其中一個(gè)常見且有效的算法是 K-means 聚類(譯作 K-均值聚類),其中 K 代表簇的個(gè)數(shù)。今天我們就來說說 K-means 聚類,它在量化投資領(lǐng)域有很多應(yīng)用。為了說明這一點(diǎn),本文除了介紹該算法外,還會(huì)以上證指數(shù)的價(jià)格數(shù)據(jù)為例說明如何利用該算法進(jìn)行市場(chǎng)狀態(tài)監(jiān)測(cè)(regime detection)。


2 K-means


K-means 聚類是一種硬聚類(hard clustering)算法。所謂硬聚類就是說每一個(gè)樣本點(diǎn)都必須“非此即彼”的被分到某一個(gè)簇中。與硬聚類對(duì)應(yīng)的是軟聚類(soft clustering)。針對(duì)每一個(gè)樣本點(diǎn),軟聚類算法計(jì)算該點(diǎn)屬于不同簇的概率,這是一種模糊(fuzzy)的概念,它不要求樣本點(diǎn)和簇之間“非此即彼”的映射,而是允許樣本點(diǎn)以不同的概率所屬于不同的簇。


假設(shè) n 維空間中共有 N 個(gè)觀測(cè)數(shù)據(jù)。在數(shù)學(xué)上,硬聚類意味著 K 個(gè)簇將該 n 維度空間劃分為 K 個(gè)互斥的區(qū)域,每個(gè)觀測(cè)點(diǎn)屬于且僅屬于這 K 個(gè)簇中的某一個(gè)。令 S_k 代表簇 k,k 屬于{1, …, K},不同的簇 S_k 之間滿足如下關(guān)系:


f1.png


這兩個(gè)式子說明硬聚類對(duì)空間的劃分滿足 MECE 原則,即 Mutually Exclusive(上面第一個(gè)式子),?Collectively?Exhaustive(上面第二個(gè)式子)。下圖是一個(gè) K-means 聚類的示意圖。圖中不同的顏色代表著 10 個(gè)簇;每一個(gè)黑點(diǎn)代表一個(gè)觀測(cè)點(diǎn)。每個(gè)簇內(nèi)的白色叉子代表該簇的質(zhì)心。這個(gè)圖的意思是,如果我們有下圖中的那些觀測(cè)點(diǎn),想采用 K-means 聚類將它們分為 10 個(gè)子集,那么就會(huì)得到如下的結(jié)果。


f2.png


下面來具體說說 K-means 算法。該算法的目標(biāo)是,對(duì)于給定的簇個(gè)數(shù) K,找到關(guān)于樣本空間的最優(yōu)化分S ={S_1, …, S_K},使得簇內(nèi)差異(within-cluster variation)最小。簇內(nèi)差異被定義為簇內(nèi)的每一個(gè)點(diǎn)到該簇質(zhì)心的距離的平方和,因此簇內(nèi)差異又稱為簇內(nèi)平方和(within-cluster sum of squares)。由于質(zhì)心代表著均值,這也是 K-means 聚類名字中 mean 一詞的含義。在數(shù)學(xué)上,該優(yōu)化問題可以表示為:


f3.png


其中,μ_k 代表簇 k 的質(zhì)心向量,它和觀測(cè)點(diǎn)一樣是 n 維向量。表達(dá)式 ||x_i - μ_k|| 代表簇 k 內(nèi)的第 i 個(gè)點(diǎn)到質(zhì)心 μ_k 的歐氏距離。


在歐幾里得空間中,兩個(gè) n 維向量 x?= (x_1, …., x_n) 和 y?= (y_1, …, y_n) 的歐氏距離(Euclidean distance)定義如下:


f4.png


對(duì)該優(yōu)化問題求解,就可以得到最優(yōu)的劃分 S ={S_1, …, S_K}。不幸的是,尋找該問題的全局解(global optimum)是 NP-hard(簡(jiǎn)單的理解就是復(fù)雜度太高,讓計(jì)算機(jī)硬來也算不出來)。所幸的是,可以使用啟發(fā)式算法找到局部解(local optimum)。該啟發(fā)式算法分為兩部,思路如下。


第一步:隨機(jī)的將每個(gè)觀測(cè)點(diǎn)劃分到一個(gè)簇 k;


第二步:重復(fù)本步驟中的過程,直到聚類結(jié)果收斂:

? 1. 根據(jù)當(dāng)前的聚類結(jié)果,計(jì)算每個(gè)簇的質(zhì)心 μ_k

? 2. 根據(jù)最新的質(zhì)心,計(jì)算每個(gè)觀測(cè)點(diǎn)到這些質(zhì)心的歐氏距離,將該點(diǎn)重新劃分到距離它最近的質(zhì)心所處的簇內(nèi)。


值得一提的是,局部解十分依賴于求解過程的初始值。且由于不知道全局解是什么,我們沒法證明局部解就是最優(yōu)的。為了盡可能降低這個(gè)問題的影響,可以多次使用該啟發(fā)式算法找到不同的局部解,然后從它們中間找到最小的,作為最終的解。


在 python 的 sklearn 包里,有實(shí)現(xiàn) K-means 算法的類 sklearn.cluster.KMeans。它的輸入?yún)?shù)中,有一個(gè) n_init(默認(rèn)值為 10),它就決定了求解局部解的次數(shù)。該算法會(huì)在求出的所有局部解中找到最優(yōu)的,作為最終的解。


3 K-means 的不足


在將 K-means 聚類應(yīng)用于量化投資之前,有必要知道它的不足。具體來說,特別是針對(duì)金融數(shù)據(jù),它有以下四點(diǎn)不足之處:


1. 金融數(shù)據(jù)信噪比太低,這意味著價(jià)格序列中有很多噪聲。由于 K-means 是硬聚類,因此每個(gè)觀測(cè)點(diǎn)都被迫分到一個(gè)簇中,因此噪聲對(duì)聚類結(jié)果的影響不可忽視。


2. 金融數(shù)據(jù)中存在異常值(比如黑天鵝事件造成的大跌,或者因?yàn)闉觚堉冈斐傻膬r(jià)格大幅震蕩)。K-means 會(huì)把它們當(dāng)作普通樣本處理。因此這些異常值會(huì)對(duì)聚類結(jié)果產(chǎn)生影響。


3. K-means 對(duì)訓(xùn)練集的數(shù)據(jù)比較敏感。舉例來說,如果將歷史數(shù)據(jù)分為兩份,分別進(jìn)行聚類。假如我們知道這兩份數(shù)據(jù)中的觀測(cè)點(diǎn) A 和 B 在業(yè)務(wù)上是相似的。但是,在對(duì)這兩份數(shù)據(jù)分別進(jìn)行聚類分析時(shí),A 和 B 可能會(huì)被分配到特性完全不同的兩簇中。這說明分類的波動(dòng)會(huì)比較大,即該算法對(duì)樣本數(shù)據(jù)敏感。當(dāng)樣本點(diǎn)不足的時(shí)候,這個(gè)問題尤其嚴(yán)重。


4. K-means 對(duì) K 的取值(即簇的個(gè)數(shù))非常敏感。如果 K 的取值不當(dāng),便很難從聚類的結(jié)果中得到有益的推斷。下一小結(jié)的例子就說明這一點(diǎn)。


4 K 的取值


聚類分析是為了挖掘觀測(cè)數(shù)據(jù)自身的結(jié)構(gòu)。如果我們?cè)谑虑皬臉I(yè)務(wù)的角度對(duì)數(shù)據(jù)的結(jié)構(gòu)有一個(gè)認(rèn)知、并以此來選取簇的個(gè)數(shù),那么聚類分析的結(jié)果將會(huì)更有意義。反之,如果我們對(duì)待分析的數(shù)據(jù)一無所知,盲目的選擇K的取值,那么得到的很可能是無意義的分析結(jié)果。


下面通過一個(gè)例子說明正確選取 K 值的重要性。假設(shè)我們有?3 個(gè)二元正態(tài)分布,它們的均值向量、協(xié)方差矩陣分別如下所示:


f5.png


使用這 3 個(gè)二元正態(tài)分布在二維空間內(nèi)各隨機(jī)生成 100 個(gè)觀測(cè)點(diǎn)(即一共有 300 個(gè)點(diǎn)),然后使用 K-means 聚類對(duì)他們進(jìn)行劃分。由于在這個(gè)例子中,我們知道這些點(diǎn)來自 3 個(gè)不同的二元正態(tài)分布,因此簇?cái)?shù) K 的正確取值應(yīng)該為 3。為了比較,我們同時(shí)考慮 K = 4 的情況。下圖展示了 K = 3 和 K = 4 時(shí)的 K-means 聚類結(jié)果。


f6.png


當(dāng) K = 3 時(shí),這 300 個(gè)觀測(cè)點(diǎn)被分為了 3 簇。它們的質(zhì)心基本位于 (2, 6)、(8, 7) 以及 (6, 12) 這三個(gè)點(diǎn)附近——即這三個(gè)二元正態(tài)分布的均值點(diǎn)。由于 K = 3 和這些點(diǎn)的內(nèi)在結(jié)構(gòu)吻合(因?yàn)樵谶@個(gè)例子中我們知道這些點(diǎn)是來自這 3 個(gè)不同的二元正態(tài)分布!),所以聚類挖掘出了有效的信息。當(dāng) K = 4 時(shí),這 300 個(gè)觀測(cè)點(diǎn)被分為了 4 簇。比較兩個(gè)聚類結(jié)果可知,來自于均值向量 (2, 6)、協(xié)方差矩陣 (2.5, 0; 0, 3.5) 這個(gè)二元正態(tài)分布的樣本點(diǎn)被進(jìn)一步細(xì)分為兩個(gè)不同的簇(這是因?yàn)?K = 4,因此算法必須把所有點(diǎn)分為 4 簇?。??;谶@樣的結(jié)果,我們會(huì)認(rèn)為這兩簇是不同的。但是在這里例子中,它們事實(shí)上來自同一個(gè)分布。這個(gè)例子說明,當(dāng) K 的取值不當(dāng)時(shí),我們有可能從聚類的結(jié)果中得出錯(cuò)誤的推斷。因此,在使用 K-means 聚類之前,如能對(duì)待分析的數(shù)據(jù)有一定的了解,并能從業(yè)務(wù)的角度判斷出合適的簇?cái)?shù) K,將大大提高聚類分析結(jié)果的可靠性。


5 用 K-means 進(jìn)行市場(chǎng)狀態(tài)監(jiān)測(cè)


本節(jié)使用一個(gè)簡(jiǎn)單的例子將 K-means 聚類應(yīng)用于量化投資領(lǐng)域。我們使用上證指數(shù)日線的開盤、最高、最低、收盤價(jià)(即 OHLC 數(shù)據(jù))來描述市場(chǎng)所處的(未知)狀態(tài),通過聚類將不同的交易日劃分到不同的市場(chǎng)狀態(tài)中,并在聚類的結(jié)果上進(jìn)行進(jìn)一步的推斷。交易日的時(shí)間跨度為過去 5 年。在這樣的設(shè)定下,每一個(gè)交易日的 OHLC 數(shù)據(jù)就是一個(gè)觀測(cè)點(diǎn)。為了不同的交易日的價(jià)格數(shù)據(jù)有可比性,有必要進(jìn)行標(biāo)準(zhǔn)化處理。為此,使用每日的開盤價(jià)對(duì)其他三個(gè)價(jià)格進(jìn)行標(biāo)準(zhǔn)化,得到 H/O,L/O,C/O,即最高價(jià)和開盤價(jià)之比、最低價(jià)和開盤價(jià)之比、以及收盤價(jià)和開盤價(jià)之比。標(biāo)準(zhǔn)化后,每一個(gè)觀測(cè)點(diǎn)實(shí)際上是一個(gè)三維向量。接下來就是確定簇?cái)?shù) K 的取值。在本例中,每一簇便代表了市場(chǎng)的一種狀態(tài)。從這個(gè)角度出發(fā),我們假設(shè) K 的取值為 4,即市場(chǎng)存在 4 種狀態(tài)。


這里取 4 并沒有什么特別的含義,作為讀者的你也盡可以發(fā)揮想象來解讀這個(gè)取值。從聚類的結(jié)果來看,由于我們是用的是標(biāo)準(zhǔn)化后的 OHLC 數(shù)據(jù),這 4 類市場(chǎng)狀態(tài)對(duì)應(yīng)的基本上是大陽(yáng)線、大陰線、小陽(yáng)線和小陰線。


由于觀測(cè)點(diǎn)都是三維的,因此可以方便的在三維空間畫出聚類的結(jié)果。以不同顏色表示不同的簇,這 4 簇的聚類結(jié)果如下圖所示。大部分觀測(cè)點(diǎn)都圍繞在 (1.0, 1.0, 1.0) 附近,它們構(gòu)成了兩簇 —— 小陽(yáng)線和小陰線;少量的觀測(cè)點(diǎn)在遠(yuǎn)離 (1.0, 1.0, 1.0) 的位置,構(gòu)成另外兩簇 —— 大陽(yáng)線和大陰線。


f7.png


如果我們按照簇把每個(gè)交易日的 K 線畫出來,則可以更清晰的看出簇與簇之間交易日 K 的差異(下圖)。


f8.png


從這個(gè)圖中可以看出:


第一簇中的 K 線大部分都是短的綠色線,說明這一簇中以小陰線為主;


第二簇中的 K 線大部分都是長(zhǎng)的紅色線,說明這一簇中以大陽(yáng)線為主;


第三簇中的 K 線大部分都是長(zhǎng)的綠色線,說明這一簇中以大陰線為主;


第四簇中的 K 線大部分都是短的紅色線,說明這一簇中以小陽(yáng)線為主。


不過這個(gè)結(jié)果也清晰的說明,我們的樣本是嚴(yán)重的不均衡的,第四簇小陽(yáng)線內(nèi)的觀測(cè)點(diǎn)遠(yuǎn)超其他三簇。樣本嚴(yán)重不均衡對(duì)所有的機(jī)器學(xué)習(xí)算法都是一個(gè)挑戰(zhàn)。我們會(huì)在下面再談到這個(gè)問題。如果按照時(shí)間順序把每個(gè)交易日的市場(chǎng)狀態(tài)畫出來,則得到下圖。


f9.png


我們分幾個(gè)不同的時(shí)期來仔細(xì)看看。在 2014 年底牛市啟動(dòng)之前,市場(chǎng)的狀態(tài)受第一簇(小陰線)主宰,表現(xiàn)出來一個(gè)慢慢陰跌的態(tài)勢(shì)。


f10.png


在 2014 年底到 2015 年底這個(gè)牛熊周期中,在牛市中市場(chǎng)狀態(tài)由第二簇(大陽(yáng)線)主宰,而在熊市中市場(chǎng)狀態(tài)由第三簇(大陰線)主宰。


f11.png


最后,從 2016 年二季度開始,市場(chǎng)狀態(tài)由第四簇(小陽(yáng)線)主宰,呈現(xiàn)出慢牛的走勢(shì)。


f12.png


在我們有了每個(gè)交易日的狀態(tài)之后,便可以進(jìn)行一系列的數(shù)據(jù)分析,得到進(jìn)一步的推論。這其中最有效的應(yīng)該是求出市場(chǎng)狀態(tài)的轉(zhuǎn)移矩陣,它告訴我們?cè)诋?dāng)前的狀態(tài) i 下,下一個(gè)交易日市場(chǎng)將處于狀態(tài) j 的條件概率。這對(duì)策略擇時(shí)和風(fēng)控會(huì)有很大幫助。基于上面的聚類結(jié)果,得到市場(chǎng)狀態(tài)的轉(zhuǎn)移矩陣如下。其中第 i 行第 j 列的數(shù)值表示在今天的市場(chǎng)狀態(tài)為 i 的條件下,明天市場(chǎng)狀態(tài)為 j 的條件概率。對(duì)于每一個(gè) i,明天最有可能的狀態(tài) j 被用紅色粗體表示出來。這個(gè)結(jié)果說明,除了大陰線外,在其他三種狀態(tài)下,下一個(gè)交易日最有可能出現(xiàn)的都是小陽(yáng)線,這和前面提到的樣本嚴(yán)重不均衡密切相關(guān)。


f13.png

本文的標(biāo)題提出一個(gè)問題“大陽(yáng)線之后更危險(xiǎn)?”。這個(gè)問題可以通過這個(gè)狀態(tài)轉(zhuǎn)移矩陣回答。如果今天是大陽(yáng)線,則下一個(gè)交易日是大陰線的條件概率為4.2%(第二行、第三列的數(shù)值)。讓我們?cè)賮砜纯创箨幘€出現(xiàn)的條件概率。在回測(cè)的 1207 個(gè)交易日中,有 30 個(gè)交易日屬于第三簇,因此大陰線的非條件概率僅為 2.5%,小于前面這個(gè) 4.2% 的條件概率?;谶@個(gè)結(jié)果,我們得出“大陽(yáng)之后更危險(xiǎn)”的推論。這個(gè)結(jié)論事實(shí)上是符合人的認(rèn)知的。這是因?yàn)闊o論大漲還是大跌,都意味著波動(dòng)率的上升;而波動(dòng)率的上升意味著風(fēng)險(xiǎn)的加大;風(fēng)險(xiǎn)加大意味著大跌的可能性增大。假如上述聚類分析的結(jié)果是有效的,那么使用這個(gè)轉(zhuǎn)移矩陣可以回答很多類似的問題、得到很多有益的推論。


6 結(jié)語(yǔ)


樣本不足和樣本不均衡是金融數(shù)據(jù)的兩大特色。這些對(duì)于 K-means 聚類算法在量化投資中的應(yīng)用提出了嚴(yán)峻的挑戰(zhàn)。對(duì)于待分析的數(shù)據(jù),“如何有效的選取特征?”,“適合的簇?cái)?shù) K 是多少?”,這些都屬于算法本身之外的問題,但它們又對(duì)算法的分析結(jié)果至關(guān)重要。比如在上面的例子中,使用 OHLC 數(shù)據(jù)描述市場(chǎng)狀態(tài)是否恰當(dāng)?K = 4 是否有足夠的依據(jù)?要回答這些問題,自然需要更多的研究。任何機(jī)器學(xué)習(xí)算法都僅僅是工具。在金融領(lǐng)域,核心的問題不是工具的使用,而是從對(duì)市場(chǎng)的理解。唯有理解了市場(chǎng),才能選擇正確的工具。掌握一門算法并不需要很長(zhǎng)的時(shí)間;但要想深刻理解市場(chǎng)則需要時(shí)間的積淀。



免責(zé)聲明:入市有風(fēng)險(xiǎn),投資需謹(jǐn)慎。在任何情況下,本文的內(nèi)容、信息及數(shù)據(jù)或所表述的意見并不構(gòu)成對(duì)任何人的投資建議。在任何情況下,本文作者及所屬機(jī)構(gòu)不對(duì)任何人因使用本文的任何內(nèi)容所引致的任何損失負(fù)任何責(zé)任。除特別說明外,文中圖表均直接或間接來自于相應(yīng)論文,僅為介紹之用,版權(quán)歸原作者和期刊所有。