余弦相似度 高维数据_从勾股定理到余弦相似度-程序员的数学基础

大部分程序员由于理工科的背景,有一些高数、线性代数、概率论与数理统计的数学基础。所以当机器学习的热潮来临的时候,都跃跃欲试,对机器学习的算法以及背后的数学思想有比较强烈的探索欲望。

本文的作者就是其中的一位。然而实践的过程中,又发现数学知识的理解深度有些欠缺,在理解一些公式背后的意义时,有些力不从心的感觉。因此梳理了一些数学上的知识盲点,理顺自己的知识脉络,顺便分享给有需要的人。

本文主要讲解余弦相似度的相关知识点。相似度计算用途相当广泛,是搜索引擎、推荐引擎、分类聚类等业务场景的核心点。为了理解清楚余弦相似度的来龙去脉,我将会从最简单的初中数学入手,逐步推导出余弦公式。然后基于余弦公式串讲一些实践的例子。

一、业务背景

通常我们日常开发中,可能会遇到如下的业务场景。

631fe65530defb5038e7dbac036a2139.png

精准营销,图像处理,搜索引擎 这三个看似风马牛不相及的业务场景,其实面临一个共同的问题就是相似度的计算。例如精准营销中的人群扩量涉及用户相似度的计算;图像分类问题涉及图像相似度的计算,搜索引擎涉及查询词和文档的相似度计算。相似度计算中,可能由于《数学之美》的影响,大家最熟悉的应该是余弦相似度。那么余弦相似度是怎么推导出来的呢?

二、数学基础

理解余弦相似度,要从理解金字塔开始。我们知道金字塔的底座是一个巨大的正方形。例如吉萨大金字塔的边长超过230m。构造这样一个巨大的正方形,如何保证构造出来的图形不走样呢?比如如何确保构造的结果不是菱形或者梯形。

1777a5c39c81772a8f1690dcba4122a6.png

1、勾股定理

要保证构造出来的四边形是正方形,需要保证两个点:其一是四边形的边长相等;其二是四边形的角是直角。四边形的边长相等很容易解决,在工程实践中,取一根定长的绳子作为边长就可以了。如何保障直角呢?古人是利用勾股定理解决的,更切确地说是勾股定理的逆定理。

构造一个三角形,保证三角形的三边长分别是3,4,5。那么边长为5的边对应的角为直角。中国有个成语“无规矩不成方圆”,其中的矩,就是直角的尺。

68ed45e2672f92ab39c5995f4efca1f7.png

勾股证明是初中数学的知识,理解很容易。证明也很简单,据说爱因斯坦11岁就发现了一种证明方法。勾股定理的证明方法据统计有超过400种, 感兴趣的同学可以自行了解。另勾股定理也是费马大定理的灵感来源,费马大定理困扰了世间智者300多年,也诞生了很多的逸闻趣事,这里不赘述。

2、余弦定理

勾股定理存在着一个很大的限制,就是要求三角形必须是直角三角形。那么对于普通的三角形,三个边存在什么样的关系呢?这就引出了余弦定理。

788af98e1dfc5803f6c09944345ed987.png

余弦定理指出了任意三角形三边的关系,也是初中就可以理解的数学知识,证明也比较简单,这里就略过了。

其实对于三角形,理解了勾股定理和余弦定理。就已经掌握了三角形的很多特性和秘密了。比如根据等边三角形,可以推导出cos(60)=1/2。但是如果想理解几何更多的秘密,就需要进入解析几何的世界。这个数学知识也不算很高深,高中数学知识。

这里我们理解最简单就可以了,那就是三角形在直角坐标系中的表示。所谓“横看成岭侧成峰,远近高低各不同”,我们可以理解为三角形的另一种表现形式。

088abd6ec89c0a054b67fe92ef4243a4.png

比如我们可以用a,b,c三个边描述一个三角形;在平面直角坐标系中,我们可以用两个向量表示一个三角形。

3、余弦相似度

当我们引入了直角坐标系后,三角形的表示就进入了更灵活、更强大和更抽象的境界了。几何图形可以用代数的方法来计算,代数可以用几何图形形象化表示,大大降低理解难度。比如我们用一个向量来表示三角形的一个边,就可以从二维空间直接扩展到高维空间。

ddafc5138ebdc64e716ca5a33a6cf7bb.png

这里,向量的定义跟点是一样的;向量的乘法也只是各个维度值相乘累加;向量的长度看似是新的东西,其实绕了一个圈,本质上还是勾股定理,只是勾股定理从二维空间扩展到了N维空间而已。而且向量长度又是两个相同向量乘法的特例。数学的严谨性在这里体现得淋漓尽致。

结合勾股定理,余弦定理,直角坐标系,向量。我们就可以很自然地推导出余弦公式了,这里唯一的理解难点就是勾股定理和余弦定理都是用向量来表示。

c24af741d133a83618255bc678f88cd2.png

得到了余弦公式后,我们该

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值