我有一个分类问题,我当前的特征向量似乎没有足够的信息。 我的训练集有1万个条目,我正在使用SVM作为分类器(scikit-learn)。
合理的最大特征向量大小(多少维)是多少?
(使用Labtop CPU进行培训和评估)
100?一千10k? 100k? 1M?
答案 0 :(得分:2)
问题不是在某些情况下(即条目)应该具有多少个功能,而是相反:
拥有最佳算法的人不是谁。谁拥有最多的数据。 (Banko和Brill,2001年)
Banko和Brill在2001年对4种不同的算法进行了比较,他们将训练集大小不断增加,并得出了上述结论。
此外,吴安德(Andrew Ng)教授清楚地涵盖了这个话题,我在这里引用:
如果学习算法的差异很大,获得更多训练数据可能会有所帮助。
如果学习算法存在高偏差,那么获取更多训练数据(本身)将无济于事
根据经验,考虑到所有要素都应尽可能多地提供信息(即要素之间不是高度共线的(即)。
我在Scikit-Learn文档中的多个地方和某个地方读过一次,即输入(即样本)的数量必须至少是要素数量(即n_samples > n_features ** 2
)的平方大小。 / p>
尽管如此,特别是对于SVM
,功能数n
与条目数m
是一个重要因素,它指定了最初要使用的内核类型,这是第二条规则尤其是SVM
的经验(同样根据吴安德教授):
n
最高为 10K ,而m
最高为 1K )->使用SVM
无内核(即“ 线性内核”)或使用逻辑回归。n
最多达到 1K ,并且{ {1}}达到 10K )->将m
与高斯内核结合使用。SVM
最高可达 1K ,并且n
> 50K )->创建/添加更多功能,然后使用m
无内核或使用 Logistic回归。