system: [SYSTEM]

user: 4. 基于EKPCA算法的多因子选股模型建立 4.1. EKPCA算法的基本原理 经典KPCA是传统PCA的一种非线性拓展，其目的是从数据中抽取最具表现力的特征 [ 11 ] 。因子之间存在非线性相关关系，不能直接用PCA进行降维，而KPCA的基本思想是将原始训练样本通过一个合适的非线性隐函数 Φ ( x ) 映射到高维特征空间中，原空间中非线性可分变量很大程度可以转化为高维特征空间中的线性可分变量，然后在高维空间中运行PCA，从而抽取数据的特征。通过研究映射到高维空间中的点的几何性质，我们知道点之间的距离和夹角都可以用核函数 κ 来表示，不需要知道 Φ ( x ) 的具体形式。常用的核函数有线性核、多项式核、高斯核、拉普拉斯核、Sigmoid核等，本文根据模型需要主要引入表2中的两种核函数： Table 2 Common kernel function 名称 表达式 参数 多项式核 κ ( x i ， x j ) = ( x i T x j + c ) d c ≥ 0 ，d为多项式的次数且是正整数 高斯核 κ ( x i ， x j ) = exp ( − ‖ x i − x j ‖ 2 2 σ 2 ) 为高斯核的带宽(width) 表2. 常见的核函数 其中， x i ， x j 为原始输入空间的训练样本。利用核函数建立核矩阵K，核矩阵K其实是内积矩阵，且一定是半正定矩阵 [ 12 ] ，其中 K i j = 〈 Φ ( x i ) ， Φ ( x j ) 〉 = Φ ( x i ) T Φ ( x j ) = κ ( x i ， x j ) ，   i = 1 ， 2 ， ⋯ ， N ;   j = 1 ， 2 ， ⋯ ， N (1) 式中， x i ， x j 为训练样本，N为训练样本的个数。 由上述表达式可知核矩阵的规模与训练样本的个数成正比，则KPCA的计算效率与训练样本的个数成反比，多因子选股模型一般选取的股票数量都较多，KPCA抽取效率较低。近年来，很多算法被提出用来提高KPCA的计算效率 [ 13 ] 。本文引用其中一种特征抽取效果较好的EKPCA算法，该算法可以用小部分训练集(基本模式)的线性组合来近似表达KPCA的特征抽取效果。对全体训练样本进行特征抽取时，每个特征分量其实就是一系列核函数的线性组合，训练样本越多，特征抽取效率越低。同时，在特征抽取过程中，有些训练样本对特征抽取的贡献非常小。EKPCA算法的基本思想是在进行特征抽取前，先剔除对特征抽取贡献小的训练样本，保留贡献大的训练样本，保留下来的训练样本即基本模式，这里运用特征相关分析来逐个确定基本模式，基本模式的个数由用户自己设置。再重新构建KPCA模型。 EKPCA算法与KPCA算法相比主要有两个优点：第一，基本模式的个数一般远远小于全体训练样本的个数，这使得EKPCA算法比KPCA算法的抽取效率高；第二，在特征抽取时，KPCA需要对 N × N (N是全体训练样本的个数)的核矩阵进行特征分解，而EKPCA只需要对 s × s (s是基本模式的个数)的核矩阵进行特征分解，这说明EKPCA比KPCA需要更少的存储空间 [ 14 ] 。 4.2. 核函数参数选择 首先，对训练样本进行z-score标准化处理，即使处理后的数据均值为0，标准差为1。 其次，引入最大通用熵来确定多项式核函数的参数c和d以及高斯核函数的参数 θ 。主要步骤如下： 步骤1：定义特征空间中点之间的余弦距离 c i j = Φ ( x i ) T Φ ( x j ) ‖ Φ ( x i ) ‖ ⋅ ‖ Φ ( x j ) ‖ ，     i = 1 ， 2 ， ⋯ ， N ;   j = 1 ， 2 ， ⋯ ， N (2) 将(1)式带入(2)式得到下式 c i j = κ ( x i ， x j ) ‖ κ ( x i ， x i ) ‖ ⋅ ‖ κ ( x j ， x j ) ‖ ，   i = 1 ， 2 ， ⋯ ， N ;   j = 1 ， 2 ， ⋯ ， N (3) 由上述表达式可知，如果引用高斯核函数，则 c i j = κ ( x i ， x j ) (4) 同样，如果引用多项式核函数或其他的核函数，则特征空间中每个样本向量的长度标准化为1，也可以得到 c i j = κ ( x i ， x j ) 。那么，核矩阵在某种程度上是特征空间中余弦矩阵的一种特殊形式，因此，理论上可以用余弦矩阵来学习核矩阵及其参数 [ 8 ] 。如果 c i j → 0 ，则特征空间中的向量很可能相互正交，它们的类间散度和类内散度都很大 [ 12 ] ，该情形下，很难正确分开样本数据。如果 c i j → 1 ，则特征空间中的所有样本向量将会集中于一点，或者位于同一直线上，显然该情形也不利于样本分类。 步骤2：定义通用熵如下： Entro ( c i j ) = − ∑ i = 1 N ∑ j = 1 N | c i j | log | c i j | (5) 将(4)式代入(5)式得到： Entro ( c i j ) = − ∑ i = 1 N ∑ j = 1 N | κ ( x i ， x j ) | log | κ ( x i ， x j ) | (6) 根据前面提到的两种情况 c i j → 0 和 c i j → 1 ，通用熵 Entro ( c i j ) 将会取到最小值0，这将妨碍样本的分类。因此本文选取通用熵的最大值对应的参数建立核函数，便于对数据进行分类。这就是一个凸优化问题： Max   Entro ( c i j ) s . t .   { 0.1 ≤ c ≤ 10.0 1 ≤ d ≤ 10 d 为 整 数 或 1.0 ≤ θ ≤ 10.0 4.3. 确定基本模式 有两种常见的确定基本模式的方法，一种是前向选择算法，另一种是后向选择算法 [ 11 ] 。考虑时间复杂度，本文选用前向选择算法，耗时较小。特征抽取的一项基本原则是，由不同投影方向得到的特征之间应尽量互不相关，因此，确定基本模式的要求是由两个基本模式得到的特征集之间具有较小的特征相关，这样特征抽取结果的贡献率比较大，综合信息的能力较强。利用核矩阵列向量 v i = ( k ( x 1 ， x i ) ， k ( x 2 ， x i ) ， ⋯ ， k ( x N ， x i ) ) T 之间的特征相关即核矩阵列向量之间的余弦距离，来确定基本模式。两个核矩阵列向量 v i 和 v j 之间的余弦距离为 cos ( v i ， v j ) = ( v i ， v j ) ‖ v i ‖ ⋅ ‖ v j ‖ 确定基本模式的过程如下： 步骤1：确定前两个基本模式。 找出两个核矩阵的列向量 v m 和 v n 满足 cos ( v m ， v n ) = min 1 ≤ i ， j ≤ N cos ( v i ， v j ) ( 1 ≤ m ， n ≤ N ) (7) 然后，将它们对应的原始训练样本 x m 和 x n 作为前两个基本模式，重新标记为 x ′ 1 和 x ′ 2 ，将它放入新的集合A中， A = { x ′ 1 ， x ′ 2 } ，构成新的矩阵 K 2 = [ k ( x 1 ， x ′ 1 ) k ( x 2 ， x ′ 1 ) ⋮ k ( x 1 ， x ′ 2 ) k ( x 2 ， x ′ 2 ) ⋮ k ( x N ， x ′ 1 ) k ( x N ， x ′ 2 ) ] 。 步骤t：确定第t个基本模式 ( 3 ≤ t ≤ s ) 。 假设已经在前面 t − 1 步中，确定了基本模式 x ′ 1 ， x ′ 2 ， ⋯ ， x ′ t − 1 ，并且 A = { x ′ 1 ， x ′ 2 ， ⋯ ， x ′ t − 1 } ，由这些基本模式构成了下面的新矩阵： K t − 1 = [ k ( x 1 ， x ′ 1 ) ⋯ k ( x 1 ， x ′ t − 1 ) k ( x 2 ， x ′ 1 ) ⋯ k ( x 2 ， x ′ t − 1 ) ⋮ ⋱ ⋮ k ( x N ， x ′ 1 ) ⋯ k ( x N ， x ′ t − 1 ) ] 对于任意 x ∈ X − A ，设候选的核矩阵列向量是 v p ， v p = ( k ( x 1 ， x p ) ， k ( x 2 ， x p ) ， ⋯ ， k ( x N ， x p ) ) T . 定义候选向量 v p 与矩阵 K t − 1 之间的余弦距离为 cosdis ( v p ， K t − 1 ) = 1 t − 1 ∑ q = 1 t − 1 cos ( v p ， v q ) (8) 式中， v q 是 K t − 1 的第q列向量： v q = ( k ( x 1 ， x ′ q ) ， k ( x 2 ， x ′ q ) ， ⋯ ， k ( x N ， x ′ q ) ) T 。利用式(7)确定 cosdis ( v p ， K t − 1 ) 的最小值，与最小值对应的原始训练样本就确定为第t个基本模式，记为 x ′ t ，将它加入到集合 中。将样本 x ′ t 对应的核矩阵列向量加到 作为该矩阵的最后一列，变为新矩阵 K t 。 重复上述过程直到 t = s ，就确定了所有的基本模式 x ′ 1 ， x ′ 2 ， ⋯ ， x ′ s ( s < N ) 以及新的矩阵 K s = [ k ( x 1 ， x ′ 1 ) ⋯ k ( x 1 ， x ′ s ) k ( x 2 ， x ′ 1 ) ⋯ k ( x 2 ， x ′ s ) ⋮ ⋱ ⋮ k ( x N ， x ′ 1 ) ⋯ k ( x N ， x ′ s ) ] N × s 。 4.4. 重建KPCA模型 将训练样本 x i 映射到高维之后，对映射后的数据 Φ ( x i ) 进行中心化处理，即均值满足 Φ ¯ = 1 N ∑ i = 1 N Φ ( x i ) = 0 我们知道将一个向量 x i 在v方向上的投影，若投影方向的模长 ‖ v ‖ = 1 ，则投影后的向量为 〈 x i ， v 〉 v 。这就意味着在单位向量上投影后的坐标为 〈 x i ， v 〉 = x i T v = v T x i 。那么特征抽取要求投影之后的数据尽可能互不相关，即要求找到一个投影方向v，使得投影后的数据方差最大。投影后的方差为 σ 2 = 1 N ∑ i = 1 N ( v T x i − μ ) 2 = 1 N ∑ i = 1 N ( v T x i ) 2 = 1 N ∑ i = 1 N ( v T x i ) ( v T x i ) T = 1 N ∑ i = 1 N v T x i x i T v = v T ( 1 N ∑ i = 1 N x i x i T ) v = v T C v (9) 上式中，假设所有样本已经经过中心化处理， μ = 0 为投影点的均值， C = 1 N ∑ i = 1 N x i x i T 为原训练样本的协方差矩阵则找出最优投影方向的问题可转化为下面的优化问题： v = arg max v T C v (10) s . t .     ‖ v ‖ = 1 为解决该问题，引入拉格朗日乘子 λ ，建立拉格朗日函数 f ( v ， λ ) = v T C v − λ ( v T v − 1 ) (11) 令 f ( v ， λ ) 对v和 λ 的偏导数为零得 C v = λ v (12) v T v = 1 (13) 将(12)式和(13)式代入(10)式可转为 v = arg max λ (14) 那么求解该优化问题可转化为求解协方差矩阵C的最大特征值。因此，对高维特征空间进行特征抽取时可转化为求解高维空间的协方差矩阵D (D为原始训练样本映射到高维空间后的协方差矩阵)的前p (p为主成分的个数)个最大特征值。高维特征空间的协方差为： 对D进行特征分解的特征方程为 λ α = D α (15) 式中， α 为该特征方程非负特征值对应的特征向量。 由于直接对该协方差矩阵进行特征分解无法得到具体特征值，可以转化为对已确定的基本模式构建的核矩阵 K 2 进行特征分解得到特征值。其中， K 2 = [ k ( x 1 ， x ′ 1 ) ⋯ k ( x 1 ， x ′ s ) k ( x 2 ， x ′ 1 ) ⋯ k ( x 2 ， x ′ s ) ⋮ ⋱ ⋮ k ( x s ， x ′ 1 ) ⋯ k ( x s ， x ′ s ) ] s × s = [ Φ ( x ′ 1 ) T Φ ( x ′ 1 ) ⋯ Φ ( x ′ 1 ) T Φ ( x ′ s ) Φ ( x ′ 2 ) T Φ ( x ′ s ) ⋯ Φ ( x ′ 1 ) T Φ ( x ′ s ) ⋮ ⋱ ⋮ Φ ( x ′ s ) T Φ ( x ′ s ) ⋯ Φ ( x ′ 1 ) T Φ ( x ′ s ) ] = [ Φ ( x ′ 1 ) T ⋮ Φ ( x ′ s ) T ] [ Φ ( x ′ 1 ) ⋯ Φ ( x ′ s ) ] (16) 令 D = 1 N Φ ( x j ) Φ ( x j ) T ， (17) 令 K 1 = ( K s ) T = k ( x ′ i ， x j ) = Φ ( x ′ i ) T Φ ( x j ) ， (18) 令 K 2 = Φ ( x ′ i ) T Φ ( x ′ r ) ， (19) 其中， i ， r = 1 ， 2 ， ⋯ ， s ， j = 1 ， 2 ， ⋯ ， N 。 将(17)式代入特征方程(15)可以得到： λ α = 1 N Φ ( x j ) Φ ( x j ) T α (20) 将上述等式两边同时左乘 Φ ( x ′ i ) T ，右乘 Φ ( x ′ i ) ，得： λ ( Φ ( x ′ i ) T Φ ( x ′ r ) ) β = 1 N ( Φ ( x ′ i ) T Φ ( x j ) ) ( Φ ( x j ) T Φ ( x ′ i ) ) β (21) 其中， β = [ β 1 ， β 2 ， ⋯ ， β s ] T 为新特征方程(21)式的特征向量。 将(18)式和(19)式代入(21)式，得： λ K 2 β = 1 N K 1 ( K 1 ) T β (22) 求解方程(22)得到前p个最大特征值 λ t ( t = 1 ， 2 ， ⋯ ， p ) 以及其对应的特征向量 β t ∗ ( t = 1 ， 2 ， ⋯ ， p ) 。因此，原始训练样本的映射在高维空间特征向量上的投影(即主成分)可以如下表示： B = [ ∑ i = 1 s β 1 i ∗ k ( x ′ i ， x ) λ 1 ， ∑ i = 1 s β 2 i ∗ k ( x ′ i ， x ) λ 2 ， ⋯ ， ∑ i = 1 s β p i ∗ k ( x ′ i ， x ) λ p ] T (23) 其中， β 1 i ∗ 是向量 β t ∗ 的第i个分量 [ 11 ] ，s为已确定的基本模式的个数。 4.5. 多元线性回归预测 在高维特征空间中抽取了样本的p个主成分，对这p个主成分建立多元线性回归模型，如下： y = ∑ k = 1 p ω k B k + ε (24) 其中，y是股票收益率， ω k 为回归系数， B k 为主成分矩阵B的第k个分量， ε 为残差矩阵。利用最小二乘法进行回归参数估计，得到 ω ^ = ( B T B ) − 1 B T y (25) 再将上式结果进行因变量y的预测为 y ^ = ∑ k = 1 p ω ^ k B k 利用方差分析法中的F统计量的P值(即显著性值)对回归方程进行显著性检验，一般P值小于0.05表示回归方程具有统计学意义。