
K 最近邻 (KNN) 平台使用给定观测的局部邻域中观测的响应来预测该观测的响应值。它可用于对分类响应进行分类以及预测连续响应。
KNN 是一种非参数、有监督的机器学习算法。它基于以下假设:某些参数(观测值)的相似性反映了其他参数(预测)的相似性。为了满足这一假设,KNN 对给定观测值与所有其他观测值之间的 k 个最小距离进行排序。
因此,K 最近邻可以对具有不规则预测边界的观测进行分类。但是,由于算法对不相关的预测变量很敏感,因此预测变量的选择可能会影响您的结果。
计算距离
JMP pro 17 使用欧几里德距离来计算预测变量值与其他变量值之间的距离。在 2D 空间中,(x1, y1) 和 (x2, y2) 之间的欧几里德距离d很简单:
d = sqrt((x2-x1)^2 + (y2-y1)^2)
欧几里得方法要求所有值都是实数。
做出预测
KNN 根据其响应类型给出预测。
- 持续响应
JMP 将预测值作为 k 个最近邻的响应的平均值。每个连续预测变量都按其标准差进行缩放。连续预测变量的缺失值将替换为该预测变量的平均值。
- 明确回应
在 JMP 中,预测值是 k 个最近邻的最频繁响应级别。如果存在多个顶级响应,则通过随机选择这些级别之一来分配预测响应。
k 值或 n_neighbors
不同的 k 值可以给出不同的预测。在JMP中,您只需指定k的最大数量。对于每个 k,1 ≤ k ≤ k_max,JMP 仅使用训练集观测值构建模型。这些模型中的每一个都用于对验证集观察结果进行分类。验证集结果用于选择误分类率最低(也称为最佳 k)的模型。
JMP 建模中 KNN 的验证
您可以添加数值列作为 JMP Pro 中 KNN 建模的验证。 JMP 在建模之前使用验证将数据划分为集合,以减少过度拟合并选择良好的预测模型。对于 KNN,此功能是可选的。然而,过度拟合会导致训练和预测之间的不匹配,即算法对训练数据过于特定,导致预测不太准确。
对于KNN,可以通过以下方法将数据划分为两个或三个集合:
|
方法
|
放
|
功能
|
|
训练和调整
|
训练
|
估计模型参数
|
|
验证
|
在模型拟合算法中调整模型参数,最终选择具有良好预测能力的模型
|
|
训练、调整和评估
|
训练
|
估计模型参数
|
|
验证
|
在模型拟合算法中调整模型参数,最终选择具有良好预测能力的模型
|
|
测试
|
独立评估拟合模型的性能
|
在 JMP 文档中了解有关验证的更多信息: Make Validation Column 平台示例 (jmp.com)
例子
在此示例中,我们希望使用 KNN 根据客户的财务历史记录将客户分类为良好风险和不良风险。
- 选择帮助 > 示例数据文件夹并打开Equity.jmp 。
- 选择分析 > 预测建模 > K 最近邻。
- 选择“BAD”并单击“Y”,“响应” 。这是要分析的值。
- 选择LOAN和CLNO ,然后单击X,因子。这是预测变量。
- 选择验证并单击验证。这是在建模之前将数据划分为集合的值,以避免过度拟合并选择良好的预测模型。我们在示例中使用了训练、调整和评估方法。
- 单击“确定” 。
保存预测方程
- 右键单击“BAD”红色小三角并选择发布预测公式。
- 在“邻居数量 K”旁边,保留默认值 7。
- 单击“确定” 。
预测方程保存在Formula Depot中。您可以使用 Formula Depot 中的“模型比较”选项,将发布到 Formula Depot 的替代模型的性能与 K = 7 最近邻模型的性能进行比较。有关 Formula Depot 的更多信息,请参见帮助/JMP 文档库,第 3763 页。
如果有兴趣,可以回到步骤4。这次把所有参数放在LOAN和CLNO之间,作为X,Factor。发生了什么变化以及为什么?
舒然,
评论者:Jeremy T. @jeteez
2024 年 1 月,基于 JMP(R) Pro 17.2.0
本文不反映 JMP Statistical Discovery 或 SAS Institute 的立场和观点。