你被告知的是最坏的情况。对于 5 个标签,20.01% 是模型选择一个类而不是另一个类所需的最低值。如果 5 个类别中的每一个的概率几乎相等,那么每个类别的概率大约为 20%。在这种情况下,模型将难以确定哪个类是正确的。关于 30% 的评论,虽然看起来很低,但请记住,该模型主要使用概率来分类最有可能的标签,计算高度准确的概率值并不是第一要务。
这是一个很好的参考。本文讨论了概率准确性的一些问题,并提到了一些关于如何提高准确性的理论:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.381.4254&rep=rep1&type=pdf
它提到(见下面的摘录)分类中的概率估计如何是一个复杂而困难的问题,并且一些模型在分类时可能非常准确但在概率估计方面很差,以及多类模型如何比二元分类困难得多模型。
摘录 1:“已知概率估计是一个相当困难的问题,尤其是与标准分类相比。这并不奇怪,注意到适当的概率估计是适当分类的充分但非必要条件:如果条件类概率 ( 1) 预测准确,可以通过选择概率最高的类别来简单地进行最佳分类"
摘录2:“更一般地,可以采取贝叶斯决策以最小化期望中的任何损失。另一方面,也可以根据不太准确的概率估计来获得正确的分类。事实上,分类将保持正确,因为只要真实类的估计概率最高。或者,换一种说法,估计误差将保持无效,除非它改变(2)中的 arg max 操作的结果。这也是为什么像朴素贝叶斯这样的方法显示的原因尽管产生了相对不准确的概率估计 [7],但在分类方面的竞争性能。”
摘录 3:朴素贝叶斯和决策树等方法是多类分类器,原则上可用于在此设置中生成概率估计。然而,在实践中,人们通常更喜欢在两类设置中估计概率,特别是因为估计(正类的)单个概率比同时估计 K-1 个概率要简单得多
概率接近 1 的示例:
from sklearn import datasets
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
iris = datasets.load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0)
from sklearn.tree import DecisionTreeClassifier
dtree_model = DecisionTreeClassifier(max_depth = 2).fit(X_train, y_train)
dtree_predictions = dtree_model.predict(X_test)
打印(dtree_model.predict_proba(X_test))
[[0。0.02564103 0.97435897]
[0. 0.91666667 0.08333333]
[1。0. 0. ]
[0. 0.02564103 0.97435897]
...