输入不匹配训练集中的功能;我需要多少训练数据?

时间:2016-01-29 05:05:04

标签: machine-learning nlp classification

我是Text Mining的新手。我正在研究垃圾邮件过滤器。我做了文字清理,删除了停止词。 n-gram是我的特色。因此,我使用朴素贝叶斯构建频率矩阵并构建模型。我的训练数据非常有限,所以我面临以下问题。

当一个句子出现在我的分类中,如果它的特征都没有与训练中的现有特征相匹配那么我的频率向量只有零。

当我发送这个向量进行分类时,我显然得到了一个无用的结果。

什么样的训练数据可以达到理想的效果?

2 个答案:

答案 0 :(得分:1)

通常,您拥有的数据越多越好。在某些时候你会得到递减的回报。通过在改变训练集大小的同时绘制交叉验证性能来查看训练集大小是否有问题通常是个好主意。在scikit-learn中有一个这种类型的例子“learning curve。”

Scikit-learn学习曲线示例

Scikit-learn learning curve

您可以考虑引入外部示例帖子以增加训练集的大小。

随着训练集的增长,您可能希望尝试减少分类器的偏差。这可以通过添加n-gram特征,或切换到逻辑回归或SVM模型来完成。

答案 1 :(得分:0)

  

当一个句子出现在我的分类中,如果它没有任何特征与训练中的现有特征相匹配,那么我的频率向量只有零。

你应该对输入进行标准化,使其在0左右形成某种粗略的分布。一种常见的方法是进行这种转换:

input_signal = (feature - feature_mean) / feature_stddev

然后只有当所有特征完全处于平均值时才会发生所有零。