我正在尝试为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。基于留一法交叉验证,我如何计算特定K值的错误率?
非常感谢您的帮助
此致
敬礼
@隐藏人名
回答:
留一法交叉验证的含义简单来说,就是给定你的模型m
,大小为n
的训练集T
和某种评估指标(错误度量)E
,你按以下步骤进行:
- 对于
T
中的每个点(x,y)
:- 你在
T\(x,y)
(除了在1中取出的点之外的所有点)上训练你的模型m
- 你检查
E( m , (x,y) )
,例如你检查m
是否能够正确地根据x
确定y
(这时E
=0),或者不能(这时E
=1)
- 你在
- 你计算所有分析点的
E
值的平均值
结果是你得到了一个平均泛化错误估计——你检查了你的模型在用训练集的其余部分训练后,能否很好地预测一个点的标签。