【问题标题】:Why KNN implementation in weka runs faster?为什么 Weka 中的 KNN 实现运行得更快?
【发布时间】:2014-03-12 10:16:31
【问题描述】:

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

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

是否也会导致计算错误?

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

【问题讨论】:

    标签: machine-learning weka knn text-classification


    【解决方案1】:

    问题 1 的答案

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

    使用这样的数据结构,查询的执行效率比以幼稚的方式执行要高得多。

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

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

    问题 2 的答案

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

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

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

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

    【讨论】:

    • 除了构建邻域数据结构之外,“训练”阶段的含义也不清楚。由于这是一种与 OP cmets 一样的惰性学习算法,因此在任何类型的训练阶段都没有要拟合或校准的参数集。您只需根据构成分类器的数据集计算任何传入的观察(无论您是否想将其称为“训练”观察)。
    • @George,感谢您的通过,您能否详细说明您的第二个答案,因为一种方法是通过信息增益等方式通过特征选择来删除不相关的特征,它也可以提高性能,我在某个地方读取以将特征的权重乘以其频率(TF-IDF),这也可能使权重更大的特征更重要。提前谢谢:)
    • @EMS 让我更担心的是 K-Neighbors,即使我们假设它在内部实现了一个有效的数据结构,正如 George 在分类计算距离时所说的那样 10(K=10 )邻居应该比拟合边际函数(SVM)花费更多的时间,但我观察到两者几乎相同。除非我们看到即将发生的事情,否则我们无法确定其邻居
    猜你喜欢
    • 2021-10-14
    • 2019-11-01
    • 2013-03-03
    • 2012-09-13
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2012-07-13
    相关资源
    最近更新 更多