跳到主要内容

局部邻域平均

K近邻(KNN)回归

不长树、不估计超平面,只在标准化后的面积–楼层空间里找到最近的 K 套房,对它们的总价取平均(或距离加权平均)。

更新日期 2026-08-29 机器学习

这篇能回答什么

K 近邻回归要回答的是:这套房在标准化坐标里最像已经成交的哪几套,那几套总价的局部平均是多少。它和决策树回归走的是相反的几何:树用全局切缝把空间切成矩形叶子,叶均值对整片矩形生效;KNN 没有叶子,预测只活在查询点周围的 K 个邻居里。拟合阶段几乎只做 Z-score 与存表,真正的计算发生在预测时。没有基尼,没有 MSE 切点,也没有 ε 管道。

教学表按「局部平均之后残差有多大」分成三层(表头仍印着类别 A/B/C)。完整个案 370。大残差层 A 70 条(18.92%),中层 B 最瘦,只有 43 条(11.62%),贴合层 C 257 条(69.46%)。C 近七成说明多数查询点的邻居袋里总价比较齐;B 的 43 条是邻域内部已经打架、局部平均最不稳的一薄层,读均值时必须连人数一起写。

什么时候不该用

特征以城市、区域为主时,欧氏距离没有定义,应改CatBoost回归。需要一条最大间隔曲面、并且能接受核映射时,用支持向量机回归。要可打印的面积门槛,用树。Y 是档位标签时改K近邻分类,那里邻居做的是投票而不是平均。没有标签、只想把点收成团,用K-Means 聚类分析——聚类的 K 是簇数,这里的 K 是邻居个数。

如何选择方法

先问坐标是否成立。面积、楼层、总楼层、建筑年份经 Z-score 后,远近有单位一的含义,局部平均说得通。若你真正想要的是「隔得最开的一条 ε 管道」,那是 SVR;若想要「乱切或贪心切出叶子再平均」,那是树集成。KNN 没有任何参数向量可写入方法节,只能写 K、距离和是否标准化。

  • K近邻回归:≥2 个定量特征,K 个邻居的 Y 平均;输出残差三层与 RMSE。

  • 决策树 / 森林回归:全局矩形叶,叶均值对整片叶生效,不是按查询点找邻居。

  • SVR:同样要标准化,但决策来自管壁上的支持向量,不是数邻居。

  • K-Means:无标签;K 表示簇数,与邻居数无关。

输入、输出与限制

输入

因变量必须是定量。特征必须是定量。K 是超参数,不是数据列。有效行数必须严格大于 K,否则每个点的邻居袋装不满。城市、区域没有欧氏含义,不要塞进来。

  • 因变量:正好 1 个定量列(本例总价(万元))。

  • 特征:最少 2 个,最多 30 个定量列。本练习用面积(平米)、楼层、总楼层、建筑年份。

输出

结果表把局部平均后的残差分成 A / B / C:A 70、B 43、C 257,合计 370。这是残差层厚度,不是三类房源。另给出拟合/残差图。默认 K=5、欧氏距离、先做 Z-score。

产品限制

  • 有效行必须 > K,且不少于 20。

  • K 默认 5;K=1 等于抄最近一套的总价,训练误差可以接近 0。

  • 特征一律 Z-score;关掉标准化去对 SPSS,邻居名单会对不上。

  • 超过 8000 行时预测阶段按种子抽样查询点,残差层人数以当次查询为准。

  • 房源 ID、小区名称、城市、区域拒绝作为距离坐标。

案例

研究问题。 综合评价表要一条「像哪几套就报那几套均价」的基线:不估计斜率,也不切面积门槛。研究者关心的是,标准化之后局部平均对多少套房已经够用,还有薄薄一层邻域内部总价打架的点。

工作表「Sheet1」。完整个案 370。残差三层:A 70(18.92%)、B 43(11.62%)、C 257(69.46%)。B 只有约一成一,却是局部平均最不该被对外推广的一层。下载后:Y 勾总价(万元),特征只勾面积、楼层、总楼层、建筑年份;不要勾城市、区域、房源 ID。

下载教学示例表(综合评价)

在 StatsX 中操作

  1. 步骤 1 · 载入可当坐标的住房列

    Sheet1 里先确认面积、楼层、总楼层、建筑年份都是数字。文本型城市不要参与距离。

  2. 步骤 2 · 确认工作台会做 Z-score

    单价若被误勾进特征,未标准化时会吞掉楼层。产品默认标准化;对 SPSS 时必须打开同样的标准化。

  3. 步骤 3 · 选 K近邻回归勿点分类

    目录同时有 K近邻分类。Y 是总价时必须点回归:分类会让邻居投票,叶上不再是万元平均。

  4. 步骤 4 · 只放定量坐标列

    因变量:总价(万元)。特征:面积(平米)、楼层、总楼层、建筑年份。K 保持 5,先看残差层再决定是否改 K。

  5. 步骤 5 · 按最瘦残差层决定是否改 K

    合计应对上 370。B 层若仍是 43 条,加大 K 会把远处不相似的总价拉进平均,C 层变肥不等于预测更好。

工作台载入可作坐标的住房表
评价表进入工作台,准备用定量列当坐标。
列画像确认面积楼层为定量坐标
面积与楼层必须是定量;城市不要进入距离。
目录中选定 K近邻回归
选定 K近邻回归,不要误点 K近邻分类。
为 K近邻回归指定总价与定量坐标
因变量为总价,特征仅为可标准化的定量列。

如何阅读输出

下表是局部平均之后的残差分层,不是户型频数。合计 N=370。A 70(18.92%)邻居袋里总价已经散开,B 43(11.62%)最薄,C 257(69.46%)局部平均贴得近。预测值是这 K 个邻居总价的算术平均(若开启距离加权,则近的权更大),单位仍是万元。

K近邻(KNN)回归结果表
项目类别统计量取值
K近邻(KNN)回归类别 A频数70
K近邻(KNN)回归类别 B频数43
K近邻(KNN)回归类别 C频数257
K近邻(KNN)回归合计有效样本 N370
K近邻(KNN)回归类别 A占比(%)18.92
K近邻(KNN)回归类别 B占比(%)11.62
K近邻(KNN)回归类别 C占比(%)69.46

左右滑动可查看完整表格

教学示例表在 StatsX 工作台中的计算结果口径。

K近邻回归残差分层结果表
工作台人数应与上表三层一致:70 / 43 / 257。
K近邻回归拟合或残差图
拟合图对照局部平均与观测总价;分层人数以表为准。

阅读顺序:是否已标准化 → N 是否远大于 K(370 ≫ 5)→ 最瘦层人数(本例 B=43)→ 训练/测试 RMSE → 高价段残差是否扇形张开。不要把 A/B/C 写成「三类客户」。本页没有系数,也没有叶路径可念。

K 改成 1,训练误差几乎总能再降,那是抄最近一套。K 改成 15,C 层往往会更肥,因为平均窗把尖峰抹平——验证 RMSE 不一定更好。本页数字只对 K=5 成立。再加十几个定量列,最近的五套在高维里不再「近」,应减维或换树/核方法。惰性模型把全部有效行存下来,不能当一条可部署的闭合公式。

理论与公式

先把面积、楼层等列改成零均值单位方差,再量查询点到存表各行的欧氏长度。长度最短的 K 个下标组成邻域 N_K(x)。回归吐出的是这袋邻居的总价平均,不是众数:

距离加权时,权与距离成反比(产品避免除零):

本例 n=370,三层 70/43/257。树把 I(t) 定义成叶内 MSE 再切全局缝,KNN 从不切缝:偏差–方差由 K 调节,K 小方差大,K 大把远处点拉进来、偏差升。分类 KNN 把平均换成投票——那是另一页。覆盖半径随维度上升而膨胀,这就是最多 30 个定量列的产品上限所针对的现象。

注意事项

  • B 层仅 43 条时,不要把这些点上的局部平均写成稳健均价。

  • 未标准化时,量纲大的列会主宰邻居名单。

  • K 必须预先写进分析方案;看完残差层再改 K 属于数据窥探。

  • 城市、装修情况没有欧氏含义,拒绝它们不是缺陷。

  • 惰性方法把全部有效行存下来,预测阶段对大表可能抽样。

  • C 层肥 ≠ 分界清晰;邻域内部可以一半高价一半低价而平均刚好居中。

常见问题

参考文献

  • Cover, T., & Hart, P. Nearest neighbor pattern classification[J]. IEEE Transactions on Information Theory, 1967, 13(1): 21–27.

  • Altman, N. S. An introduction to kernel and nearest-neighbor nonparametric regression[J]. The American Statistician, 1992, 46(3): 175–185.

  • Hastie, T., Tibshirani, R., & Friedman, J. The Elements of Statistical Learning. Springer.