k在k近邻算法中的应用

use*_*183 5 classification knn

我有7个类需要分类,我有10个功能.在这种情况下我是否需要使用k的最佳值,或者我必须运行KNN以获得介于1和10(大约10)之间的k值,并在算法本身的帮助下确定最佳值?

Nom*_*Sim 11

除了文章我张贴在评论中有这一项,以及该建议:

k的选择非常关键 - k的小值意味着噪声对结果的影响更大.一个大的值使它在计算上变得昂贵并且有点击败了KNN背后的基本哲学(近点的点可能具有相似的密度或类).选择k的简单方法是设置k = n ^(1/2).

它将在很大程度上取决于您的个案,有时最好通过k的每个可能值来自行决定.

  • 如上所述,您应该将n ^ 0.5(其中n =没有数据实例,而不是要素)作为k的起始值并相应地更改它. (3认同)

Cha*_*n P 6

在k-NN算法中需要注意的重要事项是,在k-NN算法中确定k的值时,特征的数量和的数量都不起作用.k-NN算法是一种ad-hoc分类器,用于根据距离度量对测试数据进行分类,即如果与其他类相比,更接近测试样本的Class-1训练样本数量更多,则测试样本被归类为Class-1训练样本.对于Eg:如果k = 5个样本的值,则基于距离度量选择5个最接近的训练样本,然后对每个类的大多数样本进行投票.因此,如果3个样本属于1类,2个属于5类,则该测试样本被归类为1类.因此,k的值表示对测试样本进行分类所需的训练样本的数量.

提出您的问题,k的值是非参数的,选择k值时的一般经验法则是k = sqrt(N)/ 2,其中N代表训练数据集中的样本数.我建议的另一个提示是尝试保持k odd的值,以便在选择类之间没有关系,但这表明训练数据在类之间高度相关并使用简单的分类算法(如k-) NN会导致分类性能不佳.