皮匠网

人工智能系列之十三:人工智能选股之损失函数的改进(附下载链接)

2018-08-09 09:40 | 人气:94

三个皮匠微信公众号每天给您带来最全最新各类数据研究报告



本文创新性地提出了两种对数损失函数改进方案,取得了更好的回测效果

损失函数在机器学习模型的训练过程中决定了模型的优化方向,具有重要的地位。对数损失函数是机器学习中最常用的二分类模型损失函数,它的形式可以被分解为两项,分别代表二分类的假阳性误差和假阴性误差,普通对数损失函数中,两类误差的权重是相等的。本文针对对数损失函数的形式,结合机器学习在多因子选股中的应用,提出了两种改进方案,分别解决不同目标下的机器学习选股问题。两种改进方案相比普通对数损失函数都取得了更好的回测结果。原文来自皮匠网,关注“三个皮匠”微信公众号,每天分享最新行业报告

改进方案1:加权损失函数更加适合样本不均衡的分类问题

针对分类模型中两类样本不均衡的问题,我们引入了加权损失函数,该损失函数能增大数量较少一类样本的损失项权重。接下来,我们在全A股票池内构建不均衡的训练集样本进行测试。总体来看,在保持其他条件相同的情况下,使用加权损失函数的模型在年化超额收益率、信息比率、Calmar比率以及召回率表现更好,但是在超额收益最大回撤方面没有明显优势。说明对于不平衡样本,加权损失函数对于未来表现较好的股票预测能力更好。对比行业中性选股和个股等权选股两种方式,行业中性选股情况下使用加权损失函数的模型优势更加稳定。

改进方案2:广义损失函数能降低机器学习模型的换手率

广义损失函数的核心思想是新增一项损失项并赋予权重λ,使得模型能够在优化原始问题的同时控制预测值与另外一个目标序列的差异。本文将广义损失函数用于控制模型换手率,构建了相对于中证500行业市值中性的全A选股策略。回测显示,随着λ的增大,模型的换手率呈现单调下降的趋势。在所有模型中,λ取0.1时模型的年化超额收益率、夏普比率以及RankIC值最高,月均双边换手率下降了8.21%,说明恰当地使用广义损失函数不仅能降低换手率,还能一定程度上防止过拟合。但是当λ逐渐增大后,模型的年化超额收益率和夏普比率变差,说明模型的预测能力下降。

本文给出了改进损失函数的推导过程和Python实现代码

在本文的测试中,我们统一选用XGBoost分类模型进行测试,在XGBoost提供的自定义损失函数接口上改进损失函数。XGBoost是目前最先进的Boosting模型,其详细原理可参见本系列第六篇报告《华泰人工智能选股之Boosting模型》。XGBoost的自定义损失函数接口要求提供损失函数的一阶导数和二阶导数。本文详细展示了普通损失函数、加权损失函数和广义损失函数的一阶导数以及二阶导数的推导过程,并给出相应的Python实现代码。

广义损失函数仍有进一步研究的空间

在此之前,投资组合换手率的控制一般通过组合优化或风险约束的方法来进行,而本文提到的利用广义损失函数这种方法,则直接将收益预测和换手率控制放入到一个损失函数中进行优化,更具有整体性,是一种创新的方法。对于广义损失函数来说,其结构的通用性可以让我们将任意合适的目标序列加入损失函数中,例如某种选股因子的因子值,这样就能方便调整机器学习模型对该选股因子的暴露程度,使得机器学习模型能够更方便地进行因子权重调整以及因子择时。这将是我们之后会进一步研究的方向。

PDF版本将分享到《三个皮匠每日知识精选》知识星球,三个皮匠感谢您的支持!

加入知识星球,批量下载最新报告

需要批量下载和及时更新最新研究报告的朋友,可以加入我们的《三个皮匠每日知识精选》知识星球分享会,大量的中外文精品报告及各类专题资料将会优先分享到知识星球中,加入即可下载全部报告,还可根据您的需要定制各类报告。


对于已经是网站VIP年会员的朋友,请添加小皮匠微信号www-3mbang-com,留言VIP会员用户名,审核通过后可免费加入知识星球。


知识星球加入请使用微信扫描以下二维码


扫下方“三个皮匠”公众号二维码,关注公众号获得更多最新资讯

还可以输入500字符   

暂无回复,赶快抢占沙发吧。

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给皮匠网发消息,QQ:2622273488 - 联系我们
copyright@ 2008-2013 皮匠网网站版权所有
经营许可证编号:湘ICP备17000430