训练集合中,标签大量缺失,是否有比较成熟的处理方式?

理由
举报 取消

注意:是标签缺失,并不是数据缺失拒绝推断问题问题是0、1分类有分类器A,分类器A(也是用于同一分类,暂且认为这个分类器是有效的,好于随机但也不够理想)判断为1以后,才可以知道样本的真实标签,换句话说,样本有两个标签,真实标签和是否通过分类器A。如果没有通过分类器A,那么也没有真实标签。问:现在需要训练分类器B取代分类器A,但可以用的有真实标签的样本是已经通过了分类器A的。现在分类器A已经没有了,而且不可知。如果只用知道样本的真实标签的数据进行训练比如会出现偏差(因为分类器A已经过滤了一部分)。怎么处理这个问题?或者说怎么将原本没有通过A的样本的标签表示出来?

2018年1月18日 4 条回复 826 次浏览

回复 ( 4 )

  1. 王赟 Maigo
    理由
    举报 取消

    这叫semi-supervised training,即训练数据中有一部分数据有标签,有一部分没有。

    我的水平还不足以给出一份全面的综述。

    不过一种常见的处理方法是,先用有标签的数据训练模型,再用此模型为无标签的数据生成标签,将把握比较大的那部分数据加到训练数据中,重复此过程。

  2. 杨超
    理由
    举报 取消

    1. 如果都是有标签的,最大化P(Y|X)或者最大化P(Y,X)

    2.一部分有标签叫X_l,一部分没标签的叫X_u

    最大化p(Y_l|X_l) + p(X_u)或者最大化P(Y_l,X_l) + P(X_u)

    此时X_u虽然没有标签,但是他本身的分布也是一种可以利用的信息,所以P(X_u)可以利用。

    P(X) 怎么算,P(X) = sum_Y{P(Y,X)}

    举个极端的例子,你只有三个样本点,每个标签都不同,然后你用这三个样本训练一个三分类的分类器,最后效果很难好,但是你正好还有10万个没标签的样本,这些样本的分布正好是三个簇,且你的三个点正好落在这三个簇里面,那这10万个点就提供了很有用的信息,你的分类平面就可以选在这些簇之间。

  3. 王名扬
    理由
    举报 取消

    这种问题称semi-supervised training,即有标签数据和无标签数据服从相同的分布。一种方法是,用无标签数据训练一个神经网络,这个神经网络可以提取数据集的特征。接着用这个神经网络 提取有标签数据的特征,再用有标签的特征训练分类器。

    具体来说,先拿无标签数据训练一个三层的网络,并且令输入等于输出,这种三层网络被称为自编码器(Autoencoder)。此外这个网络还必须满足一定的稀疏性条件,即限制每个隐单元的平均活跃度,使得每次隐单元中只有很少一部分被激活,那么这个网络隐层的输出就可以作为原始无标签数据的特征。一般来说这个特征比原始数据更好。

    再用无标签数据训练得到的Autoencoder处理有标签数据,对有标签数据的特征有两种处理方法。一种称替代表示,也就是把有标签数据的特征和标签合在一起训练分类器。还有一种级联表示,即把有标签数据的特征和原始数据合并,再将标签送入分类器。

    参考UFLDL教程里的self-taught learning一节。Self-Taught Learning

    稀疏性条件和autoencoder参考这一节Autoencoders and Sparsity

  4. 晓风
    理由
    举报 取消

    semi-supervised learning。高票答案说的挺清楚的了。但是给了一个假设:你的data,不管通过或者没通过分类器,都是满足同一分布

    因为你在评论里讲了data可能不满足同一分布,那么我觉得你可以考虑self taught learning 试试

    大概步骤:利用unlabeled data(不一定要满足相同分布)训练一个model,model选择取决于你的data类型。再把output层去掉,保存前几层的weights(可以看作是feature extraction)。用保存的weights来提取labeled data的feature,训练modelB on labeled data

我来回答

Captcha 点击图片更换验证码