文章目录

  • 余弦相似度
  • 余弦相似度和余弦距离
  • 和欧式距离的比较和关系
  • 余弦距离不是一个严格定义的距离

在模型训练过程中,我们也在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础。

在分析两个特征向量之间的相似性时,常使用余弦相似度来表示。余弦相似度的取值范围是[−1,1],相同的两个向量之间的相似度为1。

余弦相似度

  • 两个向量夹角的余弦

cos(A,B)=A⋅B∣∣A∣∣2∣∣B∣∣2cos(A,B)=\frac{A\cdot B}{||A||_2 ||B||_2} cos(A,B)=∣∣A∣∣2​∣∣B∣∣2​A⋅B​

  • 关注向量之间的角度关系,不关心它们的绝对大小
  • 取值范围是[−1,1]

如果希望得到类似于距离的表示,将1减去余弦相似度即为余弦距离。因此,余弦距离的取值范围为[0,2],相同的两个向量余弦距离为0。

余弦相似度和余弦距离

distcos(A,B)=1−cos(A,B)dist_{cos}(A,B)=1-cos(A,B) distcos​(A,B)=1−cos(A,B)

和欧式距离的比较和关系

总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。

  • 当一对文本相似度的长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角就可能很小,因而相似度高。

  • 高维情况下,余弦相似度依然保持“相同时为1,正交时为0,相反时为−1”的性质;而欧氏距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。

  • 在一些场景,例如Word2Vec中,其向量的模长是经过归一化的,此时欧氏距离与余弦距离(余弦相似度)有着单调的关系

    由余弦公式知
    cos(A,B)=∣∣A∣∣22+∣∣B∣∣22−∣∣A−B∣∣222∣∣A∣∣2∣∣B∣∣2=2−∣∣A−B∣∣222cos(A,B)=\frac{||A||_2^2+||B||_2^2-||A-B||_2^2}{2||A||_2||B||_2}=\frac{2-||A-B||_2^2}{2} \\ cos(A,B)=2∣∣A∣∣2​∣∣B∣∣2​∣∣A∣∣22​+∣∣B∣∣22​−∣∣A−B∣∣22​​=22−∣∣A−B∣∣22​​

    ⇒∣∣A−B∣∣2=2−2cos(A,B)=2(1−cos(A,B))=2distcos(A,B)\Rightarrow||A-B||_2= \sqrt{2-2cos(A,B)}= \sqrt{2(1-cos(A,B))}=\sqrt{2dist_{cos}(A,B)} ⇒∣∣A−B∣∣2​=2−2cos(A,B)​=2(1−cos(A,B))​=2distcos​(A,B)​
    在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧氏距离的结果是相同的。

余弦距离不是一个严格定义的距离

距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性,对称性,三角不等式)成立,则该实数可称为这对元素之间的距离。

  • 正定性
    distcos(A,B)=1−cos(A,B)=1−A⋅B∣∣A∣∣2∣∣B∣∣2=∣∣A∣∣2∣∣B∣∣2−A⋅B∣∣A∣∣2∣∣B∣∣2=∣∣A∣∣2∣∣B∣∣2−∣∣A∣∣2∣∣B∣∣2cos(A,B)∣∣A∣∣2∣∣B∣∣2≥0\begin{aligned} dist_{cos}(A,B)&=1-cos(A,B)\\ &=1-\frac{A\cdot B}{||A||_2 ||B||_2}\\ &=\frac{||A||_2 ||B||_2-A\cdot B}{||A||_2 ||B||_2}\\ &=\frac{||A||_2 ||B||_2-||A||_2 ||B||_2cos(A,B)}{||A||_2 ||B||_2}\\ &\ge 0 \end{aligned} distcos​(A,B)​=1−cos(A,B)=1−∣∣A∣∣2​∣∣B∣∣2​A⋅B​=∣∣A∣∣2​∣∣B∣∣2​∣∣A∣∣2​∣∣B∣∣2​−A⋅B​=∣∣A∣∣2​∣∣B∣∣2​∣∣A∣∣2​∣∣B∣∣2​−∣∣A∣∣2​∣∣B∣∣2​cos(A,B)​≥0​
    当且仅当cos(A,B)=1⇔distcos(A,B)=0⇔∣∣A∣∣2∣∣B∣∣2=AB⇔A,Bcos(A,B)=1\Leftrightarrow dist_{cos}(A,B)=0\Leftrightarrow ||A||_2 ||B||_2=AB \Leftrightarrow A,Bcos(A,B)=1⇔distcos​(A,B)=0⇔∣∣A∣∣2​∣∣B∣∣2​=AB⇔A,B 同方向时取等号

  • 对称性
    distcos(A,B)=distcos(B,A)dist_{cos}(A,B)=dist_{cos}(B,A) distcos​(A,B)=distcos​(B,A)

  • 三角不等式:不成立

    反例:前述归一化模长的3个向量,或者说在单位圆上的向量A,B,C,假设A与B非常近、B与C非常近,其欧氏距离为极小量uuu;此时A、B、C虽然在圆弧上,但近似在一条直线上,所以A与C的欧氏距离接近于2u2u2u。因此,根据欧式距离和余弦距离的关系
    distcos(A,B)=12∣∣A−B∣∣22dist_{cos}(A,B)=\frac{1}{2}||A-B||_2^2 distcos​(A,B)=21​∣∣A−B∣∣22​
    A与B、B与C的余弦距离为u2/2u^2/2u2/2;A与C的余弦距离接近(2u)2/2=2u2(2u)^2/2=2u^2(2u)2/2=2u2,大于A与B、B与C的余弦距离之和u2u^2u2。

在机器学习领域,被俗称为距离,却不满足三条距离公理的不仅仅有余弦距有KL距离(Kullback-Leibler Divergence),也叫作相对熵,它常用于计算两个分布之间的差异,但不满足对称性和三角不等式

百面机器学习 #2 模型评估:03 余弦距离和余弦相似度、欧氏距离相关推荐

  1. 百面机器学习之模型评估

    1.准确率的局限性.         Hulu的奢侈品广告主们希望把广告定向投放给奢侈品用户.Hulu通过第三方的数据管理平台(Data Management Platform,DMP)拿到了一部分奢 ...

  2. 百面机器学习:模型评估

    1. 评估指标的局限性         要合理地运用评估指标,才可以发现模型本身的问题,不然反其道而行之得出错误的调参结论.         先讲了TP.FP.FN.和FP这几个值. 这几个率真的是看 ...

  3. 百面机器学习 #2 模型评估:07 过拟合和欠拟合及其常用解决方法

    如何有效地识别"过拟合"和"欠拟合"现象,并有针对性地进行模型调整,是不断改进机器学习模型的关键. 过拟合 模型对于训练数据拟合呈过当的情况 反映到评估指标上, ...

  4. 百面机器学习 #2 模型评估:0102 精确率与召回率,假阳性与真阳性率,PR曲线和ROC曲线

    文章目录 1. P-R(Precision-Recall)曲线 F1 score 2. 平方根误差的局限性 3. ROC曲线 ROC曲线绘制 4. AUC predict Positive predi ...

  5. 百面机器学习02-模型评估

    评估指标的局限性 场景描述: 在模型评估过程中,分类问题.排序问题.回归问题往往需要使用不同的指标进行评估 .在诸多的评估指标中,大部分指标只能片面地反映模型的一部分性能 . 如果不能合理地运用评估指 ...

  6. 百面机器学习2---模型评估

    1 评估指标的局限性 引例:Hulu的奢侈品广告主们希望把广告定向投放给奢侈品用户.Hulu拿到了一部分奢侈品用户的数据,并以此为训练集和测试集,训练和测试奢侈品用户的分类模型.该模型的分类准确率超过 ...

  7. python 两点曲线_python机器学习分类模型评估

    python机器学习分类模型评估 1.混淆矩阵 在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵(适用于多 ...

  8. 机器学习模型 知乎_机器学习:模型评估之评估方法

    ​机器学习已经成为了人工智能的核心研究领域之一,它的研究动机就是为了让计算机系统具有人的学习能力以便实现人工智能.目前,关于机器学习定义的说法比较多,而被广泛采用的定义是"利用经验来改善计算 ...

  9. 万字长文总结机器学习的模型评估与调参 | 附代码下载

    作者 | Sebastian Raschka 翻译&整理 | Sam 来源 | SAMshare 目录 一.认识管道流 1.1 数据导入 1.2 使用管道创建工作流 二.K折交叉验证 2.1 ...

最新文章

  1. 由MessageBox和AfxMessageBox的使用异同所感
  2. Python 来分析,堪比“唐探系列”!B站9.5分好评如潮!
  3. [UOJ422]小Z的礼物
  4. React 教程第六篇 —— 样式绑定
  5. ASP.NET Core 2.1 : 十一. 如何在后台运行一个任务
  6. 蓝桥杯-代码-数字三角形
  7. Hadoop集群启动时NameNode未启动解决方法
  8. Linux下zip的操作命令
  9. OpenCV图像直方图案例
  10. 简述linux的系统结构,Linux系统基础知识(一)
  11. 公司网络上网慢排查项
  12. java license 验证方案_truelicense实现JAVA的license机制(包括license生成和验证)
  13. (附源码)spring boot大学生综合素质测评系统 毕业设计162308
  14. PS人物头发抠取教程 PS照片换背景方法
  15. 电路板设计时的注意事项
  16. Everyme:类似QQ圈子的社交应用
  17. How to modify comment and attribute ClearCase
  18. Kerberos 简介——教你做个好人
  19. Aptana插件ZIP包下载方法
  20. 去掉暴风影音的广告(去广告的最简单方法)

热门文章

  1. Import declarations are not supported by current JavaScript version
  2. 创建一个Hello World的Confluence宏
  3. C++指针和引用的区别
  4. 虚拟机服务器被攻击,Linux服务器被攻击用来挖矿了
  5. php xml 实例教程,php解析xml方法实例详解,解析xml实例详解_PHP教程
  6. 骚年快醒醒,你适合转行做前端吗?
  7. 学习前端需要掌握什么基础?
  8. JavaScript 是如何成为一门严肃的编程语言的
  9. 【前端干货】CSS 的空格处理
  10. python定位方法_selenium+python定位元素方法