基于Grid Search与cuML的SVR超参数调优异常问题咨询
cuML SVR网格搜索始终选择第一个核函数的问题
我用以下代码结合Grid Search和cuML对SVM回归器(SVR)做超参数调优,但每次网格搜索都会选中参数列表里的第一个核函数。我试过调整交叉验证折数(3、默认5、7)、添加/移除自定义评分函数、修改惩罚系数C的取值,都没解决这个问题。想问有没有人遇到过类似情况?参数列表里核函数的顺序会不会影响网格搜索的结果?
注:我用cuML借助GPU加速搜索,需要数据集可以提供。
from cuml.svm import SVR from sklearn.model_selection import GridSearchCV #from sklearn.svm import SVR from sklearn.metrics import make_scorer, mean_squared_error from pprint import pprint # Hyper-tunning for SVM regressor import numpy as np base_svr = SVR() # If you want to use your custom score function, specify the function and use it. def my_rmse_loss_func(y_true, y_pred): return np.sqrt(mean_squared_error((y_true, y_pred))) scorer = make_scorer(mean_squared_error, greater_is_better=False)#,, squared = False param_grid_svr = {'C': [0.0001, 0.01, 0.1, 0.9,1, 1.1, 2,3], # I used 10, 100 'gamma': ['scale', 'auto'], 'kernel': ['rbf', 'poly', 'sigmoid', 'precomputed','linear'], #, 'epsilon': [0.01, 0.1, 0.2 ,0.22, 0.3, 1]} # Create a GridSearchCV object and fit it to the training data with 7 cv svr_cv = GridSearchCV(base_svr,param_grid_svr, n_jobs = -1 , # Use 4 scoring='neg_mean_squared_error', cv = 7 ,verbose=3 ,return_train_score =True ) # ,refit=True mean_squared_error, scoring='neg_mean_squared_error' , # Train the model in GPU svr_cv.fit(X_train,y_train) # Predictions ## By using the re-trained model predictions_RF_regr_tuned= svr_cu.predict(X_test)
可能的原因及解决方向
precomputed核的无效性:参数列表里的precomputed核要求输入必须是核矩阵而非原始特征矩阵,如果你的数据是原始特征,这个核的训练会直接失败。GridSearchCV可能会跳过无效组合,但如果日志未提示错误,可能导致仅在有效核中选择第一个。建议先移除precomputed再测试。- 核函数性能无差异:如果所有核函数的交叉验证分数几乎一致,GridSearchCV会默认选择参数列表中第一个出现的最优组合。可以打印
svr_cv.cv_results_查看各组合的测试分数,确认是否存在这种情况。 - cuML与sklearn的兼容性细节:虽然cuML对齐sklearn API,但底层实现可能存在差异。可以单独用每个核训练SVR,手动计算交叉验证分数,对比GridSearchCV的结果是否一致。
- 并行训练冲突:开启
n_jobs=-1并行训练时,GPU加速可能存在资源竞争或逻辑冲突,尝试将n_jobs设为1关闭并行,再运行验证结果。
验证步骤
- 打印
svr_cv.best_params_和svr_cv.best_score_,同时输出svr_cv.cv_results_['mean_test_score']及对应参数,查看不同核的分数分布; - 移除
precomputed核,重新运行GridSearchCV; - 单独训练每个核的SVR,手动计算交叉验证分数,验证GridSearchCV的评估是否准确。
内容的提问来源于stack exchange,提问作者MarMarhoun
相关产品推荐
相关产品推荐

