2012-07-19 189 views
3

我有7个类需要分类,并且iam有10个特征。在这种情况下是否需要使用k的最佳值,还是必须运行kN值在1到10之间(10左右)的KNN,并借助算法本身确定最佳值?k最近邻居算法k的值

+0

可能想看看[这篇文章](http://www.kyb.tuebingen.mpg.de/fileadmin/user_upload/files/publications/Final_version_maier_5681 [0] .pdf) – NominSim 2012-07-19 20:44:26

+0

哦不,不幸的是,我不是足够的知识阅读和理解这篇论文。请问有人可以帮我:( – user574183 2012-07-19 20:48:04

回答

8

除了the article我张贴的评论有this one以及这表明:

k的

选择是非常重要的 - K值小意味着噪声会对结果较高的影响力。一个很大的值使得它在计算上花费很大,并且有点击败了KNN背后的基本原理(即接近的点可能具有类似的密度或类)。选择k的简单方法设为k = n ^(1/2)。

这将取决于你的个人情况,有时最好是贯穿每个可能的k值,并为你自己决定。

+0

请问能否告诉我n是否代表班数? – user574183 2012-07-20 06:00:18

+0

您是根据功能进行分类的,所以n代表功能数。 – NominSim 2012-07-20 13:42:28

+0

如果我有93个功能比97是一个合适的选择,或者我应该选择93^1/2? – 2015-05-05 12:58:37

4

在K-NN算法要注意重要的是那的数量特征的数量都没有确定ķ的K-NN算法的价值发挥作用。 k-NN算法是用于基于距离度量对测试数据进行分类的自组织分类器,即,如果与其他类相比更接近测试样本的第一类训练样本的数量更多,则测试样本被分类为第一类训练样本。例如:如果k = 5个样本的值,则基于距离度量选择5个最接近的训练样本,然后对每个类别的大多数样本进行投票。因此,如果3个样本属于1类,2个属于5类,则该测试样本被归类为1类。因此,值k指示分类测试样本所需的训练样本的数量。

编辑你的问题,的ķ值为非参数和拇指的在选择的ķ的值的一般规则是K = SQRT(N)/ 2,其中Ñ看台您训练数据集中的样本数。我建议的另一个建议是尝试保持k odd的值,以便在选择一个类之间没有联系,但这指的是训练数据在类之间高度相关并使用简单的分类算法(例如k- NN会导致较差的分类性能。