モデルをトレーニングし、それをデプロイしたい「しきい値」を特定しましたが、しきい値がスコアにどのように関係しているかを理解するのに苦労しています。
X = labeled_data[features].reset_index(drop=True)
Y = np.array(labeled_data['fraud'].reset_index(drop=True))
# (train/test etc.. settle on an acceptable model)
grad_des = SGDClassifier(alpha=alpha_optimum, l1_ratio=l1_optimum, loss='log')
grad_des.fit(X, Y)
score_Y = grad_des.predict_proba(X)
precision, recall, thresholds = precision_recall_curve(Y, score_Y[:,1])
では、適合率と再現率としきい値をプロットして、しきい値を 0.4 にすることにします。
閾値とは?
私のモデル係数は、計算による「スコアリング」イベントであると理解していますがcoefficients['x']*event_values['x']
、合計は 29 です。しきい値は 0 から 1 の間です。
しきい値から何への変換をどのように理解すればよいでしょうか。生のスコアだと思いますか? 1
すべての機能 (すべてがバイナリ) を持つイベントは、すべての係数の合計であるため、29 の計算スコアを持ちますか?
すべてのイベントについてこの「生の」スコア メトリックを計算し、それをしきい値ではなく精度に対してプロットする必要がありますか?
編集および更新:
したがって、私の質問は、ミハイル・コロボフが以下で指摘したように、ロジスティック関数についての理解の欠如にかかっていました. 「生のスコア」に関係なく、ロジスティック関数は [0, 1] の範囲の値を強制します。
その値を探していた「生のスコア」に「アンラップ」するためにscipy.special.logit(0.8) - grad_des.intercept_
、行の「スコア」を返すことができます。