本文介绍了使用GridSearchCV和随机搜索策略对SVM进行超参数优化的方法,并以AUC指标为目标,通过设置训练集和验证集AUC阈值和差值,筛选出最佳参数模型。该方法旨在找到既能很好地拟合训练数据又能有效泛化到验证数据的模型参数。

以下是一个简单的Python代码示例,可以使用GridSearchCV进行SVM的超参数调优。其中,使用scikit-learn库中的train_test_split函数将数据集随机划分为训练集和验证集。在调参过程中,使用交叉验证来评估模型的表现,并使用GridSearchCV函数找到最佳的SVM超参数组合。最后,输出最佳的参数模型。

from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.svm import SVC
from sklearn.metrics import roc_auc_score

# 假设数据已经准备好了,X是特征矩阵,y是标签向量

# 将数据集随机划分为训练集和验证集
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)

# 定义SVM模型
svm = SVC()

# 定义超参数空间
param_grid = {'C': [0.1, 1, 10, 100],
              'kernel': ['linear', 'rbf', 'poly', 'sigmoid'],
              'gamma': ['scale', 'auto']}

# 构建GridSearchCV对象
grid_search = GridSearchCV(svm, param_grid, cv=5, scoring='roc_auc')

# 开始调参
best_score = 0
while best_score < 0.75 or abs(best_train_score - best_val_score) > 0.1:
    # 在训练集上拟合模型
grid_search.fit(X_train, y_train)

    # 获取最佳模型
best_model = grid_search.best_estimator_

    # 获取最佳模型在训练集和验证集上的预测AUC
y_train_pred = best_model.predict_proba(X_train)[:, 1]
y_val_pred = best_model.predict_proba(X_val)[:, 1]
best_train_score = roc_auc_score(y_train, y_train_pred)
best_val_score = roc_auc_score(y_val, y_val_pred)

    # 输出当前模型的评分情况
    print(f'Train AUC: {best_train_score:.3f} | Val AUC: {best_val_score:.3f} | Best Params: {grid_search.best_params_}')

    # 如果当前模型的表现比之前的最佳模型更好,则更新最佳模型
    if best_val_score > best_score:
        best_score = best_val_score
        best_model = best_model
    else:
        break

# 输出最佳模型的超参数
print(f'Best Params: {best_model.get_params()}')

# 输出最佳模型在测试集上的AUC
y_test_pred = best_model.predict_proba(X_test)[:, 1]
test_score = roc_auc_score(y_test, y_test_pred)
print(f'Test AUC: {test_score:.3f}')

该代码示例展示了如何通过GridSearchCV和随机搜索策略,并结合训练集和验证集的AUC指标,找到最佳的SVM超参数组合。该方法可以帮助你提升模型的泛化能力,并找到最适合你的数据的SVM模型。

需要注意的是,代码中的best_scorebest_train_scorebest_val_score都是针对验证集的AUC指标,并非针对训练集的AUC指标。代码中使用验证集的AUC指标作为评价指标,是为了避免过拟合,并找到在验证集上表现最佳的模型参数。

希望本文能够帮助你更好地理解SVM超参数优化方法,并将其应用到实际项目中。

SVM超参数优化:基于训练集和验证集AUC的随机搜索调参

原文地址: https://www.cveoy.top/t/topic/oJYo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录