Machine learning Sci-kit-Learn中小型正样本集的机器学习实验设计

Machine learning Sci-kit-Learn中小型正样本集的机器学习实验设计,machine-learning,nlp,scikit-learn,Machine Learning,Nlp,Scikit Learn,我对如何训练一个正集合非常有限,负集合很大的集合感兴趣 我有大约40个正面的例子(关于一个特定主题的相当长的文章),和大约19000个负面的例子(大部分来自sci工具包学习新闻组数据集)。我也有大约1000000条推特可以使用。。对我正在训练的话题持否定态度。负集与正集的大小是否会对分类器的训练产生负面影响 我想在sci工具包学习中使用交叉验证。我是否需要将其分解为训练/测试开发/测试集?我知道sci工具包中有一些预先构建的库。您推荐的或以前使用过的任何实现示例都会有所帮助。 谢谢 第一个问题的

我对如何训练一个正集合非常有限,负集合很大的集合感兴趣

我有大约40个正面的例子(关于一个特定主题的相当长的文章),和大约19000个负面的例子(大部分来自sci工具包学习新闻组数据集)。我也有大约1000000条推特可以使用。。对我正在训练的话题持否定态度。负集与正集的大小是否会对分类器的训练产生负面影响

我想在sci工具包学习中使用交叉验证。我是否需要将其分解为训练/测试开发/测试集?我知道sci工具包中有一些预先构建的库。您推荐的或以前使用过的任何实现示例都会有所帮助。
谢谢

第一个问题的答案是肯定的,它对结果的影响程度取决于算法。我的建议是关注基于类的统计数据,如召回率和准确率(见
分类报告

  • 对于
    RandomForest()
    ,您可以查看 样本权重参数。一般来说,
    样品的重量是多少
    您正在
    scikit-learn
    中查找

  • 对于
    SVM
    ,请查看或

  • 对于
    NB
    分类器,这应该由贝叶斯隐式处理 然而,在实践中你可能会看到一些糟糕的表现


对于你的第二个问题,可以讨论了,我个人将我的数据分成训练和测试两部分,对训练集执行交叉验证以进行参数估计,对所有训练数据进行再训练,然后对我的测试集进行测试。但是,您拥有的数据量可能会影响分割数据的方式(更多数据意味着更多选项)。

您可能会使用随机林解决分类问题。处理数据不平衡基本上有3个参数。类别权重、样本大小和截止值

类权重给定的类的权重越高,其错误率降低的越多

Samplesize-在对每棵树的缺陷进行采样时,对少数类进行过采样,以改善类的不平衡性[不确定Sci工具包是否支持此功能,过去是R中的参数)

截止-如果>x%的树投票给少数类,则将其分类为少数类。默认情况下,对于2类问题,随机林中的x为1/2。您可以为少数类将其设置为较低的值

检查平衡预测误差在

对于第二个问题,如果您使用的是随机林,则不需要保留单独的训练/验证/测试集。随机林不基于验证集选择任何参数,因此不需要验证集


另外,在随机森林的训练过程中,通过从训练数据中替换抽样获得训练每棵树的数据,因此每个训练样本不用于大约1/3的树。我们可以使用这1/3的树的投票来预测随机森林分类的开箱即用概率。因此,使用OOB准确性您只需要一个训练集,而不是验证或测试数据来预测未知数据的性能。请在上检查包外错误以进行进一步研究。

您打算使用哪种类型的分类器?我有一个随机森林分类器…基本上读取TSV文件,创建一包单词,然后生成矢量器和随机森林分类sifier。我想用SVM,Naïve Bayes看到这一点,但还没有实现。谢谢你的帮助。任何评论/指导都很感激。如果检测到主题,输出应该是1或0。回答很好。谢谢!我应该尝试拆分我的文章以获得更多样本吗?你会推荐多少百分比的正反数据r培训和测试分割(80%/20%)?我不知道分解文章是否是一个好主意,这取决于文章的长度。你认为你的tf idf向量会描述文档的一半以及整个内容吗?也许可以看看一些无监督的学习技术,例如聚类,来了解这一点。如果你想用这个模型来预测,我总是会推荐修复一个大于20%的测试集,理想情况下为50-66%。您能标记我的答案,以便其他人能将其视为您问题的答案吗?我不同意您的说法,即随机林不会根据验证集选择参数。树的深度和用于每个拆分的功能的数量对于正确进行非常重要。功能的数量是esp在NLP应用中尤其重要,因为tf idf向量通常包含非信息性特征。