Advance Finance Machine Learning读书笔记
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
因为年初疫情影响,书剩在别的地方无法出门取,所以断更了很久,现在持续更新中……
之前有搜到大神weixin_38753422的AFML系列。写得很详细并且有代码和图片解释,链接在此
此系列从Part 1 Chapter 3开始写起,Chapter3之前内容可以在上面的链接里看到。(注意并不是所有内容的整理,而是我个人觉得需要整理的内容)
本文讲的时Part 1 Chapter 8 Feature Importance in Finance(金融数据中的特征重要性)
回测并不是探索工具,特征重要性才是
借用Macros在书中强调的这句话,看出特征重要性对于金融特征工程的重要性,下面就来谈谈在AFML中提到的特征重要性的措施。
多重共线性是个问题
当一个模型中出现多个特征之间的多重共线性问题时,会降低各个特征的特征重要性,一个解决方法是对Raw feature做PCA,生成多个正交特征,使特征之间不再具有共线性问题。
平均不纯度下降法(Mean Decrease Impureity)
MDI的特点:
1.快速
2.可解释性
3.必须用在树模型上
原理说明:类似RF一样,在生成一个弱学习器的时候,每棵树的节点随机选取特征并更具不纯度最小的方向去分裂,而在多个这样的分裂之后,我们可以得到一个随机森林,并且可以计算出每个被选取到的特征上它的不纯度平均下降了多少。从大到小排序,下降越多越重要。
注意事项
1.决策树分类器会因为某些特征的分裂效果更好,而忽视一些其他分类效果不好的特征。所以在使用MDI方法时,并用Sklearn的RF类去实现时记得将超参max_features=int(1)。
2.因为这个方法是样本内的特征重要性检测,所以就算没有预测能力的特征也会被分配到一点重要性。
3.MDI无法用在非树模型上
4.结果加和一定是1,并且每个特征重要性范围都是[0,1]
5.MDI并不能解决特征之间的多重共线性,当出现多重共线性时,两个相同特征的重要性会被分成1/2
6.当特征中有一些categories特别多的类别特征时,这个MDI会产生偏差,更偏好这些类别特征,产生结果的Bias
平均准确度下降法(Mean Decrease Accuracy)
MDA的特点:
1.比较慢
2.样本外计算
原理说明:比如你先训练一个模型,计算该模型的评价指标,如:Accuracy。之后在对数据中的某一个特征进行无序打乱,再训练一次,比较前后两次的评价指标,下降或升高了多少(取决于你选择的评价指标是越高越好还是越低越好)。差值越大说明被打乱的特征越重要。
注意事项
1.MDA可以使用在任何模型上,不仅仅只是树模型
2.评价指标不限
3.无法处理多重共线性,当相同两个重要特征同时出现时,MDA都会给予他们相同高重要性
4.当模型中所有特征都不是很重要时,MDA能够表明这个结果,而MDI是特征重要性加和为1,所以会让我们误以为一些特征很重要
5.CV时记得Purge和Embargo参考CV那一章文章
单一特征重要性法(Single Feature Importance)
SFI的特点
1.样本外计算
2.解决了多重共线性
原理说明:将单个特征挑选出来,在样本外的数据上进行CV计算评价指标的高低。对每个特征取得的CV-score进行排序,分数越高越好,或者越低越好(取决于你选择的评价指标是越高越好还是越低越好)。
注意事项
1.SFI可以使用在任何模型上,不仅仅只是树模型
2.评价指标不限
3.因为每次只取一个特征出来,所以并不会产生多重共线性的问题
4.SFI能表明,所有特征都不重要的结果
5.【最重要】一模型两个特征可能会比2个模型每个模型一个特征的bagging方法结果更好。举个例子,特征B只有在特征A存在的情况下能够体现出其重要性。所以在使用SFI的时候并不能解决这个特征之间Joint-effect的影响。
可以看出解决多重共线性这个问题是实现Feature Importance的关键。其实已经有很多解决多重共线性的方法,而书上则提到了生成正交特征来解决。
PCA

正交特征的优越性
1.解决多重共线性
2.降低了特征维度,加快模型训练速度
3.在解释数据结构后的特征分析
书上着重对最后一点进行了分析解释:
因为PCA在进行特征合并时并没有用到Label信息,所以PCA的结果并不会产生过拟合的影响。进一步使用之前提到的特征重要性方法(MDI、MDA、SFI)的结果与PCA结果进行相关性比对,可以验证哪些特征是真的重要,哪些特征是伪重要。(相关性比对用的是加权肯德尔系数,比对的两个对象是1.原始特征的特征重要性2.计算PCA时原始特征的特征值)