邏輯迴歸,很有邏輯

數學 Python 川總寫量化 2019-06-13

1 邏輯迴歸分類器

邏輯迴歸由統計學家 David Cox 於 1958 年提出。與傳統的線性迴歸不同,邏輯迴歸(logistic regression)中響應變量(因變量)的取值不是連續的,而是離散的,每個取值代表一個不同的類別。因此,邏輯迴歸的本質是一個分類器(classifier)。它是一種有監督學習,通過訓練集數據中的樣本的特徵向量 x 和標籤 y(即響應變量的類別)來訓練模型的參數,並使用該模型對未來的新樣本進行分類。

最簡單的邏輯迴歸中響應變量是二分類的(binary),即它僅僅可以取兩個值,代表不同的兩類。按照慣例,它的取值為 0 和 1。即便是最簡單的模型也有廣泛的應用,比如這兩類可以代表著比賽中的輸和贏、考試中的通過和失敗、醫療領域的健康和生病、以及股市中的漲和跌等。如果響應變量的取值多於兩類,則這樣的問題叫做多項邏輯迴歸(multinomial logistic regression)

本文以最簡單的二元邏輯模型(binary logistic model,即響應變量 y 只能取 0 和 1 兩個值)為例,介紹邏輯迴歸的數學含義以及它在量化選股中的應用。本文的最後會簡單談一談求解多項邏輯迴歸——即 Softmax 迴歸——以及它在卷積神經網絡中的應用。

下文中如無特殊說明,當我們提到“邏輯迴歸”時,指代的都是最簡單的二元邏輯迴歸。

2 數學意義

在二元邏輯迴歸中,迴歸模型根據樣本點的特徵(features)計算該樣本點屬於每一類的條件概率。在數學上,通過給定的函數將樣本點的 n 維特徵向量 x 轉化成一個概率標量。具體的,具備特徵向量 x 的樣本點屬於 1 和 0 兩類的條件概率為:

邏輯迴歸,很有邏輯

其中,函數 σ(z) ≡ 1 / (1 + exp(-z)) 被稱為邏輯函數(logistic function)sigmoid 函數(因為 σ(z) 形如 S 曲線);它的取值範圍在 0 和 1 之間。邏輯迴歸的目的是通過訓練集數據找到最優的權重 w 使得分類結果儘量同時滿足如下目標:

  • 當一個樣本點的真實分類是 1 時,h_w(x) 儘可能大;
  • 當一個樣本點的真是分類是 0 時,h_w(x) 儘可能小(即 1 - h_w(x) 儘可能大)。

邏輯迴歸將樣本點的特徵向量 x 按照權重 w 進行線性組合得到標量 z,再將 z 放入邏輯函數 σ(z) 最終求出該樣本點屬於類別 1 以及 0 的概率,從而對其進行分類——如果 h_w(x) > 1 - h_w(x) 則該樣本點被分為類別 1,反之為類別 0。

如何決定權重 w 呢?

假設訓練集共有 m 對兒數據 {(x_i, y_i), i = 1, 2, …, m},為了儘量同時實現上述目標,定義 cost function 如下:

邏輯迴歸,很有邏輯

使用訓練集數據訓練模型的參數 w 以使上述 cost function 最小化。對於訓練集中的每一個樣本點,上述方程的兩項中有且僅有一個不為 0。對於第 i 個樣本點,如果 y_i = 1,則最小化上述方程意味著最大化 h_w(x_i),即最大化該點被分類為 1 的概率;同理,如果 y_i = 0,則最小化上述方程意味著最大化 1 - h_w(x_i),即最大化該點被分類為 0 的概率。

從上面的論述可知,J(w) 同時考慮了 1 和 0 兩類分類的準確性。使用訓練集對該模型訓練,找到最優的 w,使得 J(w) 最小,這就是邏輯迴歸模型的學習過程。一旦確定了模型參數,就可以使用它對新的樣本進行分類。對於新的樣本點特徵向量 x',如果 h_w(x') > 0.5,則該點被分到 y = 1 類;反之被分到 y = 0 類。最優化 J(w) 可以採用梯度搜索(gradient search),為此只需要計算出 J 的梯度 ∇J(w),在此不再贅述。

最後值得一提的是,在計算特徵向量的線性組合時,往往會額外考慮一個截距項。這相當於在原始 n 維特徵向量 x 中加入一個元素 1(因此特徵向量變為 n+1 維),而x的線性組合也因此變為:

邏輯迴歸,很有邏輯

當然,這個截距項不是必須的。使用者可以根據待解決的問題判斷是否應該在特徵向量中加入該項。流行的統計分析工具(比如 Python 的 sklearn)允許使用者自行決定是否在模型中加入截距項。

3 一個例子

讓我借用 Wikipedia 上面的例子來說明邏輯迴歸的應用。

這是一個關於學習時間和考試通過與否的例子。假設一共有 20 名學生(樣本點),特徵向量為截距項 1 和學習時間組成的二維向量。考試結果分為 1(通過)和 0(失敗)。我們採用邏輯迴歸來建立考試時間和通過與否之間的關聯。訓練集數據如下:

邏輯迴歸,很有邏輯

使用訓練集數據建模,得到的邏輯迴歸模型參數(特徵向量的權重):

  • 學習時間的權重為:1.5046
  • 截距項的權重為:-4.0777

從模型參數可以看出,是否通過考試和該學生的努力程度(學習時間)是正相關的,這符合人們的預期。將模型參數帶入到 sigmoid 函數中便可計算出給定學習時間下考試通過的概率:

邏輯迴歸,很有邏輯

使用該模型便可以對新的考生是否通過考試進行判斷。將訓練集中的 20 名考生的學習時間帶入到上式可繪製圖這個 sigmoid 函數(確實形如 S 曲線):

邏輯迴歸,很有邏輯

4 使用邏輯迴歸選股

經過上面的介紹,我們已經對邏輯迴歸的原理和它的應用有了一定的認識。下面就來將它應用於量化投資相關的領域——選股。

為說明這一點,使用股票的因子作為特徵向量,使用股票的漲跌強弱作為響應變量,建立邏輯迴歸模型來選股。

本實驗中,以中證 500 的成分股為例。特別的,考慮 2016 年 12 月 31 日時這 500 支成分股的最新截面因子數據。考察的十個因子包括:EP、BP、ROE、Liability/Asset、規模、換手率、動量、反轉、市場 β、殘差波動率。

由於選股的目的是使用因子來對未來的收益率做預測,因此我們使用這 500 支成分股在 2017 年 1 月份的收益率作為響應變量的原始數據。由於在二元邏輯迴歸中,響應變量必須是二元的,因此我們需要將這 500 支個股的絕對收益率轉換成 0 和 1。為此,可以有以下幾種方法:

  1. 使用絕對收益率的漲跌為依據:個股的收益率大於 0 則分到 1 類;收益率小於 0 則分到 0 類;
  2. 使用相對市場收益率的漲跌為依據:由於個股和市場十分相關,而且它們都以不同的程度暴露於市場風險之中,因此考慮個股收益率與中證 500 指數收益率的大小關係。個股收益率大於指數收益率則分到 1 類;個股收益率小於指數收益率則分到 0 類。
  3. 使用個股之間的相對強弱為依據:直接考察個股之間的收益率的相對大小,將收益率處於中位數之上的個股分到 1 類;將收益率處於中位數之下的個股分到 0 類。

在量化選股中,為了對衝掉市場風險,往往希望判斷股票的相對強弱。實驗中採用上述的第三種方法將股票的收益率轉化為二元響應變量。

訓練集數據準備就緒,便可以訓練迴歸模型。假設特徵向量中不考慮截距項,得到的迴歸模型參數如下。

邏輯迴歸,很有邏輯

由於實驗中僅僅使用了一期的截面數據,因此解釋這些因子權重的符號並沒有太大作用。不過我們還是可以看出,收益率和 BP 以及 ROE 成正比。有意思的是,收益率和 β 成反比。這似乎說明市場更加青睞小 β 的藍籌股。想更系統的分析每個因子對於選股的作用,需要使用多期數據同時在時間和截面兩個維度進行邏輯迴歸。

接下來看看在這個簡單的實驗中,邏輯迴歸模型對樣本內數據的分類正確性。預測的正確性必須從準確率和召回率兩方面同時評價。假設我們預測一共有 X 支股票上漲,其中有 A 支猜對了、B 支猜錯了;我們預測一共有 Y = (500 - X) 支下跌,其中有 C 支猜錯了、D 支猜對了。則這兩個指標的定義為:

邏輯迴歸,很有邏輯

準確率衡量的是在所有你猜測的某一類(漲或跌)樣本中,有多少是正確的;而召回率是用來衡量在所有某一類的(漲或跌)樣本中,有多少被你猜出來了。

對於實驗中的這個邏輯迴歸模型,它的正確性如下:

  • 猜漲準確率:68.8%
  • 猜漲召回率:66.7%
  • 猜跌準確率:62.4%
  • 猜跌召回率:65.5%

僅從這些數字上來看,似乎效果還不錯。但是不要忘記,這僅僅是對樣本內數據的判斷結果(模型就是用它們來構建的);這些不說明樣本外的預測準確性。

通過這個例子,僅僅想說明利用邏輯迴歸可以進行量化選股。因此,我們的例子止於此。在真正應用中,正如前文提到的,應該使用多期在時間和截面兩個維度的樣本數據建模,並採用交叉驗證來評價模型在樣本外的分類準確性,以此最終確定模型的參數。

5 邏輯迴歸、Softmax 迴歸和卷積神經網絡

最後,簡單談談邏輯迴歸、Softmax 迴歸和卷積神經網絡的關係。

先來說說神經網絡(neural networks),它由多個、多層神經元(neuron)構成,每個神經元就是一個計算單元(見下圖),由輸入特徵、輸出值、以及激活函數構成:

邏輯迴歸,很有邏輯

在這個例子中,x_1、x_2、x_3 和截距項 1 就是輸入的特徵,h_w(x) 就是輸出,而邏輯迴歸中的 sigmoid 函數就是一種常見的激活函數(其他常見的激活函數包括 tanh 函數和 max 函數等)。

再來看看 Softmax 迴歸。它是一種多項邏輯迴歸,即響應變量的取值大於兩類。假設共有 K > 2 類,每個樣本點的響應變量 y_i 的取值為 1 到 K 之間的某一個值。多項邏輯迴歸的應用更加廣泛,比如在手寫數字識別中,一共有 0 到 9 是個數字,因此一共可以有 10 類。

將二元邏輯迴歸的數學含義延伸易知,在 Softmax 迴歸中我們希望計算出樣本點在其給定的特徵向量下,屬於每一類的條件概率:

邏輯迴歸,很有邏輯

其中 θ^(1),θ^(2),……,θ^(K) 為模型的參數,通過訓練集數據訓練得到。與二元邏輯迴歸類似,定義 cost function 如下:

邏輯迴歸,很有邏輯

其中 1{} 為指示函數,當 {} 中的條件為真時,它的取值為 1,否則為 0。通過最小化這個目標函數就可以得到最優的參數 θ^(1),θ^(2),……,θ^(K)。求解時同樣可以採用梯度搜索法。

Softmax 迴歸往往作為卷積神經網絡(Convolutional Neural Network)的最後一步。卷積神經網絡是在神經網絡上發展出來的,可以被用來進行圖像識別的強大工具。傳統神經網絡在面對高像素的圖像進行識別時無能為力,這是因為高像素對應的特徵數巨大,遠超過計算機可以承受的範圍;此外巨大的特徵也使得特徵矩陣非常稀疏。卷積神經網絡通過卷積計算對原始的特徵進行高度的抽象,通過局部感知和參數共享大大的減少了特徵數。此外,它通過使用多層卷積以及池化等手段,進一步抽象特徵,最終得到原始圖像的高度提煉的信息。而在最後一步,使用這個高度抽象的信息對圖像進行分類(識別),計算它屬於不同類別的概率。在實際應用中,圖像的類別往往成百上千,甚至更多,這便要用到 Softmax 迴歸。

上面的介紹說明掌握邏輯迴歸是學習神經網絡的基礎。更加詳細的介紹超出本文的範疇,推薦讀者自行閱讀相關資料。

參考文獻

  • https://en.wikipedia.org/wiki/Logistic_regression
  • http://ufldl.stanford.edu/tutorial/supervised/SoftmaxRegression/

相關推薦

推薦中...