识别训练集中没有的类别样本
使用训练集训练出模型,该模型是否能够在开放的环境中使用是很重要的,不然只能在特定场景/场合下使用,其伸缩扩展性太差。然而,在开放环境中,数据样本可能是训练集中不存在的类别,此时模型能否区分出此样本为其他类别的样本尤为重要,否则会把该样本识别为训练集中的类别之一。比如使用猫和狗的图片为训练数据训练出来一个模型,把衣服的图片给他识别,该模型如果把衣服的图片识别成狗或者猫,则是很尴尬且有些滑稽的,所以能识别出训练集中没有的类别样本对一个模型能否应用在开放的环境中是很有意义的。
思路:
1.使用异常检测领域的相关技术手段,比如 oneclasssvm,iforest,auto encoder等等,把训练集中没有的类别数据当作异常,使用异常检测的方法对其进行检测。
2.使用聚类的方法,对训练集中数据进行聚类操作,每个类别的数据聚在一起,设定相关的阈值,如果新的样本距每个类别的中心距离都超过了阈值,则认为该样本是其他类别。
目前只有这两种大概的思路,欢迎大家进行补充交流。
补充:昨天搜了一波论文,发现这类问题可以归类到open set recognition里面,即开放集识别,开放集分类是一个处理“未知”类的问题,这些类不包含在训练数据集中,而传统分类器假设只有已知类出现在测试环境中。其实,大多数应用真正想落地,是避不开这个问题的,不知道为何研究的确并不多,近两三年才逐渐有些研究者关注,出了一些文章,还是集思广益,多多交流哈。