黑产监控中,需要尽可能做到尽可能少的误伤和尽可能准确地探测,可以选择“在FPR较低时的TPR加权平均值”作为平均指标。

根据混淆矩阵计算TPR(覆盖率)和FPR(打扰率):

覆盖率:TPR = TP /(TP + FN)

打扰率:FPR = FP /(FP + TN)

TP、FN、FP、TN分别为真正例、假反例、假正例、真反例

通过设定不同的阈值,会有一系列TPR和FPR,就可以绘制出ROC曲线:

分段覆盖率TPR-LMLPHP

这里的评分指标,首先计算3个覆盖率TPR:

TPR1:FPR=0.001时的TPR

TPR2:FPR=0.005时的TPR

TPR3:FPR=0.01  时的TPR

最终成绩= 0.4 * TPR1 + 0.3 * TPR2 + 0.3 * TPR3

def tpr_weight_funtion(y_true,y_predict):
  """
  y_true:真实的类别
  y_predict:预测的类别
  """
d = pd.DataFrame()
d['prob'] = list(y_predict)
d['y'] = list(y_true)
d = d.sort_values(['prob'], ascending=[0])
y = d.y
PosAll = pd.Series(y).value_counts()[1]
NegAll = pd.Series(y).value_counts()[0]
pCumsum = d['y'].cumsum()
nCumsum = np.arange(len(y)) - pCumsum + 1
pCumsumPer = pCumsum / PosAll
nCumsumPer = nCumsum / NegAll
TR1 = pCumsumPer[abs(nCumsumPer-0.001).idxmin()]
TR2 = pCumsumPer[abs(nCumsumPer-0.005).idxmin()]
TR3 = pCumsumPer[abs(nCumsumPer-0.01).idxmin()]
return 0.4 * TR1 + 0.3 * TR2 + 0.3 * TR3
05-08 15:50