平衡精度是我们可以用来评估分类模型性能的一个指标。
它的计算方法是:
平衡准确性=(敏感性+特异性)/2
其中:
- 敏感度:真正的阳性率"--模型能够检测到的阳性案例的百分比。
- 特异性:真阴性率"--模型能够检测到的阴性案例的百分比。
当两个类别不平衡时,这个指标特别有用--也就是说,一个类别比另一个类别出现得多。
例如,假设一个体育分析师使用逻辑回归模型来预测400个不同的大学篮球运动员是否被选入NBA。
下面的混淆矩阵总结了该模型的预测结果:
为了计算该模型的平衡准确性,我们首先要计算灵敏度和特异度。
- 灵敏度:真正的阳性率"=15/(15+5)=0.75
- 特异性:真正的阴性率"=375/(375+5)=0.9868
然后我们可以计算出平衡的准确性,即
- 平衡准确率=(敏感性+特异性)/2
- 平衡准确率=(0.75+9868)/2
- 平衡准确度=0.8684
该模型的平衡准确性结果是0.8684。
下面的例子显示了如何使用Python中sklearn库的**balanced_accuracy_score()**函数来计算这个确切场景下的平衡精度。
例子:在Python中计算平衡精度
下面的代码显示了如何定义一个预测类数组和一个实际类数组,然后用Python计算模型的平衡精度:
import numpy as np
from sklearn.metrics import balanced_accuracy_score
#define array of actual classes
actual = np.repeat([1, 0], repeats=[20, 380])
#define array of predicted classes
pred = np.repeat([1, 0, 1, 0], repeats=[15, 5, 5, 375])
#calculate balanced accuracy score
balanced_accuracy_score(actual, pred)
0.868421052631579
平衡精度是0.8684。这与我们之前手工计算的数值相符。
注意:你可以在这里找到balanced_accuracy_score()函数的完整文档。