为什么在weka中实施KNN会更快?

时间:2014-02-13 13:38:08

标签: machine-learning weka knn text-classification

1)正如我们所知,KNN在训练阶段不执行任何计算,而是推迟所有分类计算,因此我们将其称为懒惰学习者。分类比训练需要更多的时间,但是我发现这个假设几乎与weka相反。 KNN在训练中花费的时间多于测试时间。

为什么以及如何在weka中的KNN在分类中表现得更快,而一般来说它应该表现得更慢?

是否也会导致计算错误?

2)当我们说Knn中的特征加权可以提高高维数据的性能时,我们说它是什么意思?我们是指具有高信息增益的功能选择和选择功能吗?

1 个答案:

答案 0 :(得分:4)

回答问题1

我的猜测是Weka实现使用某种数据结构来有效地执行(近似)最近邻居查询。

使用这样的数据结构,可以比以天真的方式执行查询更有效地执行查询。

此类数据结构的示例包括KD treeSR Tree

在训练阶段,必须创建数据结构,因此比分类需要更多的时间。

回答问题2

(我不确定您是否参考 预测性能 或性能,如 加速 由于两者都是相关的,我将在答案中解决它们。)

对较不相关的功能使用较高权重,较低相关功能使用较低权重可以提高 预测性能

提高 预测性能 的另一种方法是执行功能选择。使用Mutual Information或其他类型的单变量关联(如连续变量的Pearson correlation)是执行特征选择的最简单,最简单的方法。请注意,减少变量数量可以在 计算时间 方面提供显着的 加速

当然,您可以同时执行这两项操作,即首先执行功能选择,然后对其余功能使用权重。例如,您可以使用互信息来对剩余要素进行加权。在文本分类的情况下,您还可以使用TF-IDF来加权您的功能。