k在k近邻算法中的应用

问题描述 投票:5回答:3

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

classification knn
3个回答
11
投票

除了the article我在评论中发布了this one以及暗示:

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

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


5
投票

在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会导致分类性能不佳。


0
投票

在KNN中,找到k的值并不容易。较小的k值意味着噪声对结果的影响较大,而较大的值使其计算成本较高。

数据科学家通常选择:

1.如果班级数是2,则为奇数

2.另一种选择k的简单方法是设置k = sqrt(n)。其中n =训练数据中的数据点数。

希望这会帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.