原文来自:MindGo量化社区-【机器学习】机器学习中的集体智慧
链接:http://quant.10jqka.com.cn/platform/html/article.html#id/88034955/q/mindgo_59547441_733
【导语】在人类社会中,大量运用到了集体智慧。比如在重大问题上,需要多个人来投票选择,避免单人抉择造成的不合理和不周全。在机器学习中,个体分类器或者回归器更加容易出现训练不准确,受到分类能力和预测能力的限制。这个时候,聪明的人们就将社会现象映射到机器学习领域,将单学习器扩展到多学习器,谓“集成学习(ensemblelearning)”。我们的班级之旅正式开始!
个人And集体
自小我们就一直被教育,个人要服从集体,同时个人也构成了集体。在集成学习中,个人就是一个一个弱学习器,每个个人合在一起就是一个强学习器。如果每个个人之间有所差异,比如性别、地域、专业,那么可以将这种方式称作“异质集成”;相反,如果每个个人几乎一模一样,比如都是来自同一个专业的,那么就叫做“同质集成”(咳咳,注意不是“同志”)。当然了,对于每一个个人来说,也必须要能够懂得一些相关的专业知识才行。比如在吃瓜问题中,请一个农民大伯可能比一个大学生来得有用,大学生在判断瓜的好坏问题上可能还不如投硬币(原谅我,真的不是歧视大学生==)。换句话说,每个弱学习器在理想状态下,应该能够拥有超过随机猜测的分类预测能力。
现在,我们来看一看集体智慧的力量。假设我们现在为了进行集成学习,找来了农民大伯、擅长吃瓜的大学生和教授,且我们手头有3只瓜。除了严格的教授认为这三只瓜全是坏瓜以外,其他两人都认为只有其中一只瓜是坏瓜。本着多票原则,我们得到了最后一行的集成决策结果。然后我本着敬业精神,勇敢地吃了三只瓜,得到了这三只瓜的实际结果,列在表头每只瓜后面,√代表好瓜,×代表坏瓜。那么通过对比结果,我们就得到了下面整张表格,我们发现每个人的个人准确率都是66.7%,而集成后的结果得到了100%的准确率。这就是集体的力量!当然了,我们也必须清楚地知道,并不是在任何情况下集体的决策都是对的,否则怎么会有那么一句话“真理总是掌握在少数人手里”,这说的也就是集成失效的情况,多数发生在每个弱学习器的正确率低于50%时。
个体学习器的生成
说到集成,最容易想到的就是每个个体分类器单独对样本做出判断,然后分类问题通过投票,回归问题通过平均的方法得到集成结果。实际上,这里存在两种生成方式,一种就是前面提及的个体分类器之间没什么关系的并行化方法,也常见的叫做Bagging,而另一种,则是存在强依赖关系、必须串行生成的序列化方法,常见的叫做Boosting。
Bagging实际上是从BootstrapAGGregatING,为了方便记忆,实际上可以直接从中文翻译的角度理解为“装袋”,个人认为可以理解为给予每个个体学习器的数据是不同的,从袋子里取出一定数量的球扔给学习器进行训练,实际上是抽样的概念;Boosting的做法则相当不一样,类似上图所示的那样,在每一次的训练迭代过程中,Boosting会调整样本分布,使得被预测错误的样本得到更高的权重,即受到更高的关注,最著名的算法是AdaBoost。
这里必须要提及有名的随机森林(RandomForest)算法。简单来说,随机森林算法是在Bagging样本抽样的基础上,同时又增加了属性抽样,也即在训练过程中,只给予每棵数一部分的数据样本和一部分的特征属性,从而同时制造了样本扰动和属性扰动。因而往往随机森林算法具有不错的鲁棒性和样本外的泛化能力。这个意思就好比,我只给看种瓜的大伯看西瓜的颜色和外观,只让擅长吃瓜的大学生摸一摸瓜的外皮,只让教授掂一掂西瓜的重量,仅仅让他们从部分角度来观察西瓜,由于他们观察西瓜的角度压根就是不同的,所以进一步加大了他们之间的差异性。因此,随机森林算法是天生的集成学习算法。
结合策略
回想从小到大所在的任何一个班级,那种涉及到集体利益的事情,比如运动会入场式、广播操比赛、某个荣誉的竞选等等等等,都是在班长的组织下由班级中的所有成员共同决定的。在这种情况下,每个同学可以看做是一个等权的弱学习器,最后的决定是由每个人通过投票的方式得到的,即所谓的“相对多数投票法”;当然不排除在有的情况下,老师的意见具有相当的权威性,在这样的情况下,老师和同学就不是等权的了,老师拥有更高的投票权,可能对最终结果造成跟多的影响,也就是所谓的“加权投票法”。
多样性增强
既然集成学习的目标是为了通过多人智慧得到更加可靠的预测结果,那么其中的每个分类器理论上来说拥有的差异性越大越好,比如为了预测一个人是不是一个好人,老师会从成绩的层面进行评判,同学会从人品的角度评判,家长会从生活习惯的角度评判。也就是说,不同人才能从不同角度去看问题。举个极端的例子,假如你采访了三个你的死对头,而且他们都是不折不扣的坏人,那么他们对你的评价一定是糟糕至极的,即便你是个24K纯好人。
因此,为了更加准确的评判一个对象,我们必须增加学习器的多样性——一千个读者眼里有一千个哈姆雷特。那么如何增加多样性呢?
第一种方式是通过数据样本的扰动。数据样本实际上是信息的代表,通过抽样的方式,实际上就是通过掩盖一部分信息的方式,尝试让每个人看到不同的角度。
第二种方式是通过输入属性的扰动。输入属性实际上是维度的代表,通过减少一部分维度,引导每个人从不同的角度看问题。
第三种方式是通过算法参数的扰动。通过随机设置一些不同的参数,加入了一些随机因素。
【策略应用】在本文的最后,介绍一个比较简单的基于随机森林基本面选股的量化策略。思路如下:
我们以今日为2017年6月1日调仓日为例说明。
1.首先获取调仓日前一个月月初(2017年5月1日)的公司财务指标,并计算每只股票从前一个月月初到月末(2017年5月1日至2017年5月30日)的涨跌幅;
2.将涨跌幅处理为标签,涨跌幅为“+”则赋予一个“+1”的标签,为“-”则赋予一个“-1”的标签。
3.标准化。在这里使用了StandardScaler作为标准化器;
4.将标准化后的公司财务指标和对应每家公司的涨跌标签作为输入进行训练;
5.获取上月月末的公司财务数据(2017年5月30日),使用训练好的随机森林分类器进行预测,并在6月1日开盘进行调仓,持有所有预测为“+1”的股票。
从回测结果看,利用随机森林通过简单的基本面因子选股,也能够获得稳定的超额收益。之前在研究模块简单的进行了验证一下,随机森林基本上在验证集上分类正确率能够维持在60%以上,因此要点在于必须要持有判断为“+1”的所有正例标的!如若不这样做的话,然后你有幸持有了所有误判的股票,那么收益率就会变得惨不忍睹!综合来看,本文对利用随机森林进行选股量化策略进行了研究,这里的策略仅仅是裸策略,没有包含任何的止盈止损措施,回撤也较大,还是相当有改进空间的。比如在特征的选择上,在训练集和预测目标的选取上等等。。。


雷达卡




京公网安备 11010802022788号







