网格搜索后无显著改善

2024-06-06 22:57:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行一些算法,以便对有关公共汽车时刻表的数据集进行分类。具体来说,我运行一些随机林,我的源代码如下:

# Instantiate random forest
from sklearn.ensemble import RandomForestClassifier
random_forest = RandomForestClassifier()

# K-Fold Cross Validation (for grid search)
inner_cross_validator = StratifiedKFold(n_splits=k_fold, shuffle=True)


from sklearn.model_selection import GridSearchCV

# Define parameters for grid search
number_of_trees = {'n_estimators': [100, 300, 500]}
max_features_per_tree = {'max_features': [0.2, 0.5, 0.8]}
min_samples_split_per_node = {'min_samples_split': [0.2, 0.5, 0.8]}
parameters = {**number_of_trees, **max_features_per_tree, **min_samples_split_per_node}

# Execute grid search and retrieve the best classifier
best_random_forest = GridSearchCV(estimator=random_forest, param_grid=parameters, scoring='average_precision', cv=inner_cross_validator, n_jobs=3)
best_random_forest.fit(X_train, y_train)

然而,网格搜索后的查准率和查全率几乎没有提高。在

总的来说,在我过去使用其他数据集的经验中,我没有注意到在网格搜索之后,与SkLearn这样的库的默认值相比,在各种指标的得分上没有超过5%或很少有10%的改善。在

我能做些什么(在特征工程阶段之后)来显著提高我的分类模型的性能吗?在


Tags: 数据fromsearch分类randomminmaxgrid
1条回答
网友
1楼 · 发布于 2024-06-06 22:57:43

超参数调整增加5%-10%是一个显著的增加。你不应该期望从GridSearch得到比这更大的增长。在

除了功能工程(它有很大的性能提升空间),您可以尝试:

  1. 随机搜索:在定义的范围内搜索随机选择的超参数值。这应该是 http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html

  2. 使用不同的算法:您当前使用的是RandomForest。这是一种非常有效的方法,可以减少预测的方差并稍微提高性能。但是,其他的方法,比如梯度增强,应该能给你更好的性能。

  3. 不同算法的组合:这是一个非常广泛的主题,涵盖了许多不同的方法来组合模型以提高性能。https://www.analyticsvidhya.com/blog/2018/06/comprehensive-guide-for-ensemble-models/

相关问题 更多 >