勾股定理
公式
c2=a2+b2或c=a2+b2 c^2 = a^2 + b^2 \quad \text{或} \quad c = \sqrt{a^2 + b^2} c2=a2+b2或c=a2+b2
欧氏距离越小,相似度越高(距离型指标)
例子
例:假设有一个梯子依靠在墙上,梯子的长度是 5 米,梯子底部距离墙的距离是 3 米,那么梯子顶部距离地面的高度是多少?
在这种场景下,我们要先找到斜边(c , 因为梯子是斜靠在墙上,所以斜边就是梯子的长度),假设地面是x轴,墙是y轴,那么梯子顶部距离地面的高度就是y轴的高度。
5=32+y25 = \sqrt{3^2 + y^2}5=32+y2
52=32+y25^2 = 3^2 + y^252=32+y2
25=9+y225 = 9 + y^225=9+y2
25−9=y225 - 9 = y^225−9=y2
16=y216 = y^216=y2
4=y4 = y4=y
由此得出,梯子顶部距离地面的高度是4米。
常见问题
问题: 在现实生活中,我们要怎么判断公式中的 a、b、c 的位置?
答: 先找到两个边形成的直角,也就是 90 度的夹角,其两条边即可算作 a、b,另外一条边也就是我们的斜边 c。
问题: 如果遇到不规则的三角形(如:锐角、钝角),该如何计算某条边的距离?
答: 勾股定理只能计算出直角三角形,如果需要计算其他不规则三角形,考虑 余弦定理,余弦定理可覆盖所有类型的三角形。
欧氏距离
- 欧氏距离实际上就是勾股定理在多维度空间的扩展和复用。
公式
d=(x1−x2)2+(y1−y2)2+⋯+(n1−n2)2 d = \sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2 + \cdots + (n_1 - n_2)^2} d=(x1−x2)2+(y1−y2)2+⋯+(n1−n2)2
例题一:短视频兴趣相似度
例题:某短视频 App 的视频标签包括 搞笑类、美女、知识类、科学类 。现在希望衡量不同用户之间的兴趣相似度。
为了便于计算,我们先把"用户对每个标签的偏好"量化成数值。这里用 0/1 表示是否喜欢(1=喜欢,0=不喜欢),统计如下:
| 用户 | 搞笑类 | 美女 | 知识类 | 科学类 |
|---|---|---|---|---|
| 用户A | 1 | 1 | 0 | 0 |
| 用户B | 1 | 0 | 1 | 0 |
| 用户C | 0 | 1 | 1 | 1 |
这样每个用户都可以看作一个向量(例如用户A=[1,1,0,0])。接下来就可以用欧氏距离计算任意两位用户之间的"距离",距离越小表示兴趣越相似。
距离计算
- A和B的距离:
d=(1−1)2+(1−0)2+(0−1)2+(0−0)2=0+1+1+0=2≈1.414 d = \sqrt{(1 - 1)^2 + (1 - 0)^2 + (0 - 1)^2 + (0 - 0)^2} = \sqrt{0 + 1 + 1 + 0} = \sqrt{2} \approx 1.414 d=(1−1)2+(1−0)2+(0−1)2+(0−0)2 =0+1+1+0 =2 ≈1.414
- A和C的距离:
d=(1−0)2+(1−1)2+(0−1)2+(0−1)2=1+0+1+1=3≈1.732 d = \sqrt{(1 - 0)^2 + (1 - 1)^2 + (0 - 1)^2 + (0 - 1)^2} = \sqrt{1 + 0 + 1 + 1} = \sqrt{3} \approx 1.732 d=(1−0)2+(1−1)2+(0−1)2+(0−1)2 =1+0+1+1 =3 ≈1.732
- B和C的距离:
d=(1−0)2+(0−1)2+(1−1)2+(0−1)2=1+1+0+1=3≈1.732 d = \sqrt{(1 - 0)^2 + (0 - 1)^2 + (1 - 1)^2 + (0 - 1)^2} = \sqrt{1 + 1 + 0 + 1} = \sqrt{3} \approx 1.732 d=(1−0)2+(0−1)2+(1−1)2+(0−1)2 =1+1+0+1 =3 ≈1.732
由此得出:用户A和用户B的距离最小,故A与B兴趣最为相似。
问题: 假设用户A喜欢美女类的短视频,相反,用户B却是讨厌,那么欧氏距离结果会不会失真?
答: 会。欧氏距离只看数值差,不看 "偏好方向"。如果把 "讨厌" 和 "中立" 都记为0,就会失真。可改为 喜欢=1、讨厌=-1、中立=0,或使用 余弦相似度(推荐)。
例题二:银行客户分群
例题:某银行计划发放金卡。现有客户的存款与年消费数据,请据此区分高端客户与普通客户。
| 客户 | 存款(万元) | 年消费(万元) |
|---|---|---|
| 客户A | 320 | 95 |
| 客户B | 280 | 88 |
| 客户C | 35 | 12 |
| 客户D | 42 | 16 |
| 客户E | 260 | 80 |
| 客户F | 28 | 9 |
可先设定一个金卡"基准客户"(如:存款300、年消费90),再计算每位客户到基准点的欧氏距离;距离越近,越接近金卡客群。
客户A:
d=(320−300)2+(95−90)2=400+25=425≈20.6155 d = \sqrt{(320 - 300)^2 + (95 - 90)^2} = \sqrt{400 + 25} = \sqrt{425} \approx 20.6155 d=(320−300)2+(95−90)2 =400+25 =425 ≈20.6155
客户B:
d=(280−300)2+(88−90)2=400+4=404≈20.0998 d = \sqrt{(280 - 300)^2 + (88 - 90)^2} = \sqrt{400 + 4} = \sqrt{404} \approx 20.0998 d=(280−300)2+(88−90)2 =400+4 =404 ≈20.0998
客户C:
d=(35−300)2+(12−90)2=70225+6084=76309≈276.2408 d = \sqrt{(35 - 300)^2 + (12 - 90)^2} = \sqrt{70225 + 6084} = \sqrt{76309} \approx 276.2408 d=(35−300)2+(12−90)2 =70225+6084 =76309 ≈276.2408
客户D:
d=(42−300)2+(16−90)2=66564+5476=72040≈268.4027 d = \sqrt{(42 - 300)^2 + (16 - 90)^2} = \sqrt{66564 + 5476} = \sqrt{72040} \approx 268.4027 d=(42−300)2+(16−90)2 =66564+5476 =72040 ≈268.4027
客户E:
d=(260−300)2+(80−90)2=1600+100=1700≈41.2311 d = \sqrt{(260 - 300)^2 + (80 - 90)^2} = \sqrt{1600 + 100} = \sqrt{1700} \approx 41.2311 d=(260−300)2+(80−90)2 =1600+100 =1700 ≈41.2311
客户F:
d=(28−300)2+(9−90)2=73984+6561=80545≈283.8045 d = \sqrt{(28 - 300)^2 + (9 - 90)^2} = \sqrt{73984 + 6561} = \sqrt{80545} \approx 283.8045 d=(28−300)2+(9−90)2 =73984+6561 =80545 ≈283.8045
| 客户 | 存款(万元) | 年消费(万元) | 到基准的欧氏距离 |
|---|---|---|---|
| 客户A | 320 | 95 | 20.6155 |
| 客户B | 280 | 88 | 20.0998 |
| 客户C | 35 | 12 | 276.2408 |
| 客户D | 42 | 16 | 268.4027 |
| 客户E | 260 | 80 | 41.2311 |
| 客户F | 28 | 9 | 283.8045 |
由结果可见:客户B、客户A、客户E距离基准点更近,更接近金卡客群;客户C、客户D、客户F距离较远,更偏向普通客群。