内核化SVM需要计算数据集中每个点之间的距离函数,这是的主要成本。距离的存储是内存的负担,因此它们是在运行中重新计算的。值得庆幸的是,大多数时候只需要最靠近决策边界的点即可。经常计算的距离存储在缓存中。如果缓存被颠簸,则运行时间将达到。O(n个特征 × n 3个观测值)Ø( ñ特征× n2观察)Ø( ñ特征× n3观察)
您可以通过以下方式调用SVR来增加此缓存:
model = SVR(cache_size=7000)
通常,这是行不通的。但是,一切并没有丢失。您可以对数据进行二次采样,然后将其余数据用作验证集,也可以选择其他模型。超过200,000个观察范围,选择线性学习者是明智的。
通过近似内核矩阵并将其馈送到线性SVM,可以近似内核SVM。这使您可以在线性时间内在准确性和性能之间进行权衡。
实现此目标的一种流行方法是使用kmeans / kmeans ++找到的100个左右的群集中心作为内核功能的基础。然后将新的导出特征输入到线性模型中。这在实践中效果很好。诸如sophia-ml和vowpal wabbit之类的工具就是Google,Yahoo和Microsoft的工作方式。输入/输出成为简单线性学习者的主要成本。
在大量数据中,非参数模型对大多数问题的表现大致相同。例外是结构化输入,例如文本,图像,时间序列,音频。
进一步阅读