2014-01-14 103 views
-1

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

+2

现在,这看起来像功课 – goncalopp

+0

@ user3195317这可能是一个星期的晚了,但* SO不是要求做功课的地方!*请不要那么做!下次阅读*如何问问页面! –

+0

@ user3195317如果你会根据指导方针改善你的问题,我认为它*可以*值得回答。下一次你提出一个问题时,不要忽略这些规则。谢谢。 –

回答

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个),一种解决方案是使用leave-one-out交叉验证(每个数据样本不需要进行一次测试)。