数据挖掘KNN分类器

时间:2014-01-14 18:47:54

标签: database algorithm data-mining knn

假设一家为保险公司工作的数据分析师被要求建立一个预测模型,用于预测客户是否会购买移动房屋保险单。他/她尝试了具有不同邻居数量的kNN分类器(k = 1,2,3,4,5)。他/她在训练数据上得到以下F分数:(1.0; 0.92; 0.90; 0.85; 0.82)。基于此,分析师决定部署kNN,k = 1。这是一个不错的选择吗?在这种情况下,您如何选择最佳邻居数?

1 个答案:

答案 0 :(得分:2)

使用整个训练集选择预测算法的参数不是一个好主意,因为结果将偏向于该特定训练集,并且没有关于泛化性能的信息(即,针对看不见的情况的表现)。您应该应用交叉验证技术,例如10倍交叉验证以选择范围内的最佳K(即具有最大F值的K)。 这包括将您的训练数据分成10个相等的部分,保留9个部分用于训练,1个用于验证。迭代使得每个部分都被遗漏以进行验证。如果你采取足够的折叠,这也可以让你获得F值的统计数据,然后你可以测试不同K值的这些值是否具有统计显着性。

参见例如也: http://pic.dhe.ibm.com/infocenter/spssstat/v20r0m0/index.jsp?topic=%2Fcom.ibm.spss.statistics.help%2Falg_knn_training_crossvalidation.htm

然而,这里的细微之处在于,预测数据点的数量与K值之间可能存在依赖关系。因此,如果您应用交叉验证,则使用训练集的9/10进行训练...不确定是否已对此进行任何研究以及如何在最终训练集中进行校正。无论如何,大多数软件包仅使用上述技术,例如请参阅链接中的SPSS。 一种解决方案是使用留一法交叉验证(每个数据样本省略一次用于测试),在这种情况下,您有N-1个训练样本(原始训练集有N)。

相关问题