01
—
特征选择算法
特征选择算法可以被视为搜索技术和评价指标的结合。前者提供候选的新特征子集,后者为不同的特征子集打分。最简单的算法是测试每个特征子集,找到究竟哪个子集的错误率最低。这种算法需要穷举搜索空间,难以算完所有的特征集,只能涵盖很少一部分特征子集。选择何种评价指标很大程度上影响了算法。而且,通过选择不同的评价指标,可以把特征选择算法分为三类:包装类、过滤类和嵌入类方法。
—
Powershap介绍
本文所介绍的Powershap是一种新的包装器特征选择方法,该方法利用统计假设测试,结合Shapley值进行快速直观的特征选择。Powershap的基本假设是:与随机特征相比,信息特征将对预测结果产生更大的影响。基准测试和仿真表明,Powershap优于其它过滤类的方法,预测性能与包装器方法相当,但速度明显更快,通常甚至达到执行时间的一半或三分之一。
Shapley值是一种博弈论解决方案概念,它要求将利润和成本公平地分享给联盟中的众多代理人。当两个或更多参与者或组件参与策略以获得期望的结果或支出时,这被称为博弈论。Shapley值最适用于每个参与者的贡献不均,但每个人共同努力实现收益或支出的情况。Shapley值可确保每个参与者获得的收益与单独操作时相同或更多。获得的价值至关重要,因为参与者没有动机进行其他交互。
下面是Powershap的算法伪代码:
03
—
使用示例
Powershap提供的构建非常直观,它支持各种模型,包括用于分类和回归任务的线性、基于树甚至深度学习模型。作为一个即插即用的开源sklearn组件,Powershap可以轻松地与传统的数据科学管道进行整合。通过提供自动模式,自动调整powershap算法的超参数,允许使用该算法而不需要任何配置,从而进一步增强了用户体验。下面以catboost分类模型作为使用示例:
from powershap import PowerShap
from catboost import CatBoostClassifier
X, y = ... # your classification dataset
selector = PowerShap(
model=CatBoostClassifier(n_estimators=250, verbose=0, use_best_model=True)
)
selector.fit(X, y) # Fit the PowerShap feature selector
selector.transform(X) # Reduce the dataset to the selected features
from powershap import PowerShap
from catboost import LinearRegression
X, y = ... # your classification dataset
selector = PowerShap(
model=LinearRegression(n_estimators=250, verbose=0, use_best_model=True)
)
selector.fit(X, y) # Fit the PowerShap feature selector
selector.transform(X) # Reduce the dataset to the selected features
04
结果展示
结束语
以上就是高效便捷的特征筛选工具——Powershap的所有内容了。通过包装特征方法的Shapley值和统计检验用于确定特征的相关性,实验结果是显著的。为了实现快速、强大和可靠的特征选择,Powershap执行高效计算以在自动模式下优化所需的迭代次数。最后,感兴趣的小侠客可以点击文末左下角“阅读原文”进入Powershap官方项目深度学习,查看更多test experiments的算法细节。今天的内容到此结束,我们下次再见咯~