机器学习「输出概率化」:一种无监督的方法

本文探讨了在无标签的无监督学习中,如何将模型的原始输出转化为概率。首先,强调了转化应遵循的三个原则:规律性、取值归一和顺序性。接着介绍了几种转化方法,包括直接减最小值、使用log缩放以及利用概率密度函数进行归一化。最后指出,对于无标签数据,通常假设高斯分布进行转化,但也可以根据数据分布选择其他分布函数。转化概率对于模型融合和理解模型输出至关重要。
摘要由CSDN通过智能技术生成

转载自 https://zhuanlan.zhihu.com/p/33873947

以常见的二分类问题为例,工具库的输出结果为[0,1]或者[-1,1],分别代表不同的两个类别(如正例和反例)。困扰初学者的一个问题是:模型输出的结果0和1是如何得到的?模型的原始输出结果是什么?

这个问题的答案是:不同模型的原始输出各不相同,比如K-近邻的输出结果应该是K个最近邻的所对应的标签的平均数(或是以反向距离为权重的加权平均),而逻辑回归的输出结果可以被直接理解为概率,在[0,1]之间。尽管像sklearn一样的工具库为大部分监督算法都提供了概率输出,但大部分模型的原始输出结果其实都不是0或者1。它可以是某个浮点数,可正可负。

在正例和负例假设数目相当的前提下,那么可以得到阈值k为中值,所有输出小于k就被划分为0,而所有大于等于k的数据则被分到1中。换句话说,我们得到的二分类标签是原始模型输出的硬性划分结果。举个简单的例子:微信截图_20181107145255.png,假设k=0.5,那么y被硬分类后的值为 微信截图_20181107145332.png 。通过调整阈值k的取值,最终输出的二分标签结果也可以相对应的变化,这也是评估ROC的基本方法(不断调整阈值)。

因此k=0.5或者中值只是一种特例,仅当假设正负例个数相等时成立。当正例和负例不平衡时,调整阈值k也是一种处理方法,如另 微信截图_20181107145405.png 使其等于正例占到总体的比例。

在实际问题中,将模型的输出结果转化为概率[0,1]是一个很重要的问题。转化为概率有很多重要意义:

  • 便于人们理解输出结果,因为概率的基本知识深入人心

  • 相较于0和1,储存了更多信息,比如顺序关系:0.8比0.7更倾向于正例

  • 便于整合多个模型。在结合多个模型时,融合不同模型的输出的前提是在同一维度上,概率是最符合直觉的维度


将模型的输出结果转化为概率在监督学习中往往是可得的,可以通过计算后验概率,用贝叶斯公式,用softmax(多分类)公式就可以求出某个数据点属于某个类别的“概率”,今天暂时不表。感兴趣的朋友可以参考sklearn中不同的分类器所对应的predict_proba()函数,要注意不同算法的计算方法可能不同,且不是每个监督算法都适合算概率。值得注意的一点是,对监督模型的输出概率化往往是可行的,而无监督的情况下并不容易。

因此本文讨论的是,对于没有约束的的无监督模型输出,如何将其转化并解释为概率。

首先我们给出几个样本:

微信截图_20181107145514.png

假设这三个序列都是模型的输出结果,数值越小越倾向于被归类为0,而数值越大越倾向于被归类为1。我们的目标是为他们分别找到一个 转换函数微信截图_20181107145558.png ,使得S1, S2,S3的输出均为概率。

首先定义转换函数微信截图_20181107145558.png 需要满足:

  1. 规律性(regular):所有未经转换的值应处于区间 微信截图_20181107145652.png

  2. 取值归一(normal):最终的输出范围为微信截图_20181107145722.png ,这样才能被解读为是概率

  3. 顺序性(ordinal): 微信截图_20181107145750.png ,转化过程不能改变原始输出中的顺序,排序信息应该保存(ranking-stable),(经过评论区朋友的建议修改为)可类比编程中的稳定排序

概率化就是设计转换函数微信截图_20181107145558.png ,第一步解决数据规律性的问题,说白了就是把数据重新缩放(scaling)到微信截图_20181107145652.png上。介绍几种简单的方法:

  • 最暴力的方法是直接在每个值减去最小值即可,以S2为例,每个数都应减去最小值1最终得到微信截图_20181107145901.png ,这个方法同理对负数有效。

  • 对于取值跨度较大的数或者有特定需求的序列,可以用log进行缩放。

值得一提的是,输出范围为大于等于0实数的单调函数都可以被改造用于规律化序列。此处专门提到单调函数的原因是:规律化的序列依然需要满足顺序性,因此非单调函数不能用。

第二步就是把规律化后的函数放到微信截图_20181107145722.png 的范围上,也就是归一化。一说归一化,很多朋友说这我门清。没错,最简单的方法就是常见的线性归一(min-max scaler):

  • 微信截图_20181107145948.png ,其基本假设就是类似于均匀分布

但如果我们对于y的分布有假设的话,更加有效方法是使用相对应的概率密度函数来转换。让我们以高斯分布为例,我们可以首先计算高斯误差函数(Gaussian Error Function),此处定为 微信截图_20181107150018.png ,那么可用

  • 微信截图_20181107150042.png,此处的 μ σ 是序列的均值和标准差

上面介绍的两个函数都是单调的,因此整个顺序是稳定的,只要对序列中的所有数重复以上操作即可。

总结,当我们的模型不存在标签时,将输出处理为概率是一件非常重要的事情,可以用于融合多个模型。当我们设计转化函数时,应保证其符合上文所提到的三个特性,尤其是顺序性。

如果我们对数据分布没有了解,一般假设高斯分布比较合理,在低维时可以假设伽马分布。任何分布函数都可以使用累计分布函数(cdf)来进行转化。即使使用最简单的归一化(min-max scaler),一般也有不错的效果。

 


感兴趣的读者可以进一步阅读:

Wasserman, L., 2013. All of statistics: a concise course in statistical inference. Springer Science & Business Media.

Kriegel, H.P., Kroger, P., Schubert, E. and Zimek, A., 2011, April. Interpreting and unifying outlier scores. In Proceedings of the 2011 SIAM International Conference on Data Mining (pp. 13-24). Society for Industrial and Applied Mathematics.

Aggarwal, C.C., 2015. Outlier analysis. In Data mining. Springer, Cham.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值