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

问题描述 投票:0回答:3

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

python statistics svm logistic-regression fraud-prevention
3个回答
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)

大多数情况下,默认值效果很好,因此,如果您更改了参数,请尝试使用默认值。 如果您已经使用默认参数但结果仍然不佳,那么您可能需要根据数据集更改参数值。为此,您需要知道所有这些参数的含义。 如果您不知道,请点击此链接


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 则为“欺诈”)。


0
投票

使用“过采样/欠采样”。通过增加误报,学习者将远离它们。您可以对假阴性执行相同的操作。或者,通过消除误报/漏报来训练学习者。

顺便说一句,使用非线性分类器,例如 C5.0(包括 boosting),以避免线性分类器的缺点。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.