本文其实是为了讲核函数,由于核函数比较抽象,就从 余弦相似、内积 开始讲起,因为 核函数、内积、余弦相似 本质上都是一种相似性度量 的方式
内积 与 余弦相似度
内积
存在两个向量
a,b 内积为
余弦相似度
a·b = |a||b|cos(a, b)
cos(a, b) = (a·b) / (|a||b|)
二者关系
1. 从上面公式可以看出,余弦相似性 其实是 内积的 归一化
2. 余弦相似性只考虑 向量夹角大小,而内积不仅考虑向量夹角大小,也考虑了向量的长度差
比如两个向量 A 和 B,A=(1,1,0) B=(0, 1, 1),AB余弦相似度为 1/(sqrt(2) * sqrt(2)) = 1/2, 余弦相似度不考虑向量长度,(1,1,0) 和 (0, 3, 3) 的相似度 等于 AB的相似度 但是,如果入股向量的长度对相似性有真实影响,那么 A(1, 1) B(4, 4) C(5, 5) 三个向量,相似度相同,但 BC 内积 大于 AB 内积,故 BC 更相似
核函数
官方定义
设 X 是输入空间(欧式空间或者离散集合),H 是特征空间(希尔伯特空间),
存在一个从 X 到 H 的映射 φ(X): X→H,
使得对所有的 x、y€X,均有 k(x, y) = φ(x) · φ(y),
则称 k(x, y) 为核函数
实例解释
假设 ,构造一个映射 ,则可知
因此通过映射 将点 从二维平面升维到三维空间。然后计算
上述运算是在映射后的高维空间下做内积,
那么是否能直接在原始的空间中进行相应的运算,使得低维情况下的运算结果等于高维情况下的运算结果呢?
答案是肯定的。可以通过核函数 来实现
是不是很神奇,低维空间和高维空间居然通过核函数巧妙的联通起来了
优点
1. 避免了维度灾难,也就是说高维空间中的运算计算量很大呈指数级别复杂度,难以解决;低维空间中的运算计算量很小,但是两者的最终结果是一致的。
例如上述计算过程,高维空间中执行了11次乘法运算、2次根号运算和2次加法运算,低维空间中仅执行了3次乘法运算和1次加法运算,要知道这才二维空间映射到三维空间如果映射到 维空间呢?
2. 核函数使得我们不需要显式计算每一个 φ(x),甚至不需要知道 φ(·) 长什么样,就能直接求出 φ(x)Tφ(y)
常用核函数
未完待续…
参考资料:
https://www.cnblogs.com/lzhu/p/10405091.html 内积
https://blog.csdn.net/kyle1314608/article/details/104582467 内积与余弦相似关系
https://www.zhihu.com/question/24627666 知乎 – 核函数的定义和作用是什么?
https://zhuanlan.zhihu.com/p/47541349 核函数粗浅的理解
https://zhuanlan.zhihu.com/p/30445271 专家坐堂:机器学习中对核函数的理解