邏輯回歸,很有邏輯
發(fā)布時(shí)間:2017-09-12 | 來(lái)源: 川總寫(xiě)量化
作者:石川
摘要:摘要:邏輯回歸是一種有機(jī)監(jiān)督學(xué)習(xí)分類(lèi)器,在量化投資領(lǐng)域可以被用來(lái)選股。本文介紹邏輯回歸的數(shù)學(xué)背景和應(yīng)用實(shí)踐。
1 邏輯回歸分類(lèi)器
邏輯回歸由統(tǒng)計(jì)學(xué)家 David Cox 于 1958 年提出。與傳統(tǒng)的線性回歸不同,邏輯回歸(logistic regression)中響應(yīng)變量(因變量)的取值不是連續(xù)的,而是離散的,每個(gè)取值代表一個(gè)不同的類(lèi)別。因此,邏輯回歸的本質(zhì)是一個(gè)分類(lèi)器(classifier)。它是一種有監(jiān)督學(xué)習(xí),通過(guò)訓(xùn)練集數(shù)據(jù)中的樣本的特征向量 x 和標(biāo)簽 y(即響應(yīng)變量的類(lèi)別)來(lái)訓(xùn)練模型的參數(shù),并使用該模型對(duì)未來(lái)的新樣本進(jìn)行分類(lèi)。
最簡(jiǎn)單的邏輯回歸中響應(yīng)變量是二分類(lèi)的(binary),即它僅僅可以取兩個(gè)值,代表不同的兩類(lèi)。按照慣例,它的取值為 0 和 1。即便是最簡(jiǎn)單的模型也有廣泛的應(yīng)用,比如這兩類(lèi)可以代表著比賽中的輸和贏、考試中的通過(guò)和失敗、醫(yī)療領(lǐng)域的健康和生病、以及股市中的漲和跌等。如果響應(yīng)變量的取值多于兩類(lèi),則這樣的問(wèn)題叫做多項(xiàng)邏輯回歸(multinomial logistic regression)。
本文以最簡(jiǎn)單的二元邏輯模型(binary logistic model,即響應(yīng)變量 y 只能取 0 和 1 兩個(gè)值)為例,介紹邏輯回歸的數(shù)學(xué)含義以及它在量化選股中的應(yīng)用。本文的最后會(huì)簡(jiǎn)單談一談求解多項(xiàng)邏輯回歸——即 Softmax 回歸——以及它在卷積神經(jīng)網(wǎng)絡(luò)中的應(yīng)用。下文中如無(wú)特殊說(shuō)明,當(dāng)我們提到“邏輯回歸”時(shí),指代的都是最簡(jiǎn)單的二元邏輯回歸。
2 數(shù)學(xué)模型
在二元邏輯回歸中,回歸模型根據(jù)樣本點(diǎn)的特征(features)計(jì)算該樣本點(diǎn)屬于每一類(lèi)的條件概率。在數(shù)學(xué)上,通過(guò)給定的函數(shù)將樣本點(diǎn)的 n 維特征向量 x 轉(zhuǎn)化成一個(gè)概率標(biāo)量。具體的,具備特征向量 x 的樣本點(diǎn)屬于 1 和 0 兩類(lèi)的條件概率為:
其中,函數(shù) σ(z) ≡ 1 / (1 + exp(-z)) 被稱(chēng)為邏輯函數(shù)(logistic function)或 sigmoid 函數(shù)(因?yàn)?σ(z) 形如 S 曲線);它的取值范圍在 0 和 1 之間。邏輯回歸的目的是通過(guò)訓(xùn)練集數(shù)據(jù)找到最優(yōu)的權(quán)重 w 使得分類(lèi)結(jié)果盡量同時(shí)滿足如下目標(biāo):
當(dāng)一個(gè)樣本點(diǎn)的真實(shí)分類(lèi)是 1 時(shí),h_w(x) 盡可能大;
當(dāng)一個(gè)樣本點(diǎn)的真是分類(lèi)是 0 時(shí),h_w(x) 盡可能?。?1 - h_w(x) 盡可能大)。
邏輯回歸將樣本點(diǎn)的特征向量 x 按照權(quán)重 w 進(jìn)行線性組合得到標(biāo)量 z,再將 z 放入邏輯函數(shù) σ(z) 最終求出該樣本點(diǎn)屬于類(lèi)別 1 以及 0 的概率,從而對(duì)其進(jìn)行分類(lèi)——如果 h_w(x) > 1 - h_w(x) 則該樣本點(diǎn)被分為類(lèi)別 1,反之為類(lèi)別 0。
如何決定權(quán)重 w 呢?假設(shè)訓(xùn)練集共有 m 對(duì)兒數(shù)據(jù) {(x_i, y_i), i = 1, 2, …, m},為了盡量同時(shí)實(shí)現(xiàn)上述目標(biāo),定義 cost function 如下:
使用訓(xùn)練集數(shù)據(jù)訓(xùn)練模型的參數(shù) w 以使上述 cost function 最小化。對(duì)于訓(xùn)練集中的每一個(gè)樣本點(diǎn),上述方程的兩項(xiàng)中有且僅有一個(gè)不為 0。對(duì)于第 i 個(gè)樣本點(diǎn),如果 y_i = 1,則最小化上述方程意味著最大化 h_w(x_i),即最大化該點(diǎn)被分類(lèi)為 1 的概率;同理,如果 y_i = 0,則最小化上述方程意味著最大化 1 - h_w(x_i),即最大化該點(diǎn)被分類(lèi)為 0 的概率。
從上面的論述可知,J(w) 同時(shí)考慮了 1 和 0 兩類(lèi)分類(lèi)的準(zhǔn)確性。使用訓(xùn)練集對(duì)該模型訓(xùn)練,找到最優(yōu)的?w,使得 J(w) 最小,這就是邏輯回歸模型的學(xué)習(xí)過(guò)程。一旦確定了模型參數(shù),就可以使用它對(duì)新的樣本進(jìn)行分類(lèi)。對(duì)于新的樣本點(diǎn)特征向量 x',如果 h_w(x') > 0.5,則該點(diǎn)被分到 y = 1 類(lèi);反之被分到 y = 0 類(lèi)。最優(yōu)化 J(w) 可以采用梯度搜索(gradient search),為此只需要計(jì)算出 J 的梯度 ?J(w),在此不再贅述。
最后值得一提的是,在計(jì)算特征向量的線性組合時(shí),往往會(huì)額外考慮一個(gè)截距項(xiàng)。這相當(dāng)于在原始 n 維特征向量 x 中加入一個(gè)元素 1(因此特征向量變?yōu)?n+1 維),而x的線性組合也因此變?yōu)椋?/span>
當(dāng)然,這個(gè)截距項(xiàng)不是必須的。使用者可以根據(jù)待解決的問(wèn)題判斷是否應(yīng)該在特征向量中加入該項(xiàng)。流行的統(tǒng)計(jì)分析工具(比如 Python 的 sklearn)允許使用者自行決定是否在模型中加入截距項(xiàng)。
3 一個(gè)例子
讓我借用 Wikipedia 上面的例子來(lái)說(shuō)明邏輯回歸的應(yīng)用。這是一個(gè)關(guān)于學(xué)習(xí)時(shí)間和考試通過(guò)與否的例子。假設(shè)一共有 20 名學(xué)生(樣本點(diǎn)),特征向量為截距項(xiàng) 1 和學(xué)習(xí)時(shí)間組成的二維向量??荚嚱Y(jié)果分為 1(通過(guò))和 0(失敗)。我們采用邏輯回歸來(lái)建立考試時(shí)間和通過(guò)與否之間的關(guān)聯(lián)。訓(xùn)練集數(shù)據(jù)如下:
使用訓(xùn)練集數(shù)據(jù)建模,得到的邏輯回歸模型參數(shù)(特征向量的權(quán)重):
學(xué)習(xí)時(shí)間的權(quán)重為:1.5046
截距項(xiàng)的權(quán)重為:-4.0777
從模型參數(shù)可以看出,是否通過(guò)考試和該學(xué)生的努力程度(學(xué)習(xí)時(shí)間)是正相關(guān)的,這符合人們的預(yù)期。將模型參數(shù)帶入到 sigmoid 函數(shù)中便可計(jì)算出給定學(xué)習(xí)時(shí)間下考試通過(guò)的概率:
使用該模型便可以對(duì)新的考生是否通過(guò)考試進(jìn)行判斷。將訓(xùn)練集中的 20 名考生的學(xué)習(xí)時(shí)間帶入到上式可繪制圖這個(gè) sigmoid 函數(shù)(確實(shí)形如 S 曲線):
4 使用邏輯回歸選股
經(jīng)過(guò)上面的介紹,我們已經(jīng)對(duì)邏輯回歸的原理和它的應(yīng)用有了一定的認(rèn)識(shí)。下面就來(lái)將它應(yīng)用于量化投資相關(guān)的領(lǐng)域——選股。為說(shuō)明這一點(diǎn),使用股票的因子作為特征向量,使用股票的漲跌強(qiáng)弱作為響應(yīng)變量,建立邏輯回歸模型來(lái)選股。本實(shí)驗(yàn)中,以中證 500 的成分股為例。特別的,考慮 2016 年 12 月 31 日時(shí)這 500 支成分股的最新截面因子數(shù)據(jù)??疾斓氖畟€(gè)因子包括:EP、BP、ROE、Liability/Asset、規(guī)模、換手率、動(dòng)量、反轉(zhuǎn)、市場(chǎng) β、殘差波動(dòng)率。
由于選股的目的是使用因子來(lái)對(duì)未來(lái)的收益率做預(yù)測(cè),因此我們使用這 500 支成分股在 2017 年 1 月份的收益率作為響應(yīng)變量的原始數(shù)據(jù)。由于在二元邏輯回歸中,響應(yīng)變量必須是二元的,因此我們需要將這 500 支個(gè)股的絕對(duì)收益率轉(zhuǎn)換成 0 和 1。為此,可以有以下幾種方法:
1. 使用絕對(duì)收益率的漲跌為依據(jù):個(gè)股的收益率大于 0 則分到 1 類(lèi);收益率小于 0 則分到 0 類(lèi);
?
2. 使用相對(duì)市場(chǎng)收益率的漲跌為依據(jù):由于個(gè)股和市場(chǎng)十分相關(guān),而且它們都以不同的程度暴露于市場(chǎng)風(fēng)險(xiǎn)之中,因此考慮個(gè)股收益率與中證 500 指數(shù)收益率的大小關(guān)系。個(gè)股收益率大于指數(shù)收益率則分到 1 類(lèi);個(gè)股收益率小于指數(shù)收益率則分到 0 類(lèi)。
?
3. 使用個(gè)股之間的相對(duì)強(qiáng)弱為依據(jù):直接考察個(gè)股之間的收益率的相對(duì)大小,將收益率處于中位數(shù)之上的個(gè)股分到 1 類(lèi);將收益率處于中位數(shù)之下的個(gè)股分到 0 類(lèi)。
在量化選股中,為了對(duì)沖掉市場(chǎng)風(fēng)險(xiǎn),往往希望判斷股票的相對(duì)強(qiáng)弱。實(shí)驗(yàn)中采用上述的第三種方法將股票的收益率轉(zhuǎn)化為二元響應(yīng)變量。訓(xùn)練集數(shù)據(jù)準(zhǔn)備就緒,便可以訓(xùn)練回歸模型。假設(shè)特征向量中不考慮截距項(xiàng),得到的回歸模型參數(shù)如下。
可以看出,收益率和 BP 以及 ROE 成正比。有意思的是,收益率和 β 成反比。這似乎說(shuō)明市場(chǎng)更加青睞小 β 的藍(lán)籌股。想更系統(tǒng)的分析每個(gè)因子對(duì)于選股的作用,需要使用多期數(shù)據(jù)同時(shí)在時(shí)間和截面兩個(gè)維度進(jìn)行邏輯回歸。接下來(lái)看看在這個(gè)簡(jiǎn)單的實(shí)驗(yàn)中,邏輯回歸模型對(duì)樣本內(nèi)數(shù)據(jù)的分類(lèi)正確性。預(yù)測(cè)的正確性必須從準(zhǔn)確率和召回率兩方面同時(shí)評(píng)價(jià)。假設(shè)我們預(yù)測(cè)一共有 X 支股票上漲,其中有 A 支猜對(duì)了、B 支猜錯(cuò)了;我們預(yù)測(cè)一共有 Y = (500 - X) 支下跌,其中有 C 支猜錯(cuò)了、D 支猜對(duì)了。則這兩個(gè)指標(biāo)的定義為:
準(zhǔn)確率衡量的是在所有你猜測(cè)的某一類(lèi)(漲或跌)樣本中,有多少是正確的;而召回率是用來(lái)衡量在所有某一類(lèi)的(漲或跌)樣本中,有多少被你猜出來(lái)了。對(duì)于實(shí)驗(yàn)中的這個(gè)邏輯回歸模型,它的正確性如下:
猜漲準(zhǔn)確率:68.8%
猜漲召回率:66.7%
猜跌準(zhǔn)確率:62.4%
猜跌召回率:65.5%
僅從這些數(shù)字上來(lái)看,似乎效果還不錯(cuò)。但是不要忘記,這僅僅是對(duì)樣本內(nèi)數(shù)據(jù)的判斷結(jié)果(模型就是用它們來(lái)構(gòu)建的);這些不說(shuō)明樣本外的預(yù)測(cè)準(zhǔn)確性。通過(guò)這個(gè)例子,僅僅想說(shuō)明利用邏輯回歸可以進(jìn)行量化選股。因此,我們的例子止于此。在真正應(yīng)用中,正如前文提到的,應(yīng)該使用多期在時(shí)間和截面兩個(gè)維度的樣本數(shù)據(jù)建模,并采用交叉驗(yàn)證來(lái)評(píng)價(jià)模型在樣本外的分類(lèi)準(zhǔn)確性,以此最終確定模型的參數(shù)。
5 邏輯回歸、Softmax 回歸和卷積神經(jīng)網(wǎng)絡(luò)
最后,簡(jiǎn)單談?wù)勥壿嫽貧w、Softmax 回歸和卷積神經(jīng)網(wǎng)絡(luò)的關(guān)系。先來(lái)說(shuō)說(shuō)神經(jīng)網(wǎng)絡(luò)(neural networks),它由多個(gè)、多層神經(jīng)元(neuron)構(gòu)成,每個(gè)神經(jīng)元就是一個(gè)計(jì)算單元(見(jiàn)下圖),由輸入特征、輸出值、以及激活函數(shù)構(gòu)成。
在這個(gè)例子中,x_1、x_2、x_3 和截距項(xiàng) 1 就是輸入的特征,h_w(x) 就是輸出,而邏輯回歸中的 sigmoid 函數(shù)就是一種常見(jiàn)的激活函數(shù)(其他常見(jiàn)的激活函數(shù)包括 tanh 函數(shù)和 max 函數(shù)等)。
再來(lái)看看 Softmax 回歸。它是一種多項(xiàng)邏輯回歸,即響應(yīng)變量的取值大于兩類(lèi)。假設(shè)共有 K > 2 類(lèi),每個(gè)樣本點(diǎn)的響應(yīng)變量 y_i 的取值為 1 到 K 之間的某一個(gè)值。多項(xiàng)邏輯回歸的應(yīng)用更加廣泛,比如在手寫(xiě)數(shù)字識(shí)別中,一共有 0 到 9 是個(gè)數(shù)字,因此一共可以有 10 類(lèi)。將二元邏輯回歸的數(shù)學(xué)含義延伸易知,在 Softmax 回歸中我們希望計(jì)算出樣本點(diǎn)在其給定的特征向量下,屬于每一類(lèi)的條件概率:
其中 θ^(1),θ^(2),……,θ^(K) 為模型的參數(shù),通過(guò)訓(xùn)練集數(shù)據(jù)訓(xùn)練得到。與二元邏輯回歸類(lèi)似,定義 cost function 如下:
其中 1{} 為指示函數(shù),當(dāng) {} 中的條件為真時(shí),它的取值為 1,否則為 0。通過(guò)最小化這個(gè)目標(biāo)函數(shù)就可以得到最優(yōu)的參數(shù) θ^(1),θ^(2),……,θ^(K)。求解時(shí)同樣可以采用梯度搜索法。
Softmax 回歸往往作為卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network)的最后一步。卷積神經(jīng)網(wǎng)絡(luò)是在神經(jīng)網(wǎng)絡(luò)上發(fā)展出來(lái)的,可以被用來(lái)進(jìn)行圖像識(shí)別的強(qiáng)大工具。傳統(tǒng)神經(jīng)網(wǎng)絡(luò)在面對(duì)高像素的圖像進(jìn)行識(shí)別時(shí)無(wú)能為力,這是因?yàn)楦呦袼貙?duì)應(yīng)的特征數(shù)巨大,遠(yuǎn)超過(guò)計(jì)算機(jī)可以承受的范圍;此外巨大的特征也使得特征矩陣非常稀疏。卷積神經(jīng)網(wǎng)絡(luò)通過(guò)卷積計(jì)算對(duì)原始的特征進(jìn)行高度的抽象,通過(guò)局部感知和參數(shù)共享大大的減少了特征數(shù)。此外,它通過(guò)使用多層卷積以及池化等手段,進(jìn)一步抽象特征,最終得到原始圖像的高度提煉的信息。而在最后一步,使用這個(gè)高度抽象的信息對(duì)圖像進(jìn)行分類(lèi)(識(shí)別),計(jì)算它屬于不同類(lèi)別的概率。在實(shí)際應(yīng)用中,圖像的類(lèi)別往往成百上千,甚至更多,這便要用到 Softmax 回歸。
參考文獻(xiàn)
https://en.wikipedia.org/wiki/Logistic_regression
http://ufldl.stanford.edu/tutorial/supervised/SoftmaxRegression/
免責(zé)聲明:入市有風(fēng)險(xiǎn),投資需謹(jǐn)慎。在任何情況下,本文的內(nèi)容、信息及數(shù)據(jù)或所表述的意見(jiàn)并不構(gòu)成對(duì)任何人的投資建議。在任何情況下,本文作者及所屬機(jī)構(gòu)不對(duì)任何人因使用本文的任何內(nèi)容所引致的任何損失負(fù)任何責(zé)任。除特別說(shuō)明外,文中圖表均直接或間接來(lái)自于相應(yīng)論文,僅為介紹之用,版權(quán)歸原作者和期刊所有。