k个最近邻居回归固有地慢吗?

我正在尝试在相当大的数据集上使用scikit Learn中的k个最近邻居实现。问题在于,预测要花很长时间,几乎和没有意义的训练一样长。这是算法的问题,还是scikit learning不是针对大型数据集(不支持GPU)的事实。

有关更多信息,我尝试基于x,y,z和对象标签预测激光雷达强度​​。每次激光雷达扫描都有100,000个点,因此我试图预测每个点的强度。

snowboyz 回答:k个最近邻居回归固有地慢吗?

尝试使scikit-learn的KNeighborsClassifier运行更快的东西:

  • 不同的algorithm参数:kd_treeball_tree用于低维数据,brute用于高维数据
  • n_jobs参数。使用较大的n_jobs不一定会使事情变快,有时反之亦然。
  • 确保您使用的是最新版本:v0.22中的性能已得到改进,并且某些优化功能尚未合并(scikit-learn#14543
  • 使用外部近似最近邻居库(例如Annoy)以及使用metric="precomputed"预先计算的稀疏距离
,

最近邻居回归中计算量最大的部分是找到您要预测的数据点x的最近邻居,因为暴力搜索是O(training data size)。一种常见的策略是将训练数据预处理为数据结构,例如为快速近邻查询而设计的kdtree。如果您的数据在3D欧几里得空间中,则可能要考虑对这种数据结构使用四叉树。有关使用四叉树的最近邻居搜索,请参见this repository

本文链接:https://www.f2er.com/2977057.html

大家都在问