[论文解读] BeSS: An R Package for Best Subset Selection in Linear, Logistic and CoxPH Models
本论文介绍了 BeSS,一个用于线性、逻辑斯蒂和Cox比例风险模型中最佳子集选择的R包,采用原始-对偶活动集算法。该包利用高效的C++/Rcpp集成,并支持序列搜索与黄金分割搜索策略,可在单台机器上于数秒内对高达10,000个预测变量的高维数据实现快速且稳定的变量选择。
We introduce a new R package, BeSS, for solving the best subset selection problem in linear, logistic and Cox's proportional hazard (CoxPH) models. It utilizes a highly efficient active set algorithm based on primal and dual variables, and supports sequential and golden search strategies for best subset selection. We provide a C++ implementation of the algorithm using Rcpp interface. We demonstrate through numerical experiments based on enormous simulation and real datasets that the new BeSS package has competitive performance compared to other R packages for best subset selection purpose.
研究动机与目标
- 解决在预测变量数量p较大时,穷举式最佳子集选择在计算上的不可行性。
- 为线性、广义线性及Cox比例风险模型开发一种计算高效且稳定的最佳子集选择算法。
- 实现一种原始-对偶活动集方法,以高效处理子集选择问题中的非凸L0约束。
- 提供一个用户友好的R包,其核心算法通过C++加速,并支持AIC、BIC和EBIC等模型选择准则。
- 通过模拟数据和真实世界数据集展示该包的性能,证明其在n为数千、p为数万时仍具备良好的可扩展性。
提出的方法
- 该方法采用原始-对偶活动集(PDAS)算法,通过互补的原始变量与对偶变量迭代更新预测变量的活动集。
- 该算法可推广至具有L0范数约束的凸损失函数,从而适用于线性、逻辑斯蒂和CoxPH模型。
- 支持两种搜索策略:对k(子集大小)的序列搜索,以及用于确定最优k的黄金分割搜索。
- 核心算法通过Rcpp在C++中实现,以实现高性能计算,并对稀疏矩阵运算进行了内存优化。
- 使用模型选择准则(AIC、BIC、EBIC)从每个k对应的最优子集序列中识别最优模型。
- 通过活动集更新和基于对偶性的收敛性检测,避免了穷举搜索,显著减少了计算时间。
实验结果
研究问题
- RQ1原始-对偶活动集算法是否能在线性、逻辑斯蒂和CoxPH模型中实现与现有方法相当的计算效率和准确性?
- RQ2在高维数据上,BeSS与现有R包(如leaps、bestglm和glmuti)相比,在速度和稳定性方面表现如何?
- RQ3序列搜索与黄金分割搜索策略在最小化计算开销的前提下,能否有效识别出最优模型大小k?
- RQ4BeSS中通过C++加速的实现是否能在p > 10,000个预测变量且n为数千规模的数据集上保持数值稳定性并实现可扩展性?
- RQ5当与BeSS算法结合使用时,信息准则(AIC、BIC、EBIC)在模型选择中的表现如何?
主要发现
- 与其它R包相比,BeSS表现出具有竞争力的性能,可在单台个人计算机上仅用数秒时间解决n为数千、p为数万的最优子集问题。
- 该包成功利用EBIC准则在trim32数据集上识别出最优模型,选择了一个包含2个预测变量的模型,其EBIC值为-561.2689。
- 对于trim32数据集,AIC准则选出的最佳模型包含25个预测变量,AIC值为-890.9282,表明模型具有良好的拟合度与复杂度之间的权衡。
- 原始-对偶活动集算法收敛稳定且高效,使得原本NP难的最优子集问题变得可解,而穷举法则无法处理。
- 通过Rcpp实现的C++代码显著提升了计算速度,使高维数据下的最优子集选择成为实际可行的方案。
- BeSS生成的解路径图与损失函数图提供了清晰的可视化指导,其中垂直线表示由EBIC准则选定的最优k值。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。