逻辑回归,很有逻辑

发布时间:2017-09-12  |   来源: 川总写量化

作者:石川

摘要:摘要:逻辑回归是一种有机监督学习分类器,在量化投资领域可以被用来选股。本文介绍逻辑回归的数学背景和应用实践。

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 两类的条件概率为:


f1.png

其中,函数 σ(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 如下:


f2.png

使用训练集数据训练模型的参数 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的线性组合也因此变为:


f3.png

当然,这个截距项不是必须的。使用者可以根据待解决的问题判断是否应该在特征向量中加入该项。流行的统计分析工具(比如 Python 的 sklearn)允许使用者自行决定是否在模型中加入截距项。


3 一个例子


让我借用 Wikipedia 上面的例子来说明逻辑回归的应用。这是一个关于学习时间和考试通过与否的例子。假设一共有 20 名学生(样本点),特征向量为截距项 1 和学习时间组成的二维向量。考试结果分为 1(通过)和 0(失败)。我们采用逻辑回归来建立考试时间和通过与否之间的关联。训练集数据如下:


f4.png


使用训练集数据建模,得到的逻辑回归模型参数(特征向量的权重):


学习时间的权重为:1.5046

截距项的权重为:-4.0777


从模型参数可以看出,是否通过考试和该学生的努力程度(学习时间)是正相关的,这符合人们的预期。将模型参数带入到 sigmoid 函数中便可计算出给定学习时间下考试通过的概率:


f5.png

使用该模型便可以对新的考生是否通过考试进行判断。将训练集中的 20 名考生的学习时间带入到上式可绘制图这个 sigmoid 函数(确实形如 S 曲线):


f6.png


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 类。


在量化选股中,为了对冲掉市场风险,往往希望判断股票的相对强弱。实验中采用上述的第三种方法将股票的收益率转化为二元响应变量。训练集数据准备就绪,便可以训练回归模型。假设特征向量中不考虑截距项,得到的回归模型参数如下。


f7.png


可以看出,收益率和 BP 以及 ROE 成正比。有意思的是,收益率和 β 成反比。这似乎说明市场更加青睐小 β 的蓝筹股。想更系统的分析每个因子对于选股的作用,需要使用多期数据同时在时间和截面两个维度进行逻辑回归。接下来看看在这个简单的实验中,逻辑回归模型对样本内数据的分类正确性。预测的正确性必须从准确率和召回率两方面同时评价。假设我们预测一共有 X 支股票上涨,其中有 A 支猜对了、B 支猜错了;我们预测一共有 Y = (500 - X) 支下跌,其中有 C 支猜错了、D 支猜对了。则这两个指标的定义为:


f8.png


准确率衡量的是在所有你猜测的某一类(涨或跌)样本中,有多少是正确的;而召回率是用来衡量在所有某一类的(涨或跌)样本中,有多少被你猜出来了。对于实验中的这个逻辑回归模型,它的正确性如下:


猜涨准确率:68.8%

猜涨召回率:66.7%

猜跌准确率:62.4%

猜跌召回率:65.5%


仅从这些数字上来看,似乎效果还不错。但是不要忘记,这仅仅是对样本内数据的判断结果(模型就是用它们来构建的);这些不说明样本外的预测准确性。通过这个例子,仅仅想说明利用逻辑回归可以进行量化选股。因此,我们的例子止于此。在真正应用中,正如前文提到的,应该使用多期在时间和截面两个维度的样本数据建模,并采用交叉验证来评价模型在样本外的分类准确性,以此最终确定模型的参数。


5 逻辑回归、Softmax 回归和卷积神经网络


最后,简单谈谈逻辑回归、Softmax 回归和卷积神经网络的关系。先来说说神经网络(neural networks),它由多个、多层神经元(neuron)构成,每个神经元就是一个计算单元(见下图),由输入特征、输出值、以及激活函数构成。


f9.png


在这个例子中,x_1、x_2、x_3 和截距项 1 就是输入的特征,h_w(x) 就是输出,而逻辑回归中的 sigmoid 函数就是一种常见的激活函数(其他常见的激活函数包括 tanh 函数和 max 函数等)。


再来看看 Softmax 回归。它是一种多项逻辑回归,即响应变量的取值大于两类。假设共有 K > 2 类,每个样本点的响应变量 y_i 的取值为 1 到 K 之间的某一个值。多项逻辑回归的应用更加广泛,比如在手写数字识别中,一共有 0 到 9 是个数字,因此一共可以有 10 类。将二元逻辑回归的数学含义延伸易知,在 Softmax 回归中我们希望计算出样本点在其给定的特征向量下,属于每一类的条件概率:


f10.png

其中 θ^(1),θ^(2),……,θ^(K) 为模型的参数,通过训练集数据训练得到。与二元逻辑回归类似,定义 cost function 如下:


f11.png

其中 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/



免责声明:入市有风险,投资需谨慎。在任何情况下,本文的内容、信息及数据或所表述的意见并不构成对任何人的投资建议。在任何情况下,本文作者及所属机构不对任何人因使用本文的任何内容所引致的任何损失负任何责任。除特别说明外,文中图表均直接或间接来自于相应论文,仅为介绍之用,版权归原作者和期刊所有。