欧氏距离与尺度
欧氏距离度量坐标差平方和的平方根,对特征尺度与高维无关特征敏感。
学习前需要掌握
背景与问题
KNN、K-Means 和许多相似性方法需要比较样本之间的远近。欧氏距离是常见选择,但只有在特征表示与尺度具有合适含义时,远近关系才可能对任务有用。
不同单位、无关特征或极端值都可能改变邻居是谁,所以距离选择与预处理必须一起考虑。
概念定义
欧氏距离是对应坐标差的平方和再开平方。在所有坐标采用同一空间解释时,它对应通常的直线长度;在混合业务特征上,则是一种依赖编码与尺度的数学度量。
距离为零表示当前表示中的坐标相同,不保证两个真实对象完全相同。若重要信息没有被编码,距离方法就无法利用它。
直观理解
先逐项比较差多少,再把这些差合成一个总量。平方避免正负方向互相抵消,同时使大差异更有影响;开方让结果回到相应坐标尺度。
三个坐标差怎样得到距离 5
构造 x=[1,2,3]、y=[4,6,3],差为 [-3,-4,0],距离为 sqrt(9+16+0)=5。第三个坐标相同,因此没有贡献。
若仅把第一列的数值编码扩大 100 倍,却仍使用未调整的欧氏公式,第一列差就从 3 变为 300,邻居关系可能随之改变。这不是对象发生了变化,而是度量对单位编码敏感。
核心原理
一列数值范围特别大时,它的平方差可能盖过其他列。标准化会改变“一个单位差异”在各列的含义,通常有助于尺度敏感模型,但变换参数只能由训练数据学习。
加入无关特征也会增加距离,导致真正有用的差异被噪声淹没。高维中样本距离可能变得相近,不能假设维度越多邻居就越可靠。
类别编号通常不适合直接当连续坐标。例如把三个城市编码为 0、1、2,欧氏距离会引入一个人为顺序;需要使用与类别含义匹配的表示或度量。
异常值和缺失值需要明确处理。距离很远可能是罕见但合法样本,也可能是单位错误;应查数据来源,而不是直接把远点删除。
数学表达
核心表达
计算前通常标准化连续特征,并检查异常值、无关维度和高维距离集中问题。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1确认同维
- 2统一尺度
- 3逐维求差
- 4平方求和
代码对应位置
示例 1欧氏距离与尺度:最小可验证示例:把正文原理映射为可检查的代码行为。
计算与实现步骤
- 确认同维
- 统一尺度
- 逐维求差
- 平方求和
- 开平方
- 解释距离
代码实现
示例 1
欧氏距离与尺度:最小可验证示例
example_01.py用途:把正文原理映射为可检查的代码行为。
import numpy as np
x = np.array([1., 2., 3.])
y = np.array([4., 6., 3.])
print(np.linalg.norm(x - y))代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
把正文原理映射为可检查的代码行为。
y- 目标标签或连续目标值。
Step 1 · 1–4 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
import numpy as np
x = np.array([1., 2., 3.])
y = np.array([4., 6., 3.])
print(np.linalg.norm(x - y))预期输出或运行结果
5.0。 5.0
常见错误 · 3 条
- 未标准化
- 把类别编码纳入欧氏距离
- 高维无关特征过多
实际应用
- KNN
- K-Means
- 相似搜索
常见错误
- 未标准化
- 把类别编码纳入欧氏距离
- 高维无关特征过多
推荐学习资料
参考库不会生成虚假资源或无效外部链接。