输入不匹配训练集中的特征;我还需要多少训练数据?
Input matches no features in training set; how much more training data do I need?
我是文本挖掘的新手。我正在研究垃圾邮件过滤器。我做了文本清理,删除了停用词。 n-gram 是我的特征。所以我构建了一个频率矩阵并使用朴素贝叶斯构建模型。我的训练数据集非常有限,所以我面临以下问题。
当一个句子来找我分类时,如果它的 none 特征与训练中的现有特征匹配,那么我的频率向量只有零。
当我发送这个向量进行分类时,我显然得到了一个无用的结果。
理想的训练数据大小是多少才能获得更好的结果?
通常,您拥有的数据越多越好。你会在某个时候减少 returns。通过在改变训练集大小的同时绘制交叉验证性能来查看您的训练集大小是否存在问题通常是个好主意。在 scikit-learn 中有一个这种类型的例子“learning curve”。
Scikit-learn 学习曲线示例
您可以考虑引入外部示例帖子以增加训练集的大小。
随着训练集的增加,您可能想尝试减少分类器的偏差。这可以通过添加 n-gram 特征,或切换到逻辑回归或 SVM 模型来完成。
When a sentence comes to me for classification and if none of its features match with the existing features in training then my frequency vector has only zeros.
您应该规范化您的输入,使其在 0 附近形成某种粗略的分布。一种常见的方法是执行此转换:
input_signal = (feature - feature_mean) / feature_stddev
只有当所有特征都恰好处于平均值时才会出现全零。
我是文本挖掘的新手。我正在研究垃圾邮件过滤器。我做了文本清理,删除了停用词。 n-gram 是我的特征。所以我构建了一个频率矩阵并使用朴素贝叶斯构建模型。我的训练数据集非常有限,所以我面临以下问题。
当一个句子来找我分类时,如果它的 none 特征与训练中的现有特征匹配,那么我的频率向量只有零。
当我发送这个向量进行分类时,我显然得到了一个无用的结果。
理想的训练数据大小是多少才能获得更好的结果?
通常,您拥有的数据越多越好。你会在某个时候减少 returns。通过在改变训练集大小的同时绘制交叉验证性能来查看您的训练集大小是否存在问题通常是个好主意。在 scikit-learn 中有一个这种类型的例子“learning curve”。
Scikit-learn 学习曲线示例
您可以考虑引入外部示例帖子以增加训练集的大小。
随着训练集的增加,您可能想尝试减少分类器的偏差。这可以通过添加 n-gram 特征,或切换到逻辑回归或 SVM 模型来完成。
When a sentence comes to me for classification and if none of its features match with the existing features in training then my frequency vector has only zeros.
您应该规范化您的输入,使其在 0 附近形成某种粗略的分布。一种常见的方法是执行此转换:
input_signal = (feature - feature_mean) / feature_stddev
只有当所有特征都恰好处于平均值时才会出现全零。