测试集没有标签怎么评价?

编程入门 行业动态 更新时间:2024-10-21 09:47:43

测试集没有标签怎么<a href=https://www.elefans.com/category/jswz/34/1767599.html style=评价?"/>

测试集没有标签怎么评价?

背景:

 

很多时候当我们需要评价一个模型的性能时,是通过看其在测试集上面的一些评价指标如precision、recall等等,但是这需要一个大前提,那就是测试集得有标签,如果没有标签就无法进行计算,实际场景中很多测试数据集都是没有标签的。

为此最粗暴的就是人工打标,这个最好了,但是当测试集很大或者很多,那标起来成本就很高,为此怎么办?接下来就聊一聊一些已有的解决办法,供借鉴。

activate learning

即主动学习,既然人打标成本太高,那就让程序打标,他的主要思路如下:

先人工打标一批少量的数据集train,然后以此去训练模型,训练完后,模型去预测test, 返回最难判断的一批样本(比如300个),然后认为标一标,将其加入到train,为此再训练,再预测,再挑出,再标,进行多轮后,最后得到打标样本。

其中比较关键的就是怎么选择最难的300个样本,即选择策略是什么,对于二分类比较容易想到的就是预测值是0.5,也就是说模型不知道他是0还是1。

关于选择策略已经有很多啦,直接查activate learning就可以看到一系列方法啦。

比如百度EasyDL文本智能标注,就是这个思想:

其官网给的一个标注时间可以参考:

预计5w条未标注数据,将消耗2小时进行智能标注

Are Labels Necessary for Classifier Accuracy Evaluation?

上面方法还是需要标注,那有没有就不需要标注的呢?

这篇论文给出了一个思路

.02915?context=cs

大体思路就是基于:分布偏移会影响分类器准确性。这一大前提

如图和train数据集数据分布差异越大,准确率越低,为此就可以学出一个分布到准确率的映射,就不要标签啦,只要知道分布,就可以得到准确率。

更详细的解读关于这个有博客已经解释的很清楚啦,这里不在描述比如:

训练集山准确率高测试集上准确率很低_测试集没有标签,我们可以拿来测试模型吗?..._weixin_39836063的博客-CSDN博客

实现也比较简单,没什么代码量,主要就是生产大量源数据,如对于图像就是平移,旋转等等,对于NLP可以drop,shuffle等等。但是要保证不改变原先的语义,即我们的本质是想复用label的,改变了本质的语义,就不能复用label了。

还有一点是,论文中给的计算分布差异用的frechet_distance公式写错了,其真真的可以看:
The Fréchet distance between multivariate normal distributions - ScienceDirect

代码这里简单写了一下

def get_frechet_distance(dataset_a, dataset_b):#dataset_a.shape = n_num * hidden_size#dataset_b.shape = n_num * hidden_sizedataset_a_mean = np.mean(dataset_a, axis=0)dataset_b_mean = np.mean(dataset_b, axis=0)dataset_sub = dataset_a_mean - dataset_b_meanmean = np.sum(dataset_sub*dataset_sub)dataset_a_cov = np.cov(dataset_a.T)dataset_b_cov = np.cov(dataset_b.T)#cov_sub = dataset_a_cov + dataset_b_cov - 2*(np.sqrt(np.dot(dataset_a_cov, dataset_b_cov)))cov_sub = dataset_a_cov + dataset_b_cov - 2*(np.sqrt(dataset_a_cov*dataset_b_cov))cov = cov_sub.trace()fd = mean + covreturn fd

dataset_a和dataset_b的维度是这样:

n_num:数据个数

hidden_size:每个数据 量化后的特征。比如一句话可以用bert的cls编码

===========================================

再一个就是生成元数据方法,说白了就是通过数据增强,生成一批批元数据集,可以参考一点笔者另外一篇博客,里面有部分是小样本生成方法

《半监督小样本数据学习》:半监督之数据增强_爱吃火锅的博客-CSDN博客_半监督数据增强

总结

其实,评价系统是一个非常重要的问题,尤其在做离线模型等时候,没有这个评价系统就不知道我们做的好不好,有没有意义,目前大多数离线评价方法都是从测试集上面离线划分出来一部分测试集作为评价集,可以想象到其和训练集其实有相似的分布,导致我们自认为结果偏好,有一定迷惑作用,怎么办呢?发表在ACL 2020上面的论文就提出一种想法,有代码

Beyond Accuracy: Behavioral Testing of NLP Models with CheckList

代码:GitHub - marcotcr/checklist: Beyond Accuracy: Behavioral Testing of NLP models with CheckList

这里就不细讲了,大家可以看看:

基于 CheckList 的 NLP 模型行为测试 - 知乎

总之量化非常重要

欢迎关注笔者微信工作号:


​​​​​​​

 

更多推荐

测试集没有标签怎么评价?

本文发布于:2024-02-12 03:37:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1685676.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:评价   标签   测试

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!