我目前正在使用一个数据集进行回归建模,该数据集的特征数(p)高于观测数(n)。通常是p = 10000
和n = 30
。此外,我想test many models并找到最好的一个。
我现在要做的是首先消除这些特性。使用step_select_mrmr()或step_select_vip()将其从10 K减少到20-30。我通过将其放置在管道顶部来实现这一点。然后我将继续测试许多模型。
这种做法是否合理?
我目前正在使用一个数据集进行回归建模,该数据集的特征数(p)高于观测数(n)。通常是p = 10000
和n = 30
。此外,我想test many models并找到最好的一个。
我现在要做的是首先消除这些特性。使用step_select_mrmr()或step_select_vip()将其从10 K减少到20-30。我通过将其放置在管道顶部来实现这一点。然后我将继续测试许多模型。
这种做法是否合理?
2条答案
按热度按时间cpjpxq1n1#
只要您正在使用重新验证或验证集来确保没有信息泄漏,这是合理的。
我们希望今年晚些时候有更多的监督过滤器的配方功能,但史蒂文的很棒。
dz6r00yl2#
我不相信有一个通用的答案来回答你的问题,在这样一个极端的情况下,减少维度的数量的合适方法。合适或合理的解决方案完全取决于数据的含义。没有通用的答案适用于所有类型的数据。
在进一步讨论之前,我必须指出,只有30行左右,你不能有意义地进行机器学习-你会用你尝试的任何技术大量过度拟合数据。只有这么少的行,你几乎只能用线性或逻辑回归。即使这样,你也必须减少10行,我的经验法则是50行以下的线性或逻辑回归; 50到2,000行的一般加法模型(GAM);然后是几乎所有的机器学习技术。
但是让我假设你有足够的行和列来进行有效的分析。为了简化事情,我们可以考虑两个非常不同的场景,都有10,000列,正如你所指出的那样,这是你的数据的典型情况。
首先,可能许多列彼此相关,因此存在大量冗余。我认为对于相关列,降维的适当解决方案是主成分分析(PCA)或类似的方法。因此,您可以将10,000列减少到仅几列,以捕获和汇总10个列中的基本信息,000列而不扔掉大部分信息。我想说,这一般是最好的方法。
第二,您可能遇到绝大多数列完全不相关的情况;只有几个是相关的--您的基本任务是寻找那几个相关的列。在这种情况下,我建议不要使用基于功能重要性排名的功能选择标准,如
step_select_mrmr
或step_select_vip
。相反,我推荐的标准取决于特征重要性的绝对值,因为您可能有5个相关特征,也可能有100个相关特征,并且您希望识别并保留所有这些特征。