使用MAPIE时alpha过大导致预测集为空的技术咨询
score方法生成空预测集的问题与解决 我使用Python库MAPIE进行conformal predictions,在MapieClassifier中选择method='score'。当alpha取1%-5%这类较小值时,能得到非空预测集;但当alpha范围覆盖1%-99%(如alphas = np.arange(0.01,1.00,0.01))时,预测集的平均类别数逐渐降至0。
根据C. Molnar所著《Introduction To Conformal Prediction With Python (2023)》第27页的描述:
多分类任务的预测集是包含一个或多个类别的集合,即目标模态的非空子集。
但我在两个分类数据集(包括书中提及的Dry Bean数据集)上使用默认XGBoost模型测试,均出现alpha过大时预测集为空的现象。
附上预测集平均基数随alpha变化的图表:
从图中可见平均基数最终低于1。
我还尝试了书中第25-28页未直接使用MAPIE但逻辑相似的代码,同样出现alpha增大后预测集为空的结果,这与我根据该书第27页内容预期的非空预测集不符。观察到alpha增大时q_level降低,进而使q_hat变小,且q_hat在q_level处于0.7-0.9区间时下降极快:
问题
- alpha增大时预测集为空是否属于正常现象?
- 是否应更换
method='score'为其他方法以获取非空预测集? - 是否遗漏了MAPIE的最佳实践?比如应避免使用大alpha或score方法?直觉上认为应始终得到非空预测集。
2024-04-05 更新
我深入查阅了Molnar的书,相关内容如下:
第50页:“要将覆盖率降至95%,MAPIE不得不人为生成空预测集,但MAPIE开发者的设计决定是不生成空集,因为空集难以解释。”
第96页:“首先预测集会变小,但如果为达到1−𝛼覆盖率,预测集必须小于1个类别?理论上算法可能需要生成空集来确保精确的1−𝛼覆盖率,但MAPIE不会这样做,因此覆盖率可能大于1−𝛼且随alpha增大不再变化,这是设计选择。”
第96页:“但随着alpha增大,越来越多不确定的预测会转为空集。”
书中提到预测集可能为空但MAPIE设计上不会生成,这与实际情况不符——MAPIE默认方法为'lac'(即'score'),在alpha过大时确实会生成空集。
定义score方法的原始论文中也提及空集:
第1页:“最优分类器有时会输出空集,但我们提供了两种适合不同实际需求的解决方案。”
第3页:“最优分类器一个潜在的不良特性是可能产生空预测,即对某些x∈X,H(x)=∅,尤其是在要求的覆盖率较低时。”
MAPIE文档也明确说明score(即lac)方法可能生成空集。目前最佳解决方案是更换其他方法,我已尝试并解决了空集问题,相关图表如下:


结论
score方法在alpha过大时会生成空预测集,Molnar书中关于MAPIE设计上不生成空集的表述有误。
内容的提问来源于stack exchange,提问作者Noé AC

