私は私が私を取得するために、次のコードを使用してバイナリ分類問題を持ってweighted avarege precision
、weighted avarege recall
、weighted avarege f-measure
とroc_auc
。
df = pd.read_csv(input_path+input_file)
X = df[features]
y = df[["gold_standard"]]
clf = RandomForestClassifier(random_state = 42, class_weight="balanced")
k_fold = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)
scores = cross_validate(clf, X, y, cv=k_fold, scoring = ('accuracy', 'precision_weighted', 'recall_weighted', 'f1_weighted', 'roc_auc'))
print("accuracy")
print(np.mean(scores['test_accuracy'].tolist()))
print("precision_weighted")
print(np.mean(scores['test_precision_weighted'].tolist()))
print("recall_weighted")
print(np.mean(scores['test_recall_weighted'].tolist()))
print("f1_weighted")
print(np.mean(scores['test_f1_weighted'].tolist()))
print("roc_auc")
print(np.mean(scores['test_roc_auc'].tolist()))
私は2つの異なる機能の設定と同じデータセットのために、以下の結果を得ました。
Feature setting 1 ('accuracy', 'precision_weighted', 'recall_weighted', 'f1_weighted', 'roc_auc'):
0.6920, 0.6888, 0.6920, 0.6752, 0.7120
Feature setting 2 ('accuracy', 'precision_weighted', 'recall_weighted', 'f1_weighted', 'roc_auc'):
0.6806 0.6754 0.6806 0.6643 0.7233
だから、私たちがいることを見ることができるfeature setting 1
私たちは「精度」の良い結果を得る、「precision_weighted」、「recall_weighted」、に比べて「f1_weighted」feature setting 2
。
それはroc_auc "に来るときしかし、feature setting 2
より良いですfeature setting 1
。私は他のすべてのメトリックが良いとしたbecuaseこの奇妙ましたfeature setting 1
。
一方で、私は私が使用していますので、この問題が発生したと思われるweighted
のスコアをprecision, recall and f-measure
していないとroc_auc
。それが行うことが可能ですweighted roc_auc
sklearnでバイナリ分類のために?
この奇妙なroc_auc結果のための本当の問題は何ですか?
私は、必要に応じてより詳細な情報を提供して幸せです。
AUCを持つすべてのこれらの他の指標を比較すると、オレンジにリンゴを比較するようなものであるので、それは、奇妙ではありません。
ここでは、全体のプロセスの高レベルの説明は次のとおりです。
- (ここではRFのような)確率的分類は、確率出力を生成
p
して[0, 1]
。 - (ハードクラスの予測を得るために
0/1
)、我々が適用されますしきい値これらの確率にします。(ここでのように)明示的に設定されていない場合は、このしきい値は、暗黙的にすなわちあれば、0.5であると解釈されp>0.5
、その後class=1
、他の、class=0
。 - 正確さ、精度、リコール、およびF1-スコアのようなメトリックは、ハードクラスの予測に対して計算されている
0/1
、すなわち、後にしきい値が適用されています。 - 対照的に、AUC測定バイナリ分類器の性能はにわたって平均すべての可能なしきい値の範囲を特定の閾値のためではない、と。
だから、それは確かに起こることができ、そしてそれは確かに新しい実務家の間で混乱を招くことができます。
で私の答えの第二部、この同様の問題は、より多くの詳細については役に立つかもしれません。引用:
少なくとも私の経験によると、ほとんどのMLの専門家は、それが何からのAUCスコア対策の何か別のことを考えて、実際に一般的な(そして不幸な)使用されてもよい、ちょうど、-高-より良いメトリック、他の精度などのようなものです:ありませんが、自然に自分自身を表現するようなパズルにつながります。