在 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 分类器的好坏。
考虑以下用例(完全摘自 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 分类器的好坏。