在 scikit-learn 中控制 LDA 和 QDA 的后验概率阈值

Controlling the posterior probabilty threshold for LDA and QDA in scikit-learn

考虑以下用例(完全摘自 James 等人的《统计学习简介》)。

您正在尝试根据各种个人数据预测信用卡所有者是否会违约。您正在使用线性判别分析(或者,出于这个问题的目的,二次判别分析)。

您希望估算器优先考虑真阳性率而不是假阳性率。也就是说,正确识别即将发生的违约比预测无法实现的违约更重要。

在sklearn.lda.LDAand/orsklearn.qda.QDA类中有这个设置吗?我认为也许使用 class_prior 命名参数构建它们是合适的,但这似乎没有被接受。

您可以使用 lda.predict_proba 更改决策阈值,然后手动设置概率阈值:

lda = LDA().fit(X_train, y_train)
probs_positive_class = lda.predict_proba(X_test)[:, 1]
# say default is the positive class and we want to make few false positives
prediction = probs_positive_class > .9

这会给你一个非常保守的估计他们是否会违约(只有 90% 确定时才会说他们违约)。 .9 是否真的对应于 90% 确定取决于 calibrated 分类器的好坏。