给我一个数据集来检测欺诈行为。类似的东西:https://www.kaggle.com/code/imgremlin/4th-place-in-fraud-detection-from-zindi
SciKit机器学习算法的问题在于它优化了算法的准确性,但我希望降低它的准确性,并对召回进行优化,以便更准确地检测欺诈行为。
数据集的问题是,"0“的非欺诈案例比欺诈案例"1”多得多。~ 10至1
我是否可以调整SciKit算法,使其优化以便于召回?
发布于 2022-10-11 11:31:24
仅仅追求召回并不是一个明确的决策规则:只要把所有的事情分类为1,你就会得到100%的召回。实际上,任何阈值敏感的东西都不是很好的优化目标,假设你指的是类似网格搜索的例程。
如果您必须使用recall,计算sklearn.metrics.precision_recall_curve()并找到一个具有足够好的回忆能力和相当精确性的点,并使用相应的阈值来比较您的predict_proba()结果。很可能,你的模型已经很好了,你只是需要更好的决策。
发布于 2022-10-11 06:33:10
当你在课堂上有极端的不平衡时,总是很艰难的。如果您能够这样做,考虑过抽样少数类或过低抽样的优势阶层,以创造更好的平衡。
但除此之外,您还可以使用网格搜索优化模型,并将其作为“召回”度量的目标。
sklearn.grid_search.GridSearchCV(clf, param_grid, scoring="recall")发布于 2022-10-11 07:02:21
对于这种情况,您可以使用平衡精度度量。它被定义为每个类获得的平均召回率。
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)https://datascience.stackexchange.com/questions/115093
复制相似问题