我对如何训练一组非常有限的正集和一组大的负集的技巧很感兴趣。
我有大约40个正面的例子(关于一个特定主题的很长的文章)和大约19,000个负面的样本(大多数来自sci学习新闻组数据集)。我还有大约1,000,000条我可以使用的推特..。对我正在努力训练的话题持否定态度。负集和正集的大小会对训练产生负面影响吗?
我想在sci学习中使用交叉验证。我需要把它分解成火车/测试开发/测试集吗?是知道在sci中有一些预建的库。您以前推荐或使用过的任何实现示例都会有帮助。谢谢!
发布于 2016-02-11 17:35:54
对第一个问题的回答是肯定的,它会对你的结果产生多大的影响取决于算法。我的建议是关注基于类的统计数据,如召回和精度(在classification_report中找到)。
RandomForest(),您可以查看讨论示例权重参数的这条线。一般来说,sample_weight是您在scikit-learn中要寻找的东西。SVM,请看一下这个例子或这个例子。NB分类器,这应该由Bayes规则隐式处理,但是在实践中您可能会看到一些不好的性能。对于第二个问题,我个人将我的数据分解成一个训练和测试分割,对训练集进行交叉验证以进行参数估计,对所有的训练数据进行再训练,然后在我的测试集上进行测试。但是,您拥有的数据量可能会影响您拆分数据的方式(更多的数据意味着更多的选项)。
发布于 2016-02-12 20:13:33
您可能会使用随机森林来解决分类问题。数据不平衡的处理基本上有3个参数。类别重量,样本大小和截止。
类权重--一个类的权重越高,其错误率就越低。
Samplesize-过采样少数类以改善类的不平衡,同时对每个树的缺陷进行抽样[不确定Sci-kit是否支持这一点,以前在R中是param )
截止-如果>x%树投票支持少数类,将其归类为少数类。默认情况下,对于2类问题,在随机林中x为1/2。可以将其设置为少数类的较低值。
检查home.htm的平衡预测错误
对于第二个问题,如果你使用随机森林,你不需要保留单独的火车/验证/测试集。随机林不根据验证集选择任何参数,因此验证集是不必要的。
在随机森林的训练过程中,每棵树的训练数据都是通过对训练数据的替换而得到的,这样每个训练样本就不会被用于大约1/3的树。我们可以利用这3棵树的投票量来预测随机森林分类的开箱概率。因此,为了保证OOB的准确性,您只需要一个训练集,而不是验证或测试数据来预测未知数据的性能。在home.htm检查袋错误,以便进一步研究。
https://stackoverflow.com/questions/35345280
复制相似问题