adaboost 模型adaboost的损失函数数是属于以下哪一类损失函数

HTTP/1.1 服务器太忙2.【华泰金工林晓明团队】人工智能选股之广义线性模型——华泰人工智能系列之二-ZAKER新闻
雪球今日话题
/s/1slGQGe5本文研究导读到目前为止,华泰金工人工智能选股系列已经推出了5篇报告,对广义线性模型、支持向量机模型、朴素贝叶斯模型和随机森林模型都进行了尝试和论证。而上一篇报告所提到的随机森林模型涉及到一种经典的Bagging集成学习算法,在本篇报告中,我们将继续探究集成学习算法领域的Boosting类学习算法,和之前报告的模型进行充分的对比。本篇报告将主要关注如下几方面的问题:1. 首先,Boosting集成学习模型包含哪些具体模型?这些模型各自的原理和特点是什么,主要参数包括哪些?2. 2014年推出的XGBoost框架是近年来Boosting集成学习领域的新宠,XGBoost强大的预测能力和高效的性能使得其在Kaggle等多个机器学习竞赛中大受欢迎。将XGBoost应用在多因子选股中的效果到底如何?本文将对XGBoost和其他集成学习算法进行测试对比。3. 最后是组合构建的问题。在衡量过不同模型的表现之后,应如何利用模型的预测结果构建策略组合进行回测?各模型在沪深300、中证500和全部A股票池内选股效果(超额收益、最大回撤、信息比率等)的异同是什么?我们将围绕以上问题进行系统性的测试,希望为读者提供一些扎实的证据,并寻找到有效的分类方法,能够对本领域的投资者产生参考价值。Boosting集成学习模型简介"三个臭皮匠,顶个诸葛亮"。单个弱学习器的预测能力有限,如何将多个弱学习器组合成一个强学习器,这是学习器集成需要探讨的问题。集成学习算法有两大种类,如图表1的灰色方框所示,左边一支为Bagging系列(并行方法),右边一支为Boosting系列(串行方法)。对于多棵决策树,如果以Bagging的方式组合起来,可以得到随机森林算法;如果以Boosting的方式组合起来,可以得到梯度提升决策树(GBDT)等方法。而对于AdaBoost算法,它的弱学习器不一定是决策树,也可以是SVM、广义线性回归等。决策树决策树是集成学习模型中最常用的弱学习器。决策树基于多个特征进行分类决策。在树的每个结点处,根据特征的表现通过某种规则分裂出下一层的叶子节点,终端的叶子节点即为最终的分类结果。决策树学习的关键是选择最优划分属性。随着逐层划分,决策树分支结点所包含的样本类别会逐渐趋于一致,即节点分裂时要使得节点分裂后的信息增益(Information Gain)最大。本文的Boosting集成学习算法使用的弱学习器是CART决策树。关于CART决策树的介绍请见附录。提升算法AdaBoostAdaBoost概述和Bagging 并行组合弱分类器的思想不同,AdaBoost(adaptive boosting)将弱分类器以串行的方式组合起来,如图表2所示。在训练之前,我们赋予全部样本相等的权重。第一步以原始数据为训练集,训练一个弱分类器C1,如图表3左图所示。对于分类错误的样本,提高其权重。第二步以更新样本权值后的数据为训练集,再次训练一个弱分类器C2,如图表3中间图所示。随后重复上述过程,每次自适应地改变样本权重并训练弱分类器,如图表3右图所示。最终,每个弱分类器都可以计算出它的加权训练样本分类错误率,将全部弱分类器按一定权值进行组合得到强分类器,错误率越低的弱分类器所占权重越高。AdaBoost二元分类算法基本步骤本节中,我们介绍AdaBoost二元分类算法的具体步骤。假设输入为样本集T={(x1,y1),(x2,y2),...,(xm,ym)},输出为{-1,+1},弱分类器迭代次数K。输出是强分类器f(x)。算法主要有以下步骤:(1) 初始化样本集的权重为(3) 最后,构建强分类器:AdaBoost回归算法基本步骤本节中,我们介绍AdaBoost回归算法的具体步骤。假设输入为样本集 T={(x1,y1),(x2,y2),...,(xm,ym)},输出为{-1,+1},弱分类器迭代次数K。输出是强学习器f(x)。(3) 最后,构建强学习器:AdaBoost主要参数图表4中列出了AdaBoost模型的主要参数,参数分两大类,一类是AdaBoost框架参数,与具体的弱学习器无关;另一类是AdaBoost弱学习器参数。梯度提升决策树GBDTGBDT概述梯度提升决策树GBDT是一种Boosting集成学习算法,但是却和传统的AdaBoost有很大的不同,且弱学习器限定了只能使用CART回归树模型。在GBDT的迭代中,假设前一轮迭代得到的强学习器是 ft-1(x), 损失函数是 L(y,ft-1(x)), 本轮迭代的目标是得到一个CART回归树模型的弱学习器ht(x),使得本轮的损失 L(y,ft(x))= L(y,ft-1(x))+ht(x) 最小。也就是说,本轮迭代得到的决策树,要让样本的损失尽量变得更小。GBDT的思想可以用一个通俗的例子解释,假如某人有170厘米身高,我们首先用160厘米去拟合,发现残差有10厘米,这时我们用6厘米去拟合剩下的残差,发现残差还有4厘米,第三轮我们用3厘米拟合剩下的残差,残差就只有1厘米了。如果迭代轮数还没有完,可以继续迭代下去,每一轮迭代,拟合的身高残差都会减小。图表5显示了GBDT算法的流程。GBDT回归算法基本步骤本节中,我们介绍GBDT回归算法的具体步骤。假设输入是训练集样本 T={(x1,y1),(x2,y2),...,(xm,ym)},最大迭代次数T, 损失函数为L。输出是强学习器f(x)。(1) 初始化弱学习器c(3) 得到强学习器f(x)的表达式GBDT二元分类算法基本步骤对于二元分类GBDT,如果用类似于Logistic回归的对数损失函数,则损失函数为:其中y∈{-1,+1}。则此时的负梯度误差为:对于生成的决策树,各个叶子节点的最佳残差拟合值为由于上式比较难优化,一般使用近似值代替GBDT常用损失函数对于回归算法,常用损失函数有如下4种:(1) 均方差损失函数(2) 绝对损失函数对应负梯度误差为(3) Huber损失函数,它是均方差损失函数和绝对损失函数的折中产物,对于远离中心的异常点,采用绝对损失函数,而中心附近的点采用均方差损失函数。这个界限一般用分位数点度量。损失函数如下对应的负梯度误差为(4) 分位数损失函数。它对应的是分位数回归的损失函数,表达式为其中θ为分位数,需要我们在回归前指定。对应的负梯度误差为对于分类算法,损失函数一般有对数损失函数和指数损失函数两种:(1) 指数损失函数表达式为此时GBDT分类器等价于AdaBoost分类器。(2) 对数损失函数表达式为GBDT主要参数图表6中列出了GBDT模型的主要参数,参数分两大类,一类是GBDT框架参数,与具体的弱学习器无关;另一类是GBDT弱学习器参数。极端梯度提升算法XGBoostXGBoost概述XGBoost是Gradient Boosting方法的一种高效实现,也是GBDT算法的改进和提高。相比于传统的GBDT算法,XGBoost在损失函数、正则化、切分点查找和并行化设计等方面进行了改进,使得其在计算速度上比常见工具包快5倍以上。例如,GBDT算法在训练第n棵树时需要用到第n-1棵树的残差,从而导致算法较难实现并行;而XGBoost通过对目标函数做二阶泰勒展开,使得最终的目标函数只依赖每个数据点上损失函数的一阶导和二阶导,进而容易实现并行。图表7显示了XGBoost算法的流程,它与GBDT在数学上的不同之处在于训练每个弱学习器时的目标函数。XGBoost的损失函数和正则化本文主要介绍以CART树为基学习器的XGBoost算法。任给一个样本点,计算出该样本在每个CART上的得分,累加起来就是该样本的最终得分,由此可进行预测或分类。XGBoost模型的数学描述和目标函数为:在训练第t棵树时,相当于极小化第t棵树的目标函数:XGBoost的特别之处就是用损失函数的二阶泰勒展开来近似原来的损失函数,上述目标函数可近似为:其中gi和hi和分别为第i个样本点上损失函数L关于第二个变量的一阶和二阶偏导数。如果我们再知道和的表达式,就能得到第t棵树。目标函数中正则项部分(相当于树的复杂度)如下定义:其中ft表示第t棵树,T表示该树的叶子节点的个数,ωj表示第j个叶子节点上的分数;γ和λ为惩罚因子,越大表明对树的复杂度的惩罚力度越大。接下来就是对ft的细化,将树拆分成结构部分q和权重部分ω:其中ω是一个T维向量,对应T个叶子节点上的分数;q是一个映射,将样本点x∈Rd映射到某一个叶子节点上。因此,只要确定了树的结构q和每个叶子节点上的得分ω,就能完全确定这棵树了。XGBoost算法基本步骤XGBoost算法的基本步骤与GBDT类似,差别在于构造新树的方法不同。这里主要介绍XGBoost构造新树的方法。将ft和Ω的表达式带入近似的目标函数中,忽略与无关的常数部分,可以得到:最后一式中的Gj和Hj定义为从最后一式可以看出,目标函数的近似是关于T个相互独立的变量ωj的二次函数,可以直接解得极小点以及目标函数的极小值Obj*,到此就完成了ω的计算。下面开始构造树的结构。上面式子中Obj*表示当我们指定一棵树时,可以在目标函数上最多减少多少,因此可以把它叫做结构分数;Obj*越小说明树的结构越好,然后利用贪心算法枚举出不同的树结构,选出结构分数最小的树。具体来讲,每一次尝试对已有的叶子加入一个分割,都要通过下面的式子(该式摘录自报告"Introduction to Boosted Trees", Tianqi Chen, Oct. 22 2014)计算的增益来确定是否要引入该分割:引入分割不一定会使目标函数减小,因为目标函数中还有对引入新叶子的惩罚项,优化这个目标对应了树的剪枝,当引入分割带来的增益小于一个阈值时,可以剪掉这个分割。到此就确定了树的结构。XGBoost相比GBDT的优势(1) 传统GBDT在优化时只用到了损失函数的一阶导数信息,XGBoost则对损失函数进行了二阶泰勒展开,用到了一阶和二阶导数信息。并且XGBoost可以自定义损失函数,只要损失函数一阶和二阶可导。(2) XGBoost在损失函数里加入了正则项,用于控制模型的复杂度。从方差和偏差权衡的角度来讲,正则项降低了模型的方差,使训练得出的模型更加简单,能防止过拟合,这也是XGBoost优于传统GBDT的一个特性。(3) 传统GBDT以CART树作为弱分类器,XGBoost还支持线性分类器作为弱分类器,此时XGBoost相当于包含了L1和L2正则项的Logistic回归(分类问题)或者线性回归(回归问题)。(4) XGBoost借鉴了随机森林的做法,支持特征抽样,在训练弱学习器时,只使用抽样出来的部分特征。这样不仅能降低过拟合,还能减少计算。(5) XGBoost支持并行。但是XGBoost的并行不是指能够并行地训练决策树,XGBoost也是训练完一棵决策树再训练下一棵决策树的。XGBoost是在处理特征的层面上实现并行的。我们知道,训练决策树最耗时的一步就是对各个特征的值进行排序(为了确定最佳分割点)并计算信息增益,XGBoost对于各个特征的信息增益计算就可以在多线程中进行。XGBoost主要参数图表8中列出了XGBoost模型的主要参数,参数分两大类,一类是XGBoost框架参数,与具体的弱学习器无关;另一类是XGBoost弱学习器参数。Boosting集成学习模型测试流程本文将要测试的Boosting集成学习模型有3种:AdaBoost,GBDT,XGBoost,为了保证三种模型的一致性和可比性,对它们采用完全相同的测试流程。Boosting集成学习模型的构建方法包含下列步骤:a) 股票池:沪深300成份股/中证500成份股/全A股。剔除ST股票,剔除每个截面期下一交易日停牌的股票,剔除上市3个月内的股票,每只股票视作一个样本。2. 特征和标签提取:每个自然月的最后一个交易日,计算之前报告里的70个因子暴露度,作为样本的原始特征;计算下一整个自然月的个股超额收益(以沪深300指数为基准),作为样本的标签。因子池如图表10所示。3. 特征预处理:a) 中位数去极值:设第T期某因子在所有个股上的暴露度序列为Di,DM为该序列中位数,DM1为序列|Di-DM|的中位数,则将序列Di中所有大于DM+5DM1的数重设为DM+5DM1,将序列中所有小于DM-5DM1的数重设为DM-5DM1;b) 缺失值处理:得到新的因子暴露度序列后,将因子暴露度缺失的地方设为中信一级行业相同个股的平均值。c) 行业市值中性化:将填充缺失值后的因子暴露度对行业哑变量和取对数后的市值做线性回归,取残差作为新的因子暴露度。d) 标准化:将中性化处理后的因子暴露度序列减去其现在的均值、除以其标准差,得到一个新的近似服从N(0,1)分布的序列。4. 训练集和交叉验证集合成:a) 分类问题:在每个月末截面期,选取下月收益排名前30%的股票作为正例(y=1),后30%的股票作为负例(y=0)。将训练样本合并,随机选取90%的样本作为训练集,余下10%的样本作为交叉验证集。b) 回归问题:直接将样本合并成为样本内数据,同样按90%和10%的比例划分训练集和交叉验证集。5. 样本内训练:使用Boosting集成学习模型对训练集进行训练,考虑到我们将回测区间按年份划分为7个子区间,因此需要对每个子回测的不同训练集重复训练。同时使用本系列第二篇报告中的12个月滚动回测的线性回归模型作为统一对照组。6. 交叉验证调参:模型训练完成后,使用模型对交叉验证集进行预测。选取交叉验证集AUC(或平均AUC)最高的一组参数作为模型的最优参数。7. 样本外测试:确定最优参数后,以T月月末截面期所有样本预处理后的特征作为模型的输入,得到每个样本的预测值f(x),将预测值视作合成后的因子。进行单因子分层回测。回测方法和之前的单因子测试报告相同,具体步骤参考下一小节。8. 模型评价:我们以分层回测的结果作为模型评价指标。我们还将给出测试集的正确率、AUC等衡量模型性能的指标。 boosting集成学习模型测试结果XGBoost是目前Boosting集成学习领域最为新潮的算法,兼具学习准确率高和速度快的优点,同时在参数方面并没有比AdaBoost和GBDT有更多复杂之处,其调参方法也较为简便且具有代表性,因此本文以XGBoost分类模型为例,对模型的参数优化进行说明,其他模型的参数优化方法与之类似。XGBoost分类模型参数优化在机器学习领域,参数寻优最常用的方法是网格搜索。本文使用的方法是一次选择模型的2个参数(选择过多的参数会使搜索变得很慢)在给定的范围内取值,遍历得到模型的AUC值,最后选择AUC值最大时模型对应的参数来作为优化的结果。图表8中列出了XGBoost模型的6个主要参数,然而在将XGBoost模型应用到多因子选股时,并非全部6个参数都会对AUC值造成显著的影响。某些参数的改变只会使得AUC值呈现随机变化或者基本不变的状态,这样的参数没有必要进行优化,只需使用模型的默认值即可。我们经过测试,发现图表8中的参数中n_estimators,learning_rate,min_child_weight,colsample_bytree,colsample_bylevel都不需要进行优化。需要使用网格搜索的参数是subsample和max_depth。我们取subsample = (0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1),max_depth = (3, 4, 5, 6, 7, 8),测试每一组subsample和max_depth值,得到交叉验证集的AUC值,全局最优解为max_depth=3,subsample=0.95。图表12中展示了交叉验证集和测试集的正确率、AUC的详细结果。Boosting集成学习模型正确率与AUC分析下图展示了AdaBoost、GBDT、XGBoost和线性回归模型(分阶段回测同本文)每一期样本外的AUC值随时间的变化情况。四种模型样本外平均AUC分别为0.9,0.2,样本外平均正确率分别为53.94%,54.12%,54.02%,51.44%。从图表13~图表15中可以看出,三种模型的AUC波动方向基本与线性回归一致,AUC均值相对线性回归都要高出一些,但是AUC的波动更大,这可能造成选股后组合净值波动率较大。Boosting集成学习模型决策树结构分析本文所研究的Boosting集成学习模型所使用的弱学习器都是决策树,运用决策树的一大优势就是可以通过可视化的方法呈现决策树的决策过程和树结构,进而帮助人们理解模型逻辑并发现问题。在图表16~图表18中,我们列出了AdaBoost,GBDT,XGBoost三种模型第一个决策树的结构,由于这三种模型都是Boosting模型,决策树按照串行方式训练,因此从第一个决策树中最能看出对模型结果影响最大的因子都有哪些。 上面图表所对应的的三种模型中,都将决策树的最大深度设为3,因此这些图中显示的树的深度都为3。三种模型的第一个决策树都选择从exp_wgt_return_3m(3个月改进的动量反转因子)开始进行划分,说明使用该因子进行划分所带来的信息增益较大。在决策树的下面两层中,也有一些因子被三种模型共同选中,如turn_1m(一个月日均换手率),In_capital(对数市值)。注意到GBDT和XGBoost的第一个决策树使用的划分因子完全一样,只是划分值有所不同,这是因为XGBoost实际上是GBDT的一种高效实现,二者有很多共同之处。XGBoost分类模型可以导出模型因子特征的重要性,这能帮助我们直观地观察模型主要受那些因子影响。下面我们给出 年间XGBoost七阶段测试模型的特征重要性评分表: 我们选取排名前5名的因子,自2011年1月以来,每个月用之前六年的数据训练XGBoost模型的因子重要性,得出因子重要性时间序列。图表21显示了排名前5名的因子的重要性随时间的变化。ln_capital(对数市值)在2017年之前一直是市场上最为有效的因子,重要性远超其他因子,但在2017年之后其重要性迅速下滑。另外四个因子则重要性相差不大,且其时间序列呈现出近似平稳的状态。XGBoost分类模型分层回测分析Boosting集成学习分类器,最终在每个月底可以产生对全部个股下月上涨或下跌的预测值;而Boosting集成学习回归模型,在每个月底可以产生对全部个股下月收益的预测值。因此可以将两者都看作一个因子合成模型,即在每个月底将因子池中所有因子合成为一个"因子"。接下来,我们对该模型合成的这个"因子"(即个股下期收益预测值)进行分层回测,从各方面考察该模型的效果。仿照华泰单因子测试系列报告中的思路,分层回测模型构建方法如下:1. 股票池:全A股,剔除ST股票,剔除每个截面期下一交易日停牌的股票,剔除上市3个月以内的股票。3. 换仓期:在每个自然月最后一个交易日核算因子值,在下个自然月首个交易日按当日收盘价换仓。4. 数据处理方法:将随机森林模型的预测值视作单因子,因子值为空的股票不参与分层。5. 分层方法:在每个一级行业内部对所有个股按因子大小进行排序,每个行业内均分成N个分层组合。如图表24所示,黄色方块代表各行业内个股初始权重,可以相等也可以不等(我们直接取相等权重进行测试),分层具体操作方法为N等分行业内个股权重累加值,例如图示行业1中,5只个股初始权重相等(不妨设每只个股权重为0.2),假设我们欲分成3层,则分层组合1在权重累加值1/3处截断,即分层组合1包含个股1和个股2,它们的权重配比为0.2:(1/3-0.2)=3:2,同样推理,分层组合2包含个股2、3、4,配比为(0.4-1/3):0.2:(2/3-0.6)=1:3:1,分层组合4包含个股4、5,配比为2:3。以上方法是用来计算各个一级行业内部个股权重配比的,行业间权重配比与基准组合(我们使用沪深300)相同,也即行业中性。6. 评价方法:回测年化收益率、夏普比率、信息比率、最大回撤、胜率等。这里我们将展示XGBoost分类模型(subsample=0.95;max_depth=3)的分层测试结果。下图是分五层组合回测绩效分析表(170731)。其中组合1~组合5为按该因子从小到大排序构造的行业中性的分层组合。基准组合为行业中性的等权组合,具体来说就是将组合1~组合5合并,一级行业内部个股等权配置,行业权重按当期沪深300行业权重配置。多空组合是在假设所有个股可以卖空的基础上,每月调仓时买入组合1,卖空组合5。回测模型在每个自然月最后一个交易日核算因子值,在下个自然月首个交易日按当日收盘价调仓。下面四个图依次为:1. 分五层组合回测净值图。按前面说明的回测方法计算组合1~组合5、基准组合的净值,与沪深300、中证500净值对比作图。2. 分五层组合回测,用组合1~组合5的净值除以基准组合净值的示意图。可以更清晰地展示各层组合在不同时期的效果。3. 组合1相对沪深300月超额收益分布直方图。该直方图以[-0.5%,0.5%]为中心区间,向正负无穷方向保持组距为1%延伸,在正负两个方向上均延伸到最后一个频数不为零的组为止(即维持组距一致,组数是根据样本情况自适应调整的)。分五层时的多空组合收益图。再重复一下,多空组合是买入组合1、卖空组合5(月度调仓)的一个资产组合。多空组合收益率是由组合1的净值除以组合5的净值近似核算的。下图为分十层组合回测时,各层组合在不同年份间的收益率及排名表。每个单元格的内容为在指定年度某层组合的收益率(均为整年收益率),以及某层组合在全部十层组合中的收益率排名。最后一列是分层组合在的排名的均值。下图是不同市值区间分层组合回测绩效指标对比图(分十层)。我们将全市场股票按市值排名前1/3,1/3~2/3,后1/3分成三个大类,在这三类股票中分别进行分层测试,基准组合构成方法同前面所述(注意每个大类对应的基准组合并不相同)。下图是不同行业间分层组合回测绩效分析表(分五层)。我们在不同一级行业内部都做了分层测试,基准组合为各行业内该因子非空值的个股等权组合(注意每个行业对应的基准组合并不相同)。各种集成学习模型运行速度比较XGBoost模型的一大优点就是运行速度很快,训练模型时可以节省很多时间。在图表31中,我们对比了各种集成学习模型进行7阶段模型训练所耗用的时间。可以看到XGBoost模型在运行速度上优势非常明显。各种集成学习模型选股指标比较我们比较了XGBoost分类、XGBoost回归、GBDT分类、GBDT回归1(平方损失)、GBDT回归2(绝对损失)、GBDT回归3(Huber损失)、AdaBoost分类、AdaBoost回归8种不同的Boosting集成学习模型。我们对8种模型的主要参数进行网格搜索,选取交叉验证集AUC最高的参数组合作为最终选定的参数,其他参数取默认值。同时将本系列上一篇报告的随机森林模型也加入测试进行对照。并设置两个统一对照组:①沿用本系列第二、三篇报告中的12个月滚动回测的线性回归模型;②利用与XGBoost模型相同的训练周期和训练集构成构建7阶段线性回归模型。以全A选股模型为例,各个模型的具体参数如图表32所示。 首先,我们构建了沪深300和中证500成份内选股策略并进行回测。选股策略分为两类:一类是行业中性策略,策略组合的行业配置与基准(沪深300、中证500)保持一致,各一级行业中选N个股票等权配置(N=2,5,10,15,20);另一类是个股等权策略,直接在票池内不区分行业选N个股票等权配置(N=20,50,100,150,200),比较基准取为300等权、500等权指数。两类策略均为月频调仓,个股入选顺序为它们在被测模型中的当月的预测值顺序。然后,我们构建了全A选股策略并进行回测,各项指标详见图表35和图表36。选股策略分为两类:一类是行业中性策略,策略组合的行业配置与基准(沪深300、中证500、中证全指)保持一致,各一级行业中选N个股票等权配置(N=2,5,10,15,20);另一类是个股等权策略,直接在票池内不区分行业选N个股票等权配置(N=20,50,100,150,200),比较基准取为300等权、500等权、中证全指指数。三类策略均为月频调仓,个股入选顺序为它们在被测模型中的当月的预测值顺序。先总体观察图表33~36,XGBoost分类、GBDT分类、AdaBoost分类相比XGBoost回归、GBDT回归、AdaBoost回归在年化超额收益率、信息比率和Calmar比率整体上要更加优秀,这是因为本文的回归算法(除了线性回归)都使用全部训练集进行训练,而分类算法只取收益率最优的前30%和后30%的训练样本进行训练,这使得分类算法的训练不会受到中间40%收益率特征不明显的样本干扰。对于沪深300成份股内选股的行业中性策略(图表33左侧),XGBoost分类、GBDT分类、AdaBoost分类相比其他算法在年化超额收益率、信息比率整体上优于统一对照组,与随机森林分类模型表现相近。总体来说,表现最优的选股数量是每个行业入选5只个股。对于中证500成份股内选股的行业中性策略(图表33右侧),除了Calmer比率指标,XGBoost分类、GBDT分类、AdaBoost分类相比其他模型都没有呈现出明显优势。对于沪深300成份股和中证500成份股内选股的个股等权策略(图表34),整体来看,所有模型的表现都比统一对照组较差。对于行业中性和个股等权的全A选股(图表35和图表36),XGBoost分类、GBDT分类、AdaBoost分类相比其他算法在年化超额收益率、信息比率和Calmar比率整体上优于其他模型,与随机森林分类模型表现相近。总的来看,Boosting分类模型(XGBoost分类、GBDT分类、AdaBoost分类)在年化超额收益率、信息比率和Calmar比率上优于线性回归算法,但是最大回撤普遍大于线性回归算法。说明Boosting分类模型是一种高收益、高回撤的选股模型,但能够提升投资组合的信息比率和Calmar比率。而XGBoost分类、GBDT分类、AdaBoost分类、随机森林分类之间相比并没有太大差别。XGBoost分类模型选股策略详细分析下面我们对策略组合的详细回测情况加以展示。因为篇幅有限,我们根据上面的比较测试结果,选择展示XGBoost分类模型选股策略。下图中,我们分别展示了沪深300成份股内选股(基准:沪深300)、中证500成份股内选股(基准:中证500)、全A选股(基准:中证500)策略的各种详细评价指标。观察下面的图表可知,对于XGBoost分类模型的行业中性策略来说,随着每个行业入选个股数目增多,年化收益率在下降、信息比率和Calmar比率先升后降,最优每个行业入选个股数目在6个左右。我们有选择性地展示三个策略的月度超额收益图:总结与展望以上我们对包括Adaboost、GBDT以及XGBoost在内的三种Boosting集成学习模型进行了系统的测试,并且利用三种方法构建沪深300、中证500和全A选股策略,初步得到以下几个结论:一、Boosting分类模型具备不错的预测能力。我们在 至 的回测区间中分7个阶段训练并测试模型,Adaboost、GBDT以及XGBoost三种模型样本外平均AUC分别为0.9,0.5696,样本外平均正确率分别为53.94%,54.12%,54.02%。二、Boosting集成学习模型的参数较多,普遍有5~10个,但在实际调参中,能显著提高模型预测能力的参数很少(1~3个),其他参数使用默认值即可。这是因为Boosting集成学习模型已经对多个深度很浅(深度为3)的决策树进行了集成,模型的偏差和方差都得到了兼顾,所以再调整其他参数收效不大。三、我们分别以沪深300、中证500和全A股为股票池,利用Boosting学习模型构建选股策略。对于沪深300成份股内选股的行业中性策略,Boosting分类模型的超额收益在2.4%~8.1%之间,信息比率在0.82~1.74之间,超额收益、信息比率、Calmar优于线性回归模型。对于中证500成份股内选股的行业中性策略,Boosting分类模型的超额收益在3.32%~8.99%之间,信息比率在1.07~2.11之间,相比线性回归模型优势不大。对于全A选股的行业中性策略,Boosting分类模型相对于中证500的超额收益在24.1%~35.3%之间,超额收益最大回撤在14.4%~18.8%之间,信息比率在3.91~4.44之间,除了最大回撤,表现优于线性回归。总的来看,Boosting分类模型(XGBoost分类、GBDT分类、AdaBoost分类)在年化超额收益率、信息比率和Calmar比率上优于线性回归算法,但是最大回撤普遍大于线性回归算法。说明Boosting分类模型是一种高收益、回撤较大的选股模型,但能够提升投资组合的信比率和Calmar比率。而XGBoost分类、GBDT分类、AdaBoost分类、随机森林分类之间相比并没有太大差别,但是XGBoost分类相比与另外三种分类模型在训练速度上有优势。四、文中Boosting分类模型总体表现略优于线性回归,但是最大回撤普遍大于线性回归,我们认为这主要是两类模型在对待特征的处理方式上有区别所导致。本文的Boosting分类模型使用的弱学习器都是决策树,决策树是针对一个一个特征进行处理,而线性模型是所有特征给予权重相加得到一个新的值。决策树可以根据各个特征的信息增益进行有先后的分裂,具有一定的特征筛选功能;而且在Boosting模型的框架下,信息增益较大的特征很可能会在多个决策树中都被使用。综合以上两点,样本内表现优秀的特征会得到更大的重视,而由于决策树深度的限制,另一些表现一般的特征在模型中所起的作用会非常有限。所以在市场风格变化较小的时候,Boosting分类模型能充分利用有效特征,带来更高的收益。但是一旦市场风格巨变,之前的有效特征失效,Boosting分类模型会呈现出较大回撤。五、本系列的第三篇报告(人工智能选股之支持向量机模型)使用了固定样本内和样本外数据集的回测方法。这种方法以至的数据作为样本内数据,以至的数据作为样本外数据。样本内数据离当前时间过于久远,可能已经无法准确描述当前市场的特征。所以在这篇报告里,我们尝试了分7段回测的方法(见图表11),该回测方法由于使用了更新的数据训练模型,使得策略的表现更加优秀。六、本文的测试还表明,在达到相近预测能力和回测绩效时,Boosting模型比Bagging模型(随机森林)要简单。本文的Boosting模型中,每个决策树的深度都为3,决策树总数为100。而Bagging模型中每个决策树的深度普遍在20以上,决策树总数有数百个,模型的复杂程度远大于Boosting模型。通过以上的测试和讨论,我们初步理解了Boosting集成学习模型应用于多因子选股的一些规律。接下来我们的人工智能系列研究将继续探讨神经网络、深度学习等方法在多因子选股上的表现,敬请期待。附录CART算法目前主流的决策树算法包括C4.5和CART:C4.5每个节点可分裂成多个子节点,不支持特征的组合,只能用于分类问题;CART每个节点只分裂成两个子节点,支持特征的组合,可用于分类和回归问题。而在随机森林中,通常采用CART算法来选择划分属性,并使用"基尼指数"(Gini Index)来定义信息增益程度。分类问题中,假设有K个类,样本集D中的点属于第k类的概率为Pk,则其Gini指数为:Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,Gini(D)越小,数据集D的纯度越高。二分类问题中,若对于给定的样本集合D(|D|表示集合元素个数),根据特征A分裂为两不相交部分,则分裂后的从根节点开始,递归地在每个结点分裂时选取Gini(D,A)最小的特征A为划分属性,将训练集依特征分配到两个子结点中去。照此逐层划分,直至结点中样本个数小于预定阈值,或样本集的Gini指数小于预定阈值,或者没有更多特征,即生成了一棵可进行分类预测的决策树。下面我们试举一例说明。假如我们希望根据当前市场股票的市值风格(大、中或小)和板块风格(消费、周期或成长)预测涨跌情况,模拟数据如图表42。直观地看,大市值股票全部属于"涨"类别,中小市值股票绝大多数属于"跌"类别。似乎以"是否为大市值"为规则进行首次分裂比较好。那么决策树将如何学习这一步呢?前面提到,节点分裂的原则是使得分裂后的信息增益最大,即挑选Gini(D,A)最小的特征A为划分属性。第一步分裂前,全部8个样本中有3个属于"涨"类别,概率为P(ω涨)=5/8;5个属于"跌"类别,概率为P(ω跌)=3/8。因此分裂前的Gini指数为:如果我们以"是否为大市值"作为规则将全样本分裂成两个子节点,在2个大市值样本中属于"涨"类别的概率为P(ω涨)=0,属于"跌"类别的概率为P(ω跌)=1,该子节点的Gini指数为:类似地,中小市值子节点的Gini指数为:上述分裂过程中,分裂到大市值的概率为P(ω大市值)=2/8,分裂到中小市值的概率为P(ω大市值)=6/8。因此Gini(D,市值)为:如果换成"是否为小市值"或"是否为消费类"作为分裂规则,计算出Gini指数为:事实上,在所有可能的分裂规则中,"是否为大市值"的Gini指数最小。我们据此进行首次分裂,如图表43所示。接下来依照相同办法,继续对子节点进行分裂,直到每个样本都归入终端的叶子节点,如图表44所示,最终完成整棵决策树的学习。特征重要性评分在具体的决策树模型构建中,我们将当期股票的各个因子作为输入特征,按照股票下月收益情况分为不同类别,以此进行模型训练。对于决策树这一非线性分类器,我们依然可以通过特征划分过程来计算评估各个因子特征的重要性,这与传统线性回归模型中的因子权重相仿。特征影响力的计算需要借助于结点分裂时Gini指数,方法如下:其中,Ii(A)表示结点i根据特征A分裂为两个子结点后,Gini指数相对于母结点分裂前的下降值。故而可定义特征A的绝对重要性S(A)为所有按特征A分裂的结点处的Ii(A)之和。将所有特征的绝对重要性归一化,即可得到各个特征的重要性评分(所有特征重要性评分之和为1)。如上,我们逐层地根据特征对训练集进行划分,这样便形成了一个分类准则,即决策树算法的本质所在。相较于其他机器学习算法,决策树的优势主要包括:1.训练速度快;2.可以处理非数值类的特征,如不同板块风格股票涨跌分类问题;3.可以实现非线性分类,如图表45的异或问题(横纵坐标x、y相同则分类为1,不同则分类为0),该问题在逻辑回归、线性核的支持向量机下无解,但是使用决策树可以轻松解决。但同时,决策树的缺陷在于不稳定,对训练样本很敏感,并且容易过拟合。风险提示通过Boosting模型构建选股策略是历史经验的总结,存在失效的可能。免责申明本公众平台不是华泰证券研究所官方订阅平台。相关观点或信息请以华泰证券官方公众平台为准。根据《证券期货投资者适当性管理办法》的相关要求,本公众号内容仅面向华泰证券客户中的专业投资者,请勿对本公众号内容进行任何形式的转发。若您并非华泰证券客户中的专业投资者,请取消关注本公众号,不再订阅、接收或使用本公众号中的内容。因本公众号难以设置访问权限,若给您造成不便,烦请谅解!本公众号旨在沟通研究信息,交流研究经验,华泰证券不因任何订阅本公众号的行为而将订阅者视为华泰证券的客户。本公众号研究报告有关内容摘编自已经发布的研究报告的,若因对报告的摘编而产生歧义,应以报告发布当日的完整内容为准。如需了解详细内容,请具体参见华泰证券所发布的完整版报告。本公众号内容基于作者认为可靠的、已公开的信息编制,但作者对该等信息的准确性及完整性不作任何保证,也不对证券价格的涨跌或市场走势作确定性判断。本公众号所载的意见、评估及预测仅反映发布当日的观点和判断。在不同时期,华泰证券可能会发出与本公众号所载意见、评估及预测不一致的研究报告。在任何情况下,本公众号中的信息或所表述的意见均不构成对客户私人投资建议。订阅人不应单独依靠本订阅号中的信息而取代自身独立的判断,应自主做出投资决策并自行承担投资风险。普通投资者若使用本资料,有可能会因缺乏解读服务而对内容产生理解上的歧义,进而造成投资损失。对依据或者使用本公众号内容所造成的一切后果,华泰证券及作者均不承担任何法律责任。本公众号版权仅为华泰证券股份有限公司所有,未经公司书面许可,任何机构或个人不得以翻版、复制、发表、引用或再次分发他人等任何形式侵犯本公众号发布的所有内容的版权。如因侵权行为给华泰证券造成任何直接或间接的损失,华泰证券保留追究一切法律责任的权利。本公司具有中国证监会核准的"证券投资咨询"业务资格,经营许可证编号为:Z。评级说明行业评级体系-报告发布日后的6个月内的行业涨跌幅相对同期的沪深300指数的涨跌幅为基准;-投资建议的评级标准增持行业股票指数超越基准中性行业股票指数基本与基准持平减持行业股票指数明显弱于基准公司评级体系-报告发布日后的6个月内的公司涨跌幅相对同期的沪深300指数的涨跌幅为基准;买入股价超越基准20%以上增持股价超越基准5%-20%中性股价相对基准波动在-5%~5%之间减持股价弱于基准5%-20%卖出股价弱于基准20%以上林晓明"人工智能选股" 专题回顾【点击标题至报告原文】1.【华泰金工林晓明团队】人工智能选股框架及经典算法简介——华泰人工智能系列之一3.【华泰金工林晓明团队】人工智能选股之支持向量机模型——华泰人工智能系列之三4.【华泰金工林晓明团队】人工智能选股之朴素贝叶斯模型——华泰人工智能系列之四5.【华泰金工林晓明团队】人工智能选股之随机森林模型——华泰人工智能系列之五雪球是一个投资者的社交网络,聪明的投资者都在这里。原网页已经由ZAKER转码以便在移动设备上查看
相关标签:
原网页已经由 ZAKER 转码排版
财经新闻12小时前
财经新闻21小时前
财经新闻6小时前
财经新闻2小时前
财经新闻2小时前
财经新闻4小时前
股票频道23分钟前
股票频道5小时前
股票频道3小时前
房地产3小时前
股票频道3小时前
股票频道4小时前
第一财经43分钟前
环球老虎财经53分钟前
中国网财经54分钟前

我要回帖

更多关于 adaboost 指数损失 的文章

 

随机推荐