Python NLP项目不同评分方法准确率差异大,哪种结果正确?
差异原因
三种评估方法的核心逻辑不同,是结果差异大的核心原因,和分类器本身的随机性无关:
- 第一种方法采用重复分层10折交叉验证:
RepeatedStratifiedKFold会强制每折数据的类别分布和全量数据集一致,同时做3次重复的10折划分,取总共30次验证的结果平均值,能最大程度抵消数据划分的随机波动、类别分布偏移带来的结果偏差,稳定性最高。 - 第二种方法采用单次留出法验证:结果完全依赖单次训练集、测试集的划分效果,如果划分时没有做分层处理、或测试集和训练集的特征/类别分布差异较大,结果会出现明显的偏差,且本身没有多次平均的机制,波动和误差都更大。
- 第三种方法采用普通无分层10折交叉验证:没有强制每折的类别分布和全量数据对齐,如果你的数据集存在类别不平衡的情况,部分折的样本分布会严重偏离整体分布,最终平均结果会偏低。
结果可信度判断
第一种方法得到的90% ± 0.6%结果可信度最高,重复分层交叉验证是目前小样本场景下通用的、最稳健的模型评估方案,你如果换用其他分类器也可以优先用这套评估逻辑。
可额外排查的点
- 确认第二种方法的训练集、测试集划分逻辑,是否做了分层,分布是否和全量数据对齐
- 确认数据集是否存在类别不平衡,如果存在,所有非分层的评估方法结果都会存在明显偏差
- 确认三种方法使用的特征、标签数据是否完全一致,排除数据版本不统一的问题
内容的提问来源于stack exchange,提问作者Sina
相关产品推荐
相关产品推荐

