2021-03-23 特征选择的效果评估

在初步特征筛选之后,若使用树模型,特征经过数值化处理后就可以模型进行效果评估,一般会给出一个AUC或KS的模型评估结果。这里假设我们放入的特征数量为N,我期盼的是通过丢弃某些无效的特征,进一步提升模型效果

特征选择有常用的三种方法,Filter(过滤法)、Wrapper(包裹法)、Embedded(嵌入法)。我们常用的IV计算、相关性计算、PSI计算、自变量方差分析都属于Filter;而模型中的L1和L2正则化以及模型产出的importance features部分等于0属于Embedded,也就是模型本身提供的一些消除无效特征的方法。剩下唯一的方法Wrapper就是这次研究对象。

Wrapper可能听到的不多,但我常听到向前搜索(Forward)、向后搜索(Backward)以及双向搜索(Bidirectional),就是属于这个框架之下。因为这些方法根据模型不同,无论的模型类型、模型参数还是评价指标都可能不同,因此目前我还没有在网络上找到一套成熟的解决方案加理论基础。给我研究的深度多了一层探索空间。

我打算测试以下方法,来验证效果给予未来特征选择做出更多的一套解决方案备选。这里挑战的是提升效果vs执行效果,在后期计算复杂度会慢慢体现起重要性。

  • Backward、Forward、Bidirectional三者的选择
  • 可能选择验证的计算复杂度讨论
  • 常用的策略方案(评价指标+筛选策略)
  • 实验结果以及对自己的启示

Backward、Forward、Bidirectional三者的选择

因为已经选择了树模型,使用模型适应性通用参数和最佳效果AUC差异在0.0X的级别,保持在相同参数情况下,对特征选择而言是公平的,因此优先选择Backward方法。

方案一,选择Backward,使用Boruta工具(随机森林给变量打分工具)若不会这个工具也可以使用模型本身的importance feature的score作为排序条件,逐一丢弃特征看在train和test上的效果。结果没有向上向下的明显表现,仅在最后10个特征丢弃时效果有下降的显现。从提升模型效果角度看,因此不建议使用。

Boruta从弱到强逐一丢弃

方案二,选择Bidirectional,需要考虑这些问题,1使用如何评价效果,2判断是否丢弃或者拿回,3如何迭代过程控制,4信息记录保存。问题分解后结合用Xgboost测试特征的时候出现计算3-4小时的用时,产生下面的计算复杂度问题需要考虑。

可能选择验证的计算复杂度讨论

根据Wikipedia对“时间复杂度”的解释,在计算机科学中,算法的时间复杂度是一个函数,定性描述该算法的运行时间。

当等待时间过久,一个测试一个错误甚至本身上线的可能性都会受到影响,面对生产问题时间复杂度变得重要不可或缺。常用O(N)来表示,常数时间O(1)、线性时间O(n)、二次方时间O(n2)、指数时间2O(n)。根据这次计算初步知道若150个特征,做一次全局搜索找最优解需要2^150=1427247692705959881058285969449495136382746624,若按照一次程序6秒计算,是一个不可计量的时间复杂度度,设计一个更好的搜索方法在Bidirectional中找到相对的最优解就是我的目标。

应对的策略方案(追求模型AUC最大化)

按照150个变量,用LightGBM通用模型预估6秒一轮计算。

方案 排序策略 选子集策略 执行计划 时间复杂度 时间预估
全变量搜索 无指向 逐一剔除和替换 1选子集->重复1 2^O(n) 无穷
迭代排序迭代筛选1 原模型下删除1个特征后计算AUC 删除AUC上升且影响最大的变量 1排序->2选子集->重复12 O(n^2) 39小时
迭代排序迭代筛选2 原模型下统计importance 删除importance效果最差的特征 1排序->2选子集->重复12 O(2n) 30分钟
一轮排序迭代筛选 原模型下统计importance 删除importance效果最差的特征 1排序->2选子集->重复2 O(n) 15分钟
一轮排序迭代筛选3 原模型下删除1个特征后计算AUC 删除importance效果最差的特征+bidirectional 1排序->2选子集->重复2 O(n*(n+1)/2) 90分钟
  • 模型AUC效果和importance feature的分数是否相关?
    答:题目指原模型提供的importance feature的分数,是否排序靠后的特征当剔除后模型AUC效果提升是最明显的?是否会出现以下情况,a.剔除后模型效果不变;b.其他重要变量丢弃反而带来了模型提升。
    不相关。importance feature和丢弃特征后的AUC并没有相关性,相关性系数(spearman)仅仅0.04,用图形展示也没有明显区别。

  • 是否在60分钟以内完成验证的更好优化方案?
    答:使用“一轮排序迭代筛选3”来验证效果,因为目标是AUC效果的提升,因此选择评价也采用AUC作为基准,同时可以为后期验证效果差异做对照。

  • 对比相同特征放入LightGBM模型的AUC计算结果存在差异,造成误差。
    答:根据树模型的底层原理具有随机性,相同变量顺序不同也会导致模型效果存在差异。引入两个方法解决,a.对所有模型训练时的特征先做排序;b.计算P值确定置信区间下的一定存在差异的情况,再做排除或保留处理(前期仅仅比较大小,未考虑随机扰动导致的误差)。
    另一个引起的原因是ligbtgbm.cv使用的nflod每次分割结果不相同。解决方案,使用sklearn固定分割方法,使得每次拿到的数据是一样的。

  • 针对上一个结果的复查,是否有其他问题?
    答:因为特征字段反复替换,删除+补回这样的操作在LIST中会出现位置变化,而建模fit或者cv都是针对特征处理,当训练好后特征位置都将固定,若在执行过程中将位置修改,模型再次验证时将产生偏差。
    可以使用numpy.array的方式,初期会觉得不习惯,但熟悉后发现矩阵方式获取数据和处理位置都是非常稳定,且代码表达力清晰。
    才相同设计结构,对LR(Logistic Regression)和LGB(LightGBM)分别进行特征筛选,图形结果上LR更平缓而LGB像齿轮一样波动,有很大的不确定性。因此对每轮的AUC、停止数量、重要性分数做相关性分析,发现停止数量对模型效果产生影响。前期为了追求效果,特意让树模型训练具有30个自动停止的优化功能,也许产生了反效果。

    LR模型丢弃特征—图形平滑

    LGB模型丢弃特征—图形陡曲

    Pearson + Spearman—停止数量和最终模型效果存在相关性

  • 从原来自动寻找最佳停止点变成固定停止点看效果?
    答:固定点不为永久,以每次循环开始initial时确定,每次丢弃一个特征的算法采用initial时的固定值,仅考虑丢弃特征对模型的效果差异。
    执行速度略快,从效果上看和动态停止点类似,依旧波动较大,存在上下起伏的情况。

类型 效果 速度
动态停止点 Test更平稳效果下降更缓慢 略久,多跑stop rounds
固定停止点 Test陡峭下降不稳定 略快,约节省10%时间
Dynamic vs Fixed, Dynamic更平稳
  • 从多变量使用阈值丢弃特征方案?
    答:

实验结果以及对自己的启示

  1. 树模型中的特征重要性feature importance对变量选择而言,并不适用。可能的原因是模型训练时起正向负向效果都是重要,我们期望的是把负向(干扰项)找到并丢弃,而0分的特征仅仅说明对模型没有正负效果而已。

  2. 停止点对模型产生影响,结合固定和动态从效果上看动态更稳定。不同特征组合放入模型后效果存在差异,因此采用动态搜索可以更好的证明当前特征的效果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容