有没有办法找到整个数据集中最具代表性的样本集?

时间:2019-05-11 16:37:28

标签: machine-learning scikit-learn nlp data-science text-classification

我正在研究文本分类,我有一组200.000条推文。

这个想法是手动标记一小部分推文和训练分类器,以预测其余的标签。监督学习。

我想知道的是,是否存在一种方法来选择要包含在样本集中的样本,使得该样本集可以很好地表示整个数据集,并且因为训练集,训练有素的分类器对其他推文具有相当大的信任。

2 个答案:

答案 0 :(得分:2)

这听起来像是一个分层问题-您是否已有标签或打算根据要构建的样本设计标签?

如果是第一种情况,我认为按照重要性排序的步骤将是:

  1. 按目标班级比例进行分层(因此,如果您有三个班级,并且他们的比例为50-30-20%,则培训/开发/测试应遵循相同的比例)
  2. 根据您计划使用的功能进行分层
  3. 通过鸣叫长度/词汇等进行分层

如果是第二种情况,并且您还没有标签,则可能要考虑使用n-gram作为特征,并结合降维或聚类方法。例如:

  1. 使用PCA或t-SNE之类的东西来最大程度地增加tweet(或较大子集)之间的距离,然后从投影空间的不同区域中选择候选对象
  2. 根据词汇项目(字母或二元组,可能使用对数频率或TF-IDF,并停止单词过滤(如果您要查找的是内容单词),对它们进行聚类)-然后,可以将树切成一定高度 n 个垃圾箱,然后可以将它们用作样本来源(按分支分层)
  3. 使用LDA之类的内容查找 n 个主题,然后按主题分层抽样

希望这会有所帮助!

答案 1 :(得分:0)

似乎,在对要标记的类一无所知之前,一个简单的统一随机样本几乎可以与任何分层样本一样好-因为您事先不知道要分层的内容。

在标记了第一个样本并构建了第一个分类器之后,您可以开始所谓的主动学习:对未标记的数据集进行预测,并采样一些分类器最不可信的推文。标记它们,重新训练分类器,然后重复。

使用这种方法,我在几次(〜5)次迭代后设法创建了一个很好的训练集,每次迭代中都有〜100篇文章。