如何解决svm需要长时间进行超参数调整
我正在credit card dataset上运行SVM,Logistic回归和随机森林。我的训练数据集的形状为(454491,30)。我将“得分”设置为“ f1_weighted”进行了5次交叉验证(耗时一个多小时),并得到以下结果:
Logistic Regression Cross Validation F1 score: 0.9501631748525725
Random Forest Cross Validation F1 score: 0.9999383944188953
Support Vector Cross Validation F1 score: 0.9989703035983751
我选择SVM是因为Random Forest容易过度拟合,并且SVM的得分优于Logistic回归。
我想通过超参数调整来添加正则化。我最初使用GridSearchCV,但是花费了很长时间,所以我将其更改为RandomizedSearchCV,但是即使这样也花费了很长时间(大约4-5个小时以上)。根据数据描述,功能已按比例缩放,并且已执行PCA以保留私有信息。我还对“金额”和“时间”列使用了RobustScaler(),因为它们没有缩放。
tuned_parameters={"kernel":['rbf','sigmoid'],'gamma':[1e-2,1e-3,1e-4,1e-5],'C':[0.001,0.10,0.0001,0.00001]}
tuned_SVM=RandomizedSearchCV(SVC(),tuned_parameters,cv=3,scoring='f1_weighted',random_state=12,verbose=15,n_jobs=-1)
关于如何进行的任何建议?
解决方法
第一;随机森林的想法是减少过度拟合。正确的是,在“决策树”上(经常)非常过拟合-这就是为什么我们创建此集合以减少方差,但仍保持偏低的原因。请注意,随机森林(过度拟合)的方差可能会因您的参数而有很大差异,例如,如果您设置max_features=n_features
,其中n_features
是要素数量,则将创建多个相同的决策树,确实会导致过度拟合。
我的意思是,随机森林可以是一个强大的工具,而决策树(emulation tree)可以过度拟合,而随机森林(emedited forest)(应该)不能。
第二;如果我没记错的话,SVM的训练时间为O(n ^ 2),其中n
是训练点数,即,当拥有大量训练数据时,可能需要很长时间才能拟合,因此进行网格搜索参数可能需要很长时间(!)。
第三;关于正则化。如果您使用内核的val分数为0.99(假设它是“ rbf”),由于SVM的训练时间,我将仅使用“ rbf”内核并调整C
参数。而且,0.998还不够好吗?
可以使用“成本复杂度修剪”对决策树进行正则化,其中,您只需进行逻辑回归就可以对复杂度(树的深度)的评分功能进行惩罚。我认为随机森林(sklearn)没有这种选择。
他们的决策树具有,因此您可以据此建立自己的随机森林,但是由于您在随机森林中拥有max_depth
参数,因此我认为这不值得。
当Random Forest(根据您的结果)表现更好且训练速度更快时,为什么要使用SVM?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。