SPSSPRO,让数据分析更简单,问卷调查类数据分析不再愁 产品介绍 帮助中心 客户端
微信登录
  • 产品简介

  • 我的数据

  • 数据处理

  • 数据分析

    • 描述性分析

    • 问卷分析

    • 综合评价

    • 差异性分析

    • 相关性分析

    • 预测模型

    • 统计建模

    • 计量经济模型

    • 医学统计模型

    • 机器学习分类

    • 机器学习回归

      • 决策树回归
      • 随机森林回归
      • adaboost回归
      • 梯度提升树(GBDT)回归
      • ExtraTrees回归
      • CatBoost回归
      • K近邻(KNN)回归
        • 1、作用
        • 2、输入输出描述
        • 3、案例示例
        • 4、案例数据
        • 5、案例操作
        • 6、输出结果分析
        • 7、注意事项
        • 8、模型理论
        • 9、参考文献
      • bp神经网络回归
      • 支持向量机(SVR)回归
      • XGBoost回归
      • LightGBM回归
      • 线性回归(梯度下降法)
    • 规划求解

    • 研究模型

    • 信号分析

    • 自定义算法

K近邻(KNN)回归

操作视频
SPSSPRO教程-K近邻(KNN)回归

# 1、作用

k 近邻算法,是将 K 个最近邻实例进行平均处理预测的一种有监督算法。

# 2、输入输出描述

输入:自变量 X 为 1 个或 1 个以上的定类或定量变量,因变量 Y 为一个定量变量。
输出:模型输出的结果值及模型预测效果。
​

# 3、案例示例

研究“幸福感”的影响因素,有四个变量可能对幸福感有影响,他们分别是:经济收入、受教育程度、身体健康、情感支持。建立 knn 回归模型来预测幸福度。

# 4、案例数据


KNN 回归案例数据

# 5、案例操作


Step1:新建分析;
Step2:上传数据;
Step3:选择对应数据打开后进行预览,确认无误后点击开始分析;

step4:选择【K 近邻回归】;
step5:查看对应的数据数据格式,按要求输入【K 近邻回归】数据(注:K 近邻中定类自变量建议进行编码,定量变量建议标准化);
step6:进行参数设置(“更多设置”里的参数在客户端可进行设定)
step6:点击【开始分析】,完成全部操作。

# 6、输出结果分析

输出结果 1:模型参数


图表说明: 上表展示了训练该模型的时候,输入的参数以及训练所耗的时间。

输出结果 2:模型评估结果

图表说明: 上表中展示了训练集和测试集的预测评价指标,通过量化指标来衡量 k 近邻(KNN)的预测效果。
● MSE(均方误差): 预测值与实际值之差平方的期望值。取值越小,模型准确度越高。
● RMSE(均方根误差):为 MSE 的平方根,取值越小,模型准确度越高。
● MAE(平均绝对误差): 绝对误差的平均值,能反映预测值误差的实际情况。取值越小,模型准确度越高。
● MAPE(平均绝对百分比误差): 是 MAE 的变形,它是一个百分比值。取值越小,模型准确度越高。
● R²: 将预测值跟只使用均值的情况下相比,结果越靠近 1 模型准确度越高。
分析:
训练集测试集的各预测评价指标值相差不大,就平均绝对百分比误差来看,误差率仅 8%左右,模型预测良好。
​

输出结果 3:测试数据预测结果

图表说明: 上表格为预览结果,只显示部分数据,全部数据请点击下载按钮导出。
上表展示了 K 近邻模型对测试数据的预测结果,第一列是预测结果,第二列是因变量真实值,其余列是各自变量的值。
​

输出结果 4:测试数据预测图
​


图表说明:上图中展示了 K 近邻回归对测试数据的预测情况。
​

输出结果 5:模型预测与应用(此功能只在客户端支持使用)
注:当无法进行预测功能时,可检查数据集中是否存在定类变量或者缺失值:
● 当存在定类变量时,请在用于训练模型的数据集和用于预测的数据集中将变量编码,再进行操作。
(SPSSPRO:数据处理->数据编码->将定类变量编码为定量)
● 当用于预测数据的数据集中存在缺失值时,请删去缺失值再进行操作。

情况 1:在上面模型评估后,模型分类结果较好,具有实用性,这时我们将该模型进行应用。点击【模型预测】上传文件可以直接得到预测结果。

经上述操作后,得到以下结果:

​

情况 2:若是上传的数据包括因变量真实值,不仅仅可以得到预测结果,还可以得到当前应用数据预测评估效果。

经上述操作后,得到以下结果:

​

# 7、注意事项

  • 若在训练划分时对数据进行洗牌打乱数据顺序,会导致 K 近邻具有随机性,每次运算的结果不一样。若需要保存本次训练模型,需要使用 SPSSPRO 客户端进行。
  • K 近邻的参数修改需要使用 SPSSPRO 客户端进行。

# 8、模型理论

KNN做回归和分类的主要区别在于最后做预测时候的决策方式不同。KNN做分类预测时,一般是选择多数表决法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别。KNN做回归时,一般是选择平均法,即最近的K个样本的样本输出的平均值作为回归预测值。但它们的理论是一样的。
模型介绍:
K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的平均值作为预测值。
看一个最简单的例子,当k=1时,即新实例的类别由里它最近的训练实例的值决定。当k=3时,预测值为最近三个训练样本的值求平均;当k=5时,预测值为最近三个训练样本的值求平均。这里面“最近距离”的定义,是由距离公式求出来的值。
​

K 值的选取:
如何选择一个最佳的 K 值取决于数据。一般情况下,在分类时较大的 K 值能够减小噪声的影响,但会使类别之间的界限变得模糊。一个较好的 K 值能通过各种启发式技术来获取。
在二元(两类)分类问题中,选取 k 为奇数有助于避免两个分类平票的情形。在此问题下,选取最佳经验 k 值的方法是自助法(Bootstrap)。
​

距离公式:
这里面“最近距离”来的定义,是由距离公式求出来的值。距离度量除了常用的欧式距离,还可以使用曼哈顿距离和切比雪夫距离。
​

求解算法:
既然我们要找到 k 个最近的邻居来做预测,那么我们只需要计算预测样本和所有训练集中的样本的距离,然后计算出最小的 k 个距离即可,接着多数表决,很容易做出预测。这个方法的确简单直接,在样本量少,样本特征少的时候有效。但是在实际运用中很多时候用不上,为什么呢?因为我们经常碰到样本的特征数有上千以上,样本量有几十万以上,如果我们这要去预测少量的测试集样本,算法的时间效率很成问题。因此,这个方法我们一般称之为蛮力实现。比较适合于少量样本的简单模型的时候用。
蛮力实现在特征多,样本多的时候很有局限性,我们可以选择 KD 树或者球树来实现。

#
9、参考文献

[1]Scientific Platform Serving for Statistics Professional 2021. SPSSPRO. (Version 1.0.11)[Online Application Software]. Retrieved from https://www.spsspro.com.
[2]Hall P, Park BU, Samworth RJ. Choice of neighbor order in nearest-neighbor classification. Annals of Statistics. 2008, 36 (5): 2135–2152. doi:10.1214/07-AOS537.
[3]Everitt, B. S., Landau, S., Leese, M. and Stahl, D.(2011)Miscellaneous Clustering Methods, in Cluster Analysis, 5th Edition, John Wiley & Sons, Ltd, Chichester, UK.

建议反馈