我正在使用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)
如果使用连续的概率,则可以移动干燥阈值,以便偏爱一个类而不是另一个类。然后,您将使用estimator.predict_proba() < 0.3
或< 0.7
代替estimator.predict()
。
您可以使用RandomForest进行此操作,但是您可以通过梯度增强树的结果更好,从而直接产生连续的输出。
您可以使用ROC曲线图确定合适的阈值,以提供适合您应用程序的精确/召回曲线。