寻找降低机器学习分类误报率的想法

时间:2020-12-20 15:11:56

标签: python statistics svm logistic-regression fraud-prevention

有没有办法降低经典欺诈预测问题中的误报率。目前我正在研究经典的欺诈检测。有50000个样本有真实标签(结果有待调查)。这些训练标签相当平衡。我选择的 Logisitic 回归模型表现良好,f1 得分超过 90%。现在当使用模型预测新案例时,结果是 50/50(欺诈和非欺诈)。有没有办法调整模型,允许通过非欺诈案例并惩罚误报率,以便我们检测到较少数量的欺诈案例(可能少于 100 万中的 200 个),但它们很可能是欺诈。希望一切顺利。

2 个答案:

答案 0 :(得分:0)

这是逻辑回归模型采用的所有参数。

sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

大多数默认的都很好用,所以如果你改变了参数,那么尝试使用默认的。 如果您已经在使用默认参数但结果仍然很差,那么您可能需要根据您的数据集更改参数值。为此,您需要知道所有这些参数的含义。 如果您不知道,请按照 This link

答案 1 :(得分:0)

因此,您希望更频繁地将模型偏向于预测“非欺诈”。取决于您使用的型号。如果您希望可以自由设置逻辑回归模型输出的阈值,该阈值仅允许输出实际接近 1 的实例被归类为“欺诈”。例如,这可以在 sklearn 中通过使用 predict_log_proba(X) 或 predict_proba(X)(对数概率或概率)访问模型的输出概率来完成。 (来源:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression

如果您的模型应该为“欺诈”输出 1,则您可以使用 if(如果输出 > 0.8 则为“欺诈”)来阈值输出。