一、引言
最近在读论文的时候接触到Platt scaling,有点不理解这个概念。然后好奇心比较重,就看了一些科普,并追根溯源调查了一下Platt scaling。最终搞懂了这个概念,写个博客记录一下。中文翻译有看到:普拉特缩放,但是我比较喜欢叫它Platt缩放。Platt是一位机器学习领域的研究者,Platt scaling是以他名字命名的概念。
Platt缩放出自论文[2],这篇论文非常的厉害,谷歌学术引用数量在2023年1月7看到时已经达到7337。
二、Platt scaling/Platt缩放/普拉特缩放
在机器学习中,Platt scaling是一种将分类模型的输出转换为类概率分布的方法。该方法是由John Platt在支持向量机的背景下发明的,取代了Vapnik的早期方法,但可以应用于其他分类模型。Platt scaling的工作原理是将逻辑回归模型与分类器的分数拟合。
简单地说,在一些分类模型中,对于输入一个样本x,模型给出的输出y不是一个概率值(范围为[0,1]),而是一个分数或者距离值(范围超出0,1])。这个分数或者距离值可能会影响到分类模型在其他任务中的应用,不方便使用。所以研究者非常聪明地想到了一个办法:将模型的输出值(分数或者距离值)转换成一个概率值,然后再用于其他任务。
具体的方法如下:
假设是一个样本,且。表示一个二分类模型,对于输入,该分类模型的输出值为,其中的范围不仅仅是区间。而在该二分类任务中,的标签的值为或。
Platt scaling是一个两参数(two-parameter)优化问题,而优化的目标为
其中,而是样本是标签值;另外,,和就是Platt scaling要学习的参数(只有两个)。在该优化问题中,训练集是。
由于优化目标是两参数最小化问题,所以用什么优化算法应该都是可以的。其中,论文[2]使用了model-trust minimization算法[3]。具体的优化算法我这里就不多说了,如果只是理解Platt scaling的话,我们不妨想象一下使用梯度下降算法来优化这个目标。
最终,我们可以通过样本,经过模型得到,然后将传到Platt scaling得到一个概率值,而的范围一定是属于区间的。的缩放最终得以实现。
三、应用举例
上面我没有对具体的应用进行举例子说明。这里,我就根据我目前遇到的问题谈一个实际的应用。是这样的,我所在的领域是知识图谱嵌入,一些知识图谱嵌入模型的样本的输出值是范数距离(范围是[0,+∞)),另一些是概率值(范围是[0,1]),还有一些是实数值(范围是[-∞,+∞))。然后我看到了一篇关于集成学习的文章[4],这篇文章想要把各种知识图谱嵌入模型当作个体学习器集成起来。但是呢,这些个体学习器的输出值的范围有很大差别,集成的结果肯定是不好。所以,这篇文章的作者就使用了Platt缩放,最终将所有模型的输出值都转化为了概率值。然后,作者通过使用所有模型的概率值的算术平均当作最终的预测概率。
四、参考
[1] Platt scaling - Wikipedia.
[2] Platt, John. "Probabilistic outputs for support vector machines and comparisons to regularized likelihood methods." Advances in large margin classifiers 10.3 (1999): 61-74.
[3] Gill, Philip E., Walter Murray, and Margaret H. Wright. Practical optimization. Society for Industrial and Applied Mathematics, 2019.
[4] Krompaß, Denis, and Volker Tresp. "Ensemble solutions for link-prediction in knowledge graphs." Proceedings of the 2nd Workshop on Linked Data for Knowledge Discovery, Porto, Portugal. 2015.