Answers:
内核方法可用于有监督和无监督的问题。众所周知的例子分别是支持向量机和核谱聚类。
内核方法提供了一种在变换后的特征空间中使用线性算法的结构化方法,对于该特征空间,变换通常是非线性的(并且是到较高维空间的)。这种所谓的内核技巧带来的主要优势是可以以合理的计算成本找到非线性模式。
请注意,我说的计算成本是合理的,但不可忽略。内核方法通常使用个训练实例数构造一个内核矩阵。因此,内核方法的复杂度是训练实例数量的函数,而不是输入维数的函数。例如,支持向量机的训练复杂度在和。对于很大的问题,目前这种复杂性令人望而却步。
当维数较大且样本数相对较少(例如,小于一百万)时,从计算角度来看,这使核方法非常有趣。
对于非常高的维数问题,例如10000
您在问题中提到的维数,通常无需映射到更高维的特征空间。输入空间已经足够好了。对于此类问题,线性方法的预测性能几乎相同,速度快了几个数量级。这些方法的示例可以在LIBLINEAR或Vowpal Wabbit中找到。
当您在高维输入空间中有许多样本时,线性方法特别有趣。当您只有样本时,使用非线性核方法也很便宜(因为很小)。如果您有维度中的样本,则内核方法将不可行。
对于具有许多训练实例的低维问题(所谓的大小问题),线性方法可能会产生较差的预测准确性。对于此类问题,与标准SVM相比,诸如EnsembleSVM之类的集成方法以大大降低的计算成本提供了非线性决策边界。
gamma
对于RBF内核。的最佳值gamma
与输入尺寸的数量有关。最常见的调整方法是交叉验证。如果对gamma
降维和不降维使用相同的值,则可能是错误的。
grid.py
in libsvm
包进行交叉验证。在大多数情况下,对于高维数据,此级别gamma
始终很小,例如0.00001
。
EnsembleSVM
,是否需要使交叉验证程序成为多线程?而且我认为在预测阶段,以批处理和多线程或多机预测巨大数据会很好吗?
esvm-train
和中启用了多线程esvm-predict
。要禁用多线程,请在这些工具中使用以下标志:-threads 1
。
RBF
在中使用内核libsvm
,因为它总是过拟合,则分类器会在测试集中实现较高的准确性,但准确性较低。而且,如果我在分类器之前进行降维,并且降维接近训练样本的数量,则分类器可能会在训练和测试集之间获得良好的收益。结果是否符合大多数经验结果?谢谢。