【问题标题】:Computation of Error rate in nearest neighbor classification algorithm最近邻分类算法中错误率的计算
【发布时间】:2013-10-12 16:19:41
【问题描述】:

我正在尝试为 K 最近邻算法找到 K 的最佳值。 我一直在 Matlab 上为不同数量的班级成员运行这种分类方法 但是当我们使用不同的 K 值时,我需要计算错误率。 我试图以这个想法为例:

我有以下数据集:

1 3 1

2 3 2

2 1 2

3 3 2

3 4 1

3 3 2

2 2 2

第一列是x轴第二列是y轴第三列是标签 我需要使用 K-NN 算法对点 (x,y) 进行分类。我正在使用不同的 K 值。 我的问题是我是否知道该点 (4,1) 不包含在源数据集中 但我知道它来自类标签 1。如何计算 基于Leave-one-out-cross-validation方法的某个K值。

提前非常感谢您

问候

里纳迪

【问题讨论】:

    标签: algorithm machine-learning pattern-matching nearest-neighbor


    【解决方案1】:

    留一法交叉验证的意思很简单,给定您的模型m、大小为n 的训练集T 和一些评估指标(错误度量)E,您可以按如下方式进行:

    1. 对于来自T 的每个点(x,y)
      1. 您在 T\(x,y) 上训练您的模型 m(除 1 中的所有分数之外的所有分数。)
      2. 你检查E( m , (x,y) ),例如你检查m是否能够正确地确定y给定x(然后E=0)或不(和E=1)
    2. 您计算所有分析点的所有 E 值的平均值

    因此,您得到了一个平均泛化误差估计值 - 您检查了您的模型在预测一个点的标签方面的能力,并在训练集的其余部分上进行了训练。

    【讨论】:

    • 我面临这个实现的一个问题,因为如果你有非常庞大的训练数据集,它会花费很多时间。我的实现具有非常高的复杂性。您的算法是否有任何分而治之的实现,而不是为每个点都这样做,我们应该更好地将其划分为一组点。问候
    • 这不是“我的实现”,这是一种留一法的定义,别无他法。这种方法是一般 n 折交叉验证的边界情况,您将数据分成 n 个大小相等的块,并在一个块上测试您的模型 n 次,然后在整个其余部分上进行训练。如果您采用 n=size 的数据,您将得到留一策略。最常见的选择之一是 n=10(训练 90% 测试 10%)
    猜你喜欢
    • 1970-01-01
    • 2020-09-10
    • 2018-05-09
    • 2018-07-10
    • 1970-01-01
    • 2011-06-23
    • 2012-06-27
    • 2018-01-30
    • 2014-02-23
    相关资源
    最近更新 更多