Null Importances
在olivier大佬的kernel上看到的https://www.kaggle.com/ogrellier/feature-selection-with-null-importances,思想也很纯粹,最近也用了好多次,效果还不错。
主要思想:
通过利用跑树模型得到特征的importance来判断特征的稳定性和好坏。
1)将构建好的特征和正确的标签扔进树模型中,此时可以得到每个特征的重要性(split 和 gain)
2)将数据的标签打乱,再扔进模型中,得到打乱标签后,每个特征的重要性(split和gain);重复n次;取n次特征重要性的平均值。
3)将1中正确标签跑的特征的重要性和2中打乱标签的特征中重要性进行比较;具体比较方式可以参考上面的kernel
当一个特征非常work,那它在正确标签的树模型中的importance应该很高,但它在打乱标签的树模型中的importance将很低(无法识别随机标签);反之,一个垃圾特征,那它在正确标签的模型中importance很一般,打乱标签的树模型中importance将大于等于正确标签模型的importance。通过,同时判断每个特征在正确标签的模型和打乱标签的模型中的importance(split和gain)来选择特征稳定和work的特征。思想大概就是这样吧,importance受到特征相关性的影响,特征的重要性会被相关特征的重要性稀释,看importance也不一定准,用这个来对暴力特征进行筛选还是可以的。