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

weka 中的 KNN 为什么以及如何在分类中执行得更快,而通常它应该执行得更慢?

它是否也会导致计算错误?

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

最佳答案

问题 1 的答案

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

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

这种数据结构的例子是 KD treeSR Tree

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

问题 2 的答案

(我不确定您是指 预测性能 还是 加速 中的性能。由于两者都是相关的,我将在我的回答中同时解决它们。)

对最相​​关的特征使用较高的权重,对不太相关的特征使用较低的权重可以提高 预测性能

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

当然,你可以两者都做,即先进行特征选择,然后对其余特征使用权重。例如,您可以使用互信息来加权剩余特征。在文本分类的情况下,您还可以使用 TF-IDF 对您的特征进行加权。

关于machine-learning - 为什么weka中的KNN实现运行得更快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21755879/

10-12 23:11