Calibration of Machine Learning

关于calibration 得弄清楚这么几个问题:

  1. calibration 是属于模型评估的范畴吗?
  2. calibration 有哪几种?
  3. calibration 如何监测?也就是说什么时候需要做calibration?
  4. 具体怎么做calibration ?

第一个问题
calibration 是对线上模型基于置信区间的一种postprocess校验方法,它最终的目的仍然是改变模型的行为。所以它属于线上模型评估的范畴。比方说,在做线上AB测试的时候,发现模型表现很差,或者说差想人意,这个时候需要做的是做一下calibration的监测,观察一下predict数据与real数据之间的分布情况,再考虑要不要做calibration,通过calibration后再观察模型的线上表现。

第二个问题
关于calibration的分类,其实都是按照模型的类别分的。广义上讲,分两类,一类是基于discrete的,另一类是基于probability的;狭义上讲,又分分类与回归。其实我们通常所遇到的就是calibration of probability ,而且是binary classification,就是二分类问题中的概率模型校验,简称CP。典型的模型就是logic regression ,随后我们提到的也就是CP。

第三个问题
那么什么时候需要calibration呢,上面也提到过,在做线上模型评估的时候,我们会根据predict数据与real的反馈来决定要不要做calibration。用两张图来对比 calibration 与 uncalibration :

Calibration of Machine Learning_第1张图片
Calibration VS Uncalibration.jpg

我们把线上predict 的正样本的概率值做一下 bin处理,比方说,0-1的值我们划分10个bin。然后计算一下落入每个bin中的正样本的概率值,如上图描绘出来就行了,这条曲线也可以理解为置信曲线。理想化状态,这个曲线应该非常接近对角线,如右图所示,这时就不需要做calibration;相反如果如左图所示,呈S型曲线,这时就需要做calibration。

举个例子,左图中,0.3-0.4区间的正样本概率值非常小,小于0.1,显然是不合常理的,理想状态下这个区间应该有30%-40%的概率为正样本;另,0.8-0.9区间的正样本概率值已经非常接近1.0,显然也是不合理的,理想状态下这个区间的样本应该有80%-90%的概率为正样本。在这里应该想到misclassification ,即FP 和 FN。

第四个问题
至于如何做calibration ,这里只介绍一种最为简单的处理方法,叫bining average。下面看看这种方法是如何work的,比方说有这么一组训练数据,按预测的正样本概率降序排列:
bin score
1 0.95
1 0.94
1 0.91
1 0.90
2 0.87
2 0.85
2 0.80
2 0.76
3 0.70
3 0.66
3 0.62
3 0.62
4 0.51
4 0.49
4 0.48
4 0.48
5 0.45
5 0.44
5 0.44
5 0.42

如果来了一个新的预测值,0.68,那么的update之后的值应该是(0.70 + 0.66 + 0.62 + 0.62) / 4 = 0.65。

这里就有一个问题,把predict的概率值update了之后又是怎样影响模型的行为的呢?我们反过来想,要想影响模型的行为,最终我们都是想改变模型的参数,那这里它又是如何改变模型的参数的呢?我们就LR模型为例,通过SGD更新参数的公式可以看出来:

PrameterUpdate.png

更新h函数的值以后,它的梯度值当然会发生变化,相应的参数的迭代轨迹也会发生相应的变化,最终改变模型的行为。

你可能感兴趣的:(Calibration of Machine Learning)