Sane逐步回归?


14

假设我要构建一个二进制分类器。我有数千个功能,而样本只有几十个。从领域知识来看,我有充分的理由相信仅使用一些功能就可以准确预测类标签,但是我不知道哪个功能可以正确预测。我还希望最终决策规则易于解释/解释,从而进一步需要少量功能。我功能的某些子集高度相关,因此,独立选择最具预测性的几个子集将行不通。我还希望能够对我的功能进行有意义的假设检验。

在这些条件下,以下逐步回归程序是否合理:

  1. 给定模型中已经存在的特征(或仅在第一次迭代中截取),选择添加到模型中时产生最大对数似然比的特征。使用似然比卡方检验为在此选择中执行的每个假设检验计算名义P值。这里的无效之处在于,将额外的变量添加到模型中不会提供任何额外的预测能力。另一种选择是,它确实提高了预测能力

  2. 将每个迭代的步骤1中测试的假设作为一个族来对待,并使用Benjamini-Hochberg之类的东西为最小P值(针对所选特征)计算错误发现率。

  3. 除非满足某些停止条件,否则转到1。

  4. 报告对个人特征的错误发现率,但不能用于模型作为一个整体的P值(因为这将是大规模膨胀)。给定先前添加到模型中的所有特征,这些多个测试校正的P值中的每一个均代表该特征的统计显着性。

在这种情况下这样做是否能成功避免所有典型的逐步回归批评?以这种方式计算的错误发现率是否合理?


3
是否有理由不采用惩罚性回归方法(套索,elasticnet等)?
本·博克

Answers:


11

我不建议您使用该过程。我的建议是:放弃此项目。只是放弃而走开。您对此工作没有希望。

但丁的地狱“放弃希望”的多尔插图 图片来源

撇开逐步选择(参见此处)的标准问题,由于在如此高维空间中的分离,您很有可能获得完美的预测。

我没有您情况的具体信息,但是您声明您“只有几十个样本”。让我们做一个慈善机构,说您有90个。进一步说,您有“数千个功能”。假设您“只有” 2,000。为了简单起见,假设您的所有功能都是二进制的。您“相信仅使用几个功能就可以准确预测类标签”,假设您将查找最多最多9个功能的集合。最后,让我们想象一下这种关系是确定性的,因此真正的关系将始终完美地存在于您的数据中。(我们可以更改这些数字和假设,但这只会使问题变得更糟。)现在,在这些(一般)条件下,您将如何恢复这种关系?也就是说,正确的集合是唯一能产生完美准确性的集合的频率如何?或者,换句话说,仅凭偶然一个机会也可以容纳几套九个功能?

一些(过度)简单的数学和模拟应该为这个问题提供一些线索。首先,使用9个变量(每个变量可以为0或1),观察值可以显示的模式数量为,但是您只有90个观察值。因此,对于给定的9个二元变量集,每个观察值完全有可能具有不同的预测值集-完全没有重复。如果没有具有相同预测值的重复项,其中某些变量的y = 0,而某些y = 1,则您将完全分离,并且可以对每个观察值进行完美的预测。 29=512

下面,我进行了一次模拟(用R编码),以查看没有0和1的x值模式的频率。它的工作方式是,我得到一组从1到512的数字,它们代表可能的模式,并查看前45个模式中的任何模式(可能是0)是否与后45个模式中的任何模式匹配(可能是1s)。这假定您具有完美平衡的响应数据,从而可以最好地防止此问题。请注意,具有一些重复的具有不同y值的x向量并不能真正使您脱颖而出,这仅意味着您将无法完美预测数据集中的每个观察值,这是我非常严格的标准在这里使用。

set.seed(7938)  # this makes the simulation exactly reproducible
my.fun = function(){
  x = sample.int(512, size=90, replace=TRUE)
  return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique)  # [1] 0.0181

模拟表明,在9个x变量的集合中大约有1.8%会出现此问题。现在,有多少套9套?严格来说,这将是(因为我们已经在您的集合中规定了真正的9个确定性因果变量)。但是,其中许多集合将重叠。在变量的指定分区内将有不重叠的9组(可能有许多这样的分区)。因此,在某些给定分区中,我们可能期望会有组9个x变量,这些变量将完美地预测数据集中的每个观察值。 1991 / 9 221 221 × 0.018 41991 choose 9=1.3×10241991/9221221×0.0184

请注意,这些结果仅适用于您具有相对较大的数据集(在“数十”之内),变量数量相对较小(在“千”之内)的情况,仅用于查找可以完美预测每个观察值的情况(会有很多更集,几乎完美的),等你的实际情况是不可能制定出“这口井”。此外,我们规定这种关系是完全确定的。如果关系中存在一些随机噪声,会发生什么?在那种情况下,您仍然会有〜4个(空)集合来完美地预测您的数据,但是正确的集合可能不在其中

Tl; dr,这里的基本要点是变量集太大/高维,并且数据量太小,以至于不可能。如果确实有“数十个”样本,“数千个”变量,并且绝对不知道哪个变量可能是正确的,那您将不希望通过任何过程得到任何帮助。花费时间去做其他事情。


1
现在,这是答案的原始介绍,我喜欢它。
卢卡斯梯度

1
放弃项目通常是一个合理的选择。虽然肯定是一小部分案件,但我已经不止一次地告知客户他们所考虑的项目将无法实施。
gung-恢复莫妮卡

1

为了我的回答,我将感兴趣的二进制变量表示为和预测变量并假设值为和。定义以指示模型也很方便,这样,如果第j个变量,则等于在第m个模型中,否则为。Yi ;(i=1,,n)Xij ;(j=1,,p)YY=0Y=1γmm ;(m=1,..,M)γmTXijXij0

我将对您的方法进行修改,并给出理由。您正在使用分类器模型,这意味着您要预测将来的分类变量的值-因此,您实际上应该定义一个预测规则(给定一组新的预测变量,您将如何预测或)。XjY=1Y=0

因此,我建议直接评估预测,而不是似然比。但是,预测的观测值不应包含在模型的估算中(因为这正是您实际使用模型时将要面对的情况)。因此,有一个新的步骤1)(粗体是我建议的更改)。 1)给定模型中已经存在的特征(或仅是第一次迭代中的截距),选择 添加到模型中时产生最佳预测 的特征

现在您需要决定

  1. 您希望“最佳”在数学上意味着什么
  2. 如何将数据分为“拟合”和“预测”部分

我将为每个建议:

  1. Y=1Y=0F=CC+IFCI
  2. 12,,n121,3,,n2nF=CnFm

Fm(m=1,,M)m=argmaxmMFm

sthMs=p+1XjXj

分步进行可能会有风险,因为您可能会发现“局部最大值”而不是“全局最大值”,尤其是因为您拥有大量的预测变量(这是一个很大的“空间”,需要对其进行优化,并且可能是多模式的-意味着有许多“最佳”型号)

100F

我认为您会发现,向非统计人员证明最终模型的选择容易得多,而不是试图解释为什么p值表明模型良好。

Y

最后两句话:

  1. 您还可以使用这种机制来确定逐步选择是否比向前选择(仅添加变量)或向后选择(从完整模型开始,仅删除变量)更好。
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWYλλ

谢谢你的建议。但是,这存在三个问题:1.我关心的是量化预测中的不确定性和每个变量的贡献,而不仅仅是二进制预测的准确性。2.鉴于我的数据集的性质,它的计算量太大了。3.从领域知识来看,我认为局部最优问题并不重要。
dsimcha 2011年

100nF

其实你是对的。此过程将是较大代码库的一部分,而我忘记了,其余部分代码无需在每次折刀迭代时都重新运行。不过,其他两点仍然适用。
dsimcha,2011年

FFFchosenF(j)变量对每个变量的预测准确度的影响)
概率

F
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.