在经典的欺诈预测问题中,有没有办法降低误报率?目前,我正在研究经典的欺诈检测。有50000个样本有真实的标签(结果是由于调查)。这些训练标签是相当平衡的。我选择的Logisitic回归模型表现良好,f1得分超过90 %。现在,当使用该模型预测新病例时,结果是50/50(欺诈和非欺诈)。有没有办法调整模型,让我们通过非欺诈案件并惩罚假阳性率,以便我们检测到较少的欺诈案件(可能少于一百万起中的200起),但它们极有可能是欺诈。希望这一切都清楚了。
发布于 2020-12-20 23:40:58
以下是logistic回归模型采用的所有参数。
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
发布于 2020-12-22 23:58:08
因此,您希望将模型偏向于更频繁地预测“不欺诈”。取决于您正在使用的模型。如果你愿意,你可以自由地在逻辑回归模型的输出上设置一个阈值,只允许输出实际上更接近1的实例被归类为“欺诈”。这可以通过使用predict_log_proba(X)或predict_proba(X) (对数概率或概率)访问模型的输出概率来完成。(来源:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression)
如果你的模型应该为‘欺诈’输出1,你可以使用一个If (如果输出> 0.8,那么‘欺诈’)来设置输出阈值。
https://stackoverflow.com/questions/65381378
复制相似问题