Scikit 学习模型赋予随机变量权重?我应该删除不太重要的功能吗?
Posted
技术标签:
【中文标题】Scikit 学习模型赋予随机变量权重?我应该删除不太重要的功能吗?【英文标题】:Scikit learn models gives weight to random variable? Should I remove features with less importance? 【发布时间】:2020-10-16 01:00:30 【问题描述】:我通过删除相关变量和向后消除来进行一些特征选择。然而,作为测试完成后,我输入了一个随机变量,然后训练了逻辑回归、随机森林和 XGBoost。所有 3 个模型的随机特征的特征重要性都大于 0。首先,这怎么可能?其次,所有型号都将其排在最后,但它不是最低的功能。这是另一轮特征选择的有效步骤吗?删除所有得分低于随机特征的人?
随机特征是用
创建的model_data['rand_feat'] = random.randint(100, size=(model_data.shape[0]))
【问题讨论】:
【参考方案1】:这可能会发生,您采样的随机数是多少,但是这种随机采样仍然可以偶然生成一个模式。我不知道您是在进行分类还是回归,但让我们考虑二进制分类的简单示例。我们有 1 类和 0 类以及 1000 个数据点。当您为每个数据点采样一个随机数时,可能会发生例如大多数 1 类获得高于 50 的值,而大多数 0 类获得小于 50 的随机数。
所以最终,这可能会导致某种模式。所以我猜每次你运行你的代码时,随机特征重要性都会发生变化。它总是排名靠后,因为不太可能生成好的模式(例如,所有 1 都高于 50,而所有 0 都低于 50)。
最后,是的,您应该考虑删除低价值的功能
【讨论】:
【参考方案2】:我同意 berkay 的回答,即随机变量可能具有与您的结果变量偶然相关的模式。其次,我既不会在模型构建中包含随机变量,也不会作为我的过滤阈值,因为如果随机变量偶然与结果具有显着或几乎显着的关联,它将抑制原始数据的重要特征的表达,您最终可能会失去那些重要的特征功能。
【讨论】:
【参考方案3】:在模型开发的早期阶段,我总是包含两个随机变量。
对我来说,这就像一个“健全性检查”,因为这些实际上是垃圾变量或垃圾特征。
如果我的任何功能比垃圾功能更重要,那么这是一个警告信号,我需要更仔细地查看这些功能的价值*,或者做一些更好的功能工程。
例如,关于包含这些特征的理论建议是什么?【讨论】:
以上是关于Scikit 学习模型赋予随机变量权重?我应该删除不太重要的功能吗?的主要内容,如果未能解决你的问题,请参考以下文章
[机器学习与scikit-learn-36]:算法-分类-一元离散随机变量=>样本空间=>古典概率模型(事件自然数等概率均匀分布)