【问题标题】:How can I speed up Recursive Feature Elimination on 6,100,000 Features?如何加快 6,100,000 个特征的递归特征消除?
【发布时间】:2019-07-15 22:27:04
【问题描述】:

我正在尝试从 sklearn 中的一组相当大的特征(~6,100,000)中获得特征排名。这是我到目前为止的代码:

train, test = train_test_split(rows, test_size=0.2, random_state=310)
train, val = train_test_split(train, test_size=0.25, random_state=310)
train_target = [i[-1] for i in train]

svc = SVC(verbose=5, random_state=310, kernel='linear')
svc.fit([i[1:-1] for i in train], train_target)

model=svc
rfe = RFE(model, verbose=5, step=1, n_features_to_select=1)
rfe.fit([i[1:-1] for i in train], train_target)
rank = rfe.ranking_

模型的每次训练大约需要 10 分钟。对于 6,100,000 个特征,这意味着 数十年 的计算时间。实际上115.9年。有没有更好的方法来做到这一点?我知道 rfe 需要最后一次消除的结果,但是有什么方法可以通过并行化或以不同的方式获得排名来加快速度?我可以使用数千个节点(感谢我工作的公司!)所以任何类型的并行都很棒!

我确实有线性 SVM 超平面的列表系数。订购这些很容易,但是正在为此完成的论文将由斯坦福数据科学教授进行审查,他强烈反对使用非排名算法进行排名......以及非斯坦福校友喜欢我。 :P

我可以选择更大的step,但这会消除对所有功能进行实际排名的能力。相反,我会对 100,000 或 10,000 个特征的组进行排名,这并不是很有帮助。

编辑:nSV 可能有用,所以我将其包含在下面:

obj = -163.983323, rho = -0.999801
nSV = 182, nBSV = 148
Total nSV = 182

【问题讨论】:

  • PCA 或随机投影怎么样?
  • @LukaszTracewski 如何使用 PCA 对特征进行排名?
  • 我会检查哪些功能贡献最大:stackoverflow.com/questions/40295888/…
  • 您可以使用 sklearn 的相关矩阵检查每个特征与输出的相关性。对其进行排序并选择最相关的N个特征?
  • @taga 我会考虑让它运行到完成,因为 30 分钟并不算多。或者,您可以在每次递归中删除多个功能。这将有助于将运行时间加快大约 n 倍(其中 n 是您在每次递归时删除的特征数)。

标签: machine-learning scikit-learn svm rfe


【解决方案1】:

您应该使用不同的算法。关于如何加快特征选择的研究已经很多。 RFE 的计算复杂性对于大量特征来说是令人望而却步的。您应该考虑对高维数据使用方法,例如 FBED (Forward-Backward-Early-Dropping)、OMP (Orthogonal-Matching-Pursuit)、SES (统计等效签名)、LASSO

FBhttps://arxiv.org/abs/1705.10770

OMPhttps://arxiv.org/abs/2004.00281

SES https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-018-2023-7

套索https://ieeexplore.ieee.org/document/7887916

【讨论】:

  • 感谢您的建议,但我们希望获得排名。在这方面有更好的算法的想法吗?
  • 如果您想获得最重要(即选定)特征的排名,那么您可以使用建议的算法来完成。但是,如果您想获得所有功能的排名,那么如何做到这一点并非易事。您必须更好地定义实验的期望输出。例如,您可以使用目标变量测试每个单个特征的无条件独立性,然后使用测试的显着性输出(统计量)对它们进行排名。但是,此方法不会测试与目标的条件依赖性。
猜你喜欢
  • 2020-04-05
  • 2018-05-21
  • 2018-05-23
  • 2020-10-27
  • 2020-03-24
  • 2019-01-26
  • 1970-01-01
  • 2018-10-28
  • 2018-05-21
相关资源
最近更新 更多