我正在为我的任务使用RandomForestClassifier。拟合数据(数据已平衡),进行了交叉验证。当然在预测中会出现一些错误,但这是可以接受的。我的任务是二进制的,但由于第一类的样品定义不正确,因此其定义比第二类更为重要。是否有任何方法可以将假想决策边界移至第二类,从而通过牺牲第二类的准确性来最大程度地减少第一类的误差?
ml_model = RandomForestClassifier(random_state=17, n_jobs=-1, class_weight='balanced')
ml_params = {'max_depth': range(5, 16), 'max_features': range(4, 15)}
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=17)
ml_grid = GridSearchCV(ml_model, ml_params, cv=skf, n_jobs=-1, scoring='roc_auc')
ml_grid.fit(x_train, y_train)
...
ml_grid.best_estimator_.predict(some_sample)
答案 0 :(得分:0)
如果使用连续概率,则可以更改决策阈值,以偏向一个类别。然后,您将使用estimator.predict_proba() < 0.3
或< 0.7
而不是estimator.predict()
。
您可以使用RandomForest来做到这一点,但使用梯度增强树(直接提供连续输出)可能会获得更好的结果。
您可以使用ROC曲线图来确定合适的阈值,以给出适合您的应用的精度/召回曲线。