推荐算法(一):数学基础回顾——勾股定理与欧氏距离

勾股定理

公式

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距离较远,更偏向普通客群。

相关推荐
三毛的二哥4 小时前
BEV:典型BEV算法总结
人工智能·算法·计算机视觉·3d
南宫萧幕4 小时前
自控PID+MATLAB仿真+混动P0/P1/P2/P3/P4构型
算法·机器学习·matlab·simulink·控制·pid
故事和你916 小时前
洛谷-数据结构1-4-图的基本应用1
开发语言·数据结构·算法·深度优先·动态规划·图论
我叫黑大帅6 小时前
为什么map查找时间复杂度是O(1)?
后端·算法·面试
炽烈小老头6 小时前
【每天学习一点算法 2026/04/20】除自身以外数组的乘积
学习·算法
skilllite作者7 小时前
AI agent 的 Assistant Auto LLM Routing 规划的思考
网络·人工智能·算法·rust·openclaw·agentskills
真·skysys7 小时前
On-Policy Distillation
人工智能·深度学习·机器学习
我是无敌小恐龙7 小时前
Java SE 零基础入门Day01 超详细笔记(开发前言+环境搭建+基础语法)
java·开发语言·人工智能·opencv·spring·机器学习
py有趣8 小时前
力扣热门100题之不同路径
算法·leetcode
_日拱一卒9 小时前
LeetCode:25K个一组翻转链表
算法·leetcode·链表