*点链接报名第九届“泰迪杯”数据挖掘挑战赛
文丨杨陆 吉小为 屠怡婷
源丨第八届“泰迪杯”数据挖掘挑战赛特等奖作品
第2章 相关理论
2.1高送转相关知识介绍
2.1.1高送转的实质
“高送转”顾名思义是指高比例送股或高比例转股,例如每 10 股送股 5 股,每 10 股转增 10 股等。送股和转股比例达到多少才能称之为“高送转”,目前专家学者还未达成统一意见。本文将以每 10 股送转 5 股及以上作为界定“高送转”的选择标准。
“高送转”是通过降低每股价格从而扩大股票发行的一种行为,也相当于是一种送股行为。是通过送股并没有任何意义,其目的仅仅是来稀释股本降低股价的,也就是降低股价方便购买。将一个公司的现在股本总额和将来会收得的盈利相结合起来,来告知股东公司相关信息,同时可以让股份交易活跃起来。这个方式实质上就是企业所有者权益内部的调整,将资本从留存收益转入了其他股东权益。
2.1.2预测下一年上市公司高送转的一些其他条件
(1)是否真正具备“高送转”能力:本文使用送股能力公式进行运算:负债合计/资产总计。
(2)总股本的结构在 1.5 亿以下,使用公式:未分配利润/每股未分配利润。
(3)本年年中报表或者三季度报表披露业绩持续增长
(4)股票是否是小盘、是否为次新股、是否为国企
(5)上市公司本年度有没有已经高送转
2.2机器学习算法介绍
2.2.1LogisticRegressor
逻辑回归是机器学习中一个应用非常广泛的分类模型,它是一种分类方法, 主要用于两分类问题(即输出只有两种,分别代表两个类别)。
它将数据拟合到 sigmiod 函数,其函数形式为:
寻找预测函数:
,函数的 h(x) 值有特殊的含义,它表示结果取 1的概率,因此对于输入 x 分类结果为类别 1 和类别 0 的概率分别为:
构造损失函数:
其中
求解使得 J () 函数最小并求得回归参数。
对于逻辑回归的损失函数构成的模型,可能会有些权重很大,有些权重很小, 导致过拟合(就是过分拟合了训练数据),使得模型的复杂度提高,泛化能力较差(对未知数据的预测能力),正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或惩罚项,正则项可以取不同的形式,在回归问题中取平方损失,就是参数的 L2 范数,也可以取 L1 范数。取平方损失时,模型的损失函数变为:
其中 为正则项系数,正则化后的梯度下降算法的更新变为:
从而完成对事件发生概率的预测。
2.2.2RandomForestClassifier
在机器学习中,随机森林由许多的决策树组成,因为这些决策树的形成采用了随机的方法,因此也叫做随机决策树。随机森林中的树之间是没有关联的。当测试数据进入随机森林时,其实就是让每一颗决策树进行分类,最后取所有决策树中分类结果最多的那类为最终的结果。因此随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。随机森林可以既可以处理属性为离散值的量,比如 ID3 算法,也可以处理属性为连续值的量,比如 C4.5 算法。另外,随机森林还可以用来进行无监督学习聚类和异常点检测。
随机森林由决策树组成,决策树实际上是将空间用超平面进行划分的一种方法,每次分割的时候,都将当前的空间一分为二,比如说下面的决策树(其属性的值都是连续的实数):
随机深林的优点:比较适合做多分类问题;训练和预测速度快;对训练数据的 容错能力,是一种有效地估计缺失数据的一种方法,当数据集中有大比例的数据 缺失时仍然可以保持精度不变;能够有效地处理大的数据集;可以处理没有删减 的成千上万的变量;能够在分类的过程中可以生成一个泛化误差的内部无偏估计;能够检测到特征之间的相互影响以及重要性程度;不过出现过度拟合;实现简单 容易并行化。当可以生成好决策树后,就比较容易生成随机森林了。下面是随机森林的构造过程:
1. 假如有 N 个样本,则有放回的随机选择 N 个样本(每次随机选择一个样本, 然后返回继续选择)。这选择好了的 N 个样本用来训练一个决策树,作为决策树根节点处的样本。
2. 当每个样本有 M 个属性时,在决策树的每个节点需要分裂时,随机从这M 个属性中选取出 m 个属性,满足条件 m << M。然后从这 m 个属性中采用某种策略(比如说信息增益)来选择 1 个属性作为该节点的分裂属性。
3. 决策树形成过程中每个节点都要按照步骤 2 来分裂(很容易理解,如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,无须继续分裂了)。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。
4. 按照步骤 1~3 建立大量的决策树,这样就构成了随机森林了。
从上面的步骤可以看出,随机森林的随机性体现在每颗数的训练样本是随机的,树中每个节点的分类属性也是随机选择的。有了这 2 个随机的保证,随机森林就不会产生过拟合的现象了。
2.2.3SVM
SVM(支持向量机)是一种分类算法,根据输入的数据不同可做不同的模型(输入标签为分类值则用 SVC()做分类)。通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下, 亦能获得良好统计规律的目的。通俗来讲,支持向量机是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。支持向量机的具体求解过程如下:
(1)设已知样本训练集:
(2)选择适当核函数 K (xi , x j ) 以及参数C ,解决优化问题:
(3)选取a* 的正分量,计算样本分类阈值:
(4)构造最优判别函数:
支持向量机内积核核函数 K 的主要种类有:
一般地,用 SVM 做分类预测时必须调整相关参数(特别是惩罚参数c 和核函数参数 g ),这样才可以获得比较满意的预测分类精度,采用 Cross Validation 的思想可以获取最优的参数,并且有效防止过学习和欠学习状态的产生,从而能够对于测试集合的预测得到较佳的精度。
2.2.4XGBoost
XGBoost 模型是典型 boosting 算法,是对 GBDT 模型的算法和工程改进。区别 Bagging 模型,基学习器可以并行,boosting 模型的基学习器间存在先后依赖。GBDT 是一种提升树模型,第 m 轮用一棵 acrt 回归树拟合前m-1轮损失的负梯度,降低模型的 bias。
XGBoost 是在 GBDT 等提升算法基础上进行优化的算法,引入二阶导数信息, 并加入正则项控制模型的复杂度;此外,虽然基模型的训练存在先后顺序,但每 个基学习器内部的树节点分裂可以并行,XGBoost 对此进行了并行优化,实现优化目标函数以达到误差和复杂度综合最优。其原理如下:
目标函数 L(x) 由误差函数 F (x) 和复杂度函数(x) 组成:
其中l 是用来衡量 yˆ 与 y 的相近程度的可导且凸的损失函数,通过每一步增加一个基分类器,贪婪地去优化目标函数,使得每次增加都使得损失变小。然后让后一次迭代的基分类器去学习前一次遗留下来的误差。这样可以得到用于评价当前分类器性能的评价函数,如下:
这个算法又可以成为前向分步优化。为了更好更快的优化此函数,可以在 f _ m=0
附近二阶泰勒展开,泰勒展开的形式为公式。
最后可得到目标函数,在剔除常数项后可以得到最终的表达式,如公式所示:
2.2.5LightGBM
LightGBM 相较于 XGBoost,提出 Histogrm 算法,对特征进行分桶,减少查询分裂节点的事件复杂度;此外,提出 Goss 算法减少小梯度数据;同时,提出 EFB 算法捆绑互斥特征,降低特征维度,减少模型复杂度。
Lightgbm 使用了如下两种解决办法:一是 GOSS,不是使用所用的样本点来 计算梯度,而是对样本进行采样来计算梯度;二是 EFB,不是使用所有的特征来进行扫描获得最佳的切分点,而是将某些特征进行捆绑在一起来降低特征的维度, 是寻找最佳切分点的消耗减少。这样大大的降低的处理样本的时间复杂度,但在 精度上,通过大量的实验证明,在某些数据集上使用 Lightgbm 并不损失精度, 甚至有时还会提升精度。下面就主要介绍这两种方法。
1、GOSS 算法描述
输入:训练数据,迭代步数 d,大梯度数据的采样率 a,小梯度数据的采样率 b, 损失函数和若学习器的类型(一般为决策树);
输出:训练好的强学习器;
(1)根据样本点的梯度的绝对值对它们进行降序排序;
(2)对排序后的结果选取前 a*100%的样本生成一个大梯度样本点的子集;
(3)对剩下的样本集合(1-a)*100%的样本,随机的选取 b*(1-a)*100%个样本点,生成一个小梯度样本点的集合;
(4)将大梯度样本和采样的小梯度样本合并;
(5)将小梯度样本乘上一个权重系数;
(6)使用上述的采样的样本,学习一个新的弱学习器;
(7)不断地重复(1)~(6)步骤直到达到规定的迭代次数或者收敛为止。
通过上面的算法可以在不改变数据分布的前提下不损失学习器精度的同时大大的减少模型学习的速率。
从上面的描述可知,当 a=0 时,GOSS 算法退化为随机采样算法;当 a=1 时,GOSS 算法变为采取整个样本的算法。在许多情况下,GOSS 算法训练出的模型精确度要高于随机采样算法。另一方面,采样也将会增加若学习器的多样性,从而潜在的提升了训练出的模型泛化能力。
2、EFB 算法描述
输入:特征 F,最大冲突数 K,图 G;
输出:特征捆绑集合 bundles;
(1)构造一个边带有权重的图,其权值对应于特征之间的总冲突;
(2)通过特征在图中的度来降序排序特征;
(3)检查有序列表中的每个特征,并将其分配给具有小冲突的现有 bundling( 由控制),或创建新 bundling。
上述算法的时间复杂度为并且在模型训练之前仅仅被处理一次即可。在特征维度不是很大时,这样的复杂度是可以接受的。但是当样本维度较高时,这种方法就会特别的低效。所以对于此,作者又提出的另外一种更加高效的算法:按非零值计数排序,这类似于按度数排序,因为更多的非零值通常会导致更高的冲突概率。这仅仅改变了上述算法的排序策略,所以只是针对上述算法将按度数排序改为按非 0 值数量排序,其他不变。
2.2.6CATBoost
CatBoost 是一种基于对称决策树为基学习器实现的参数较少、支持类别型变量和高准确性的 GBDT 框架,主要解决的痛点是高效合理地处理类别型特征, CatBoost 是由 Categorical 和 Boosting 组成。此外,CatBoost 还解决了梯度偏差 (Gradient Bias)及预测偏移(Prediction shift)的问题,从而减少过拟合的发生, 进而提高算法的准确性和泛化能力。
与 XGBoost、LightGBM 相比,CatBoost 的创新点有:嵌入了自动将类别型特征处理为数值型特征的创新算法。首先对 categorical features 做一些统计,计算某个类别特征出现的频率,之后加上超参数,生成新的数值型特征。Catboost 还使用了组合类别特征,可以利用到特征之间的联系,这极大的丰富了特征维度。并采用 ordered boost 的方法避免梯度估计的偏差,进而解决预测偏移的问题, 还采用了完全对称树作为基模型。
CatBoost 算法可以更好的处理 GBDT 特征中的 categorical features,基于改进Greedy TS,它是添加先验分布项,这样可以减少噪声和低频率类别型数据对于数据分布的影响。其公式为:
其中 p 是添加的先验项,a 通常是大于 0 的权重系数。添加先验项可以减少噪声数据。对于二分类,先验项是正例的先验概率。
CatBoost 的另外一项重要实现是将不同类别型特征的组合作为新的特征,以获得高阶依赖,为当前树构造新的分割点时,CatBoost 会采用贪婪的策略考虑组合。对于树的第一次分割,不考虑任何组合。对于下一个分割,CatBoost 将当前树的所有组合、类别型特征与数据集中的所有类别型特征相结合,并将新的组合类别型特征动态地转换为数值型特征。
更多课程
全新课程!多因子策略线上特训营来了!
2021-03-03
第1期丨人工智能云实习项目(机器学习预测方向)(4.24开课)
2021-03-03
第4期 | 初阶量化投资特训营(3.22开课)
2021-03-02
第12期丨零基础量化投资特训营(3.18开课)
2021-02-25
第5期丨Python数据挖掘特训营(3.4开课)
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.