1算法简介
AdaBoost是由Yoav Freund和Robert Schapire提出自适应增强的一种机器学习方法。AdaBoost算法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。
AdaBoost是一种迭代算法,在每一轮中加入一个新的弱分类器(新的因子),直到达到某个预定的足够小的错误率。在训练样本时,每一个样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。第一次分类后,如果某个样本已经被正确地分类,那么它的权重就会降低,因为它被下一个分类器选中的概率被降低;反之,如果样本被分类错误,它的权重就会增加。通过这样的方式,AdaBoost算法能"针对"那些难以分离的样本上。因此,在量化分析预测股票的走势上,AadaBoost常能比其它算法更加胜任。
2数据处理
在将此算法搬运到预测股票涨跌之前,我们需要做一些调整避免AdaBoost算法的"水土不服"。
1)由于AdaBoost算法对于噪声数据和异常数据极其敏感,简答地将训练样本分类涨与跌为(+1,-1)可能会对结果造成极大影响。所以,处理时可以去除样本中不明显的涨跌(如<1%)保留噪声较少部分。
2)在弱分类器的选择上,大家可以加上任何有相关性的因子。但是,值得注意的是,需要将因子的值划在同一区间内,这样可以极大减少极端值的影响。
3算法应用
为了方便解释,这里选择了三层(L层)弱分类器,分为两组(G组)。
1)首先,我们有训练样本D={xi = (Xi1,Xi2,Xi3),Yi}, 这里i表示第i个样本,xi表示每个样本对应的三个因子, Y代表每个样本对应的需要学习的值——涨(+)或跌(-)。
2)起初,如图一,我们赋予每个样本同样的权重 wi = 1/n,图中显示每一个圆圈大小一致。然后,我们尽可能使得错误分类得将样本一分为二,分成两组。
并记录该训练误差。
3)计算判决分数 :
4)更新权重,如图二、三,将分类正确地权重降低(圈圈变小),分类正确地权重降低(圈圈变大)。
5)得到最后的分类器:
6)现在可以通过得到的分类器的值来预测涨跌幅,分数越高则走涨的可能性却高,分数越低则走跌的可能性越大。
4参考文献
参考文献:
http://blog.csdn.net/dark_scope/article/details/14103983
代码推荐:
https://github.com/justdark/dml/tree/master/dml/ADAB
5论文资料获取