首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SciKit中调整机器学习算法优化召回

在SciKit中调整机器学习算法优化召回
EN

Data Science用户
提问于 2022-10-11 06:13:01
回答 3查看 203关注 0票数 0

给我一个数据集来检测欺诈行为。类似的东西:https://www.kaggle.com/code/imgremlin/4th-place-in-fraud-detection-from-zindi

SciKit机器学习算法的问题在于它优化了算法的准确性,但我希望降低它的准确性,并对召回进行优化,以便更准确地检测欺诈行为。

数据集的问题是,"0“的非欺诈案例比欺诈案例"1”多得多。~ 10至1

我是否可以调整SciKit算法,使其优化以便于召回?

EN

回答 3

Data Science用户

发布于 2022-10-11 11:31:24

仅仅追求召回并不是一个明确的决策规则:只要把所有的事情分类为1,你就会得到100%的召回。实际上,任何阈值敏感的东西都不是很好的优化目标,假设你指的是类似网格搜索的例程。

如果您必须使用recall,计算sklearn.metrics.precision_recall_curve()并找到一个具有足够好的回忆能力和相当精确性的点,并使用相应的阈值来比较您的predict_proba()结果。很可能,你的模型已经很好了,你只是需要更好的决策。

票数 2
EN

Data Science用户

发布于 2022-10-11 06:33:10

当你在课堂上有极端的不平衡时,总是很艰难的。如果您能够这样做,考虑过抽样少数类或过低抽样的优势阶层,以创造更好的平衡。

但除此之外,您还可以使用网格搜索优化模型,并将其作为“召回”度量的目标。

代码语言:javascript
复制
sklearn.grid_search.GridSearchCV(clf, param_grid, scoring="recall")

你可以在这里读一读

票数 1
EN

Data Science用户

发布于 2022-10-11 07:02:21

对于这种情况,您可以使用平衡精度度量。它被定义为每个类获得的平均召回率。

代码语言:javascript
复制
from sklearn.metrics import balanced_accuracy_score
y_true = [0, 1, 0, 0, 1, 0]
y_pred = [0, 1, 0, 0, 0, 1]
balanced_accuracy_score(y_true, y_pred)
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/115093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档