在机器学习领域,很多时候需要衡量两个对象的相似性,特别是在信息检索,模式匹配等方向上。一般情况下,相似性与距离是都是为了描述两个对象之间的某种性质。但在实际使用的时候,需要根据具体的情况来选择合适的相似度或者距离函数。
相似性与距离
首先,我们来看一下相似性函数的含义。对于两个对象 相似性函数
是将
映射到实数域
的有界函数,i.e. 存在上下界使得
它具有以下两个性质:
- 自反性:
对于所有的
都成立;
- 对称性:
对于所有的
都成立;
一般情况下,不要求相似度函数具有三角不等式的性质。相似度越大,表示两个元素越相似;相似度越小,表示两个元素越不相似。
其次,我们来看一下距离函数的含义。对于两个对象 距离函数
是将
映射到非负实数域的函数,它只存在下界
并不存在上界,它具有以下三个性质:
- 自反性:
对于所有的
都成立;
- 对称性:
对于所有的
都成立;
- 三角不等式:
对于所有的
都成立。
距离越小,表示两个元素越近;距离越大,表示两个元素越远。
相似度(Similarity)
对于欧式空间 中的两个点
和
而言,可以多种方法来描述它们之间的相似性。
余弦相似度(Cosine Similarity)
根据 Cauchy 不等式可以得到 Cosine Similarity 的取值范围是
Pearson 相似度(Pearson Similarity)
其中
同样根据 Cauchy 不等式可以得到 Pearson Similarity 的取值范围是
Dice 相似度(Dice Similarity)
其中 和
不能同时是零点,并且由均值不等式可以得到 Dice Similarity 的范围也是
除了欧式空间的点之外,在有的情况下需要对两个集合 和
来做相似度的判断。特别地,欧式空间
里面的点可以看成
个点所组成的集合。因此,下面的集合相似度判断方法同样适用于欧式空间的两个点。
Jaccard 相似度(Jaccard Similarity)
对于集合 和
而言,
其中, 表示集合的势,并且 Jaccard 相似度的取值范围是
越靠近
表示两个集合越相似,越靠近
表示两个集合越不相似。
重叠相似度(Overlap Similarity)
对于集合 和
而言,
其中 指的是条件概率,意思分别是
发生的时候
同时发生的概率,
发生的时候
同时发生的概率。重叠相似度的另外一个名称是 Hub Promoted(HP),它主要用于计算两个集合的重叠程度。
类似的,可以将重叠相似度中的 min 函数换成 max 函数,那就是所谓的 Hub Degressed(HD),用公式来描述就是
它可以用于描述两个集合不重叠的程度。
距离(Distance)
欧氏距离(Euclidean Distance)
另外,如果将 进行推广,则可以引导出
距离如下:
其中
复杂网络中的节点相似性
在复杂网络 中,
表示顶点集合,
表示边的集合。为了简单起见,这里暂时是考虑无向图的场景。对于顶点
而言,
表示其邻居的集合。在复杂网络中,同样需要描述两个顶点
的相似性,于是可以考虑以下指标。
共同邻居相似度(Common Neighbours Similarity)
对于两个顶点 而言,如果它们的共同邻居数越多,表示它们的相似度越高,反之,相似度越低。
所有邻居相似度(Total Neighbours Similarity)
类似地,将顶点 和
的邻居求并集,也可以得到一个指标,
Preferential Attachment
它将
和
的邻居数乘起来,获得一个指标。
Jaccard 相似度(Jaccard Similarity)
如果将两个节点 和
的邻居分别作为两个集合
就可以作为顶点
和
的 Jaccard 相似度指标,其相似度是通过邻居来衡量的。
Sorensen-Dice 相似度(Sorensen-Dice Similarity)
该相似度与 Jaccard 相似度有恒等变换, 和
Hub Promoted 相似度
该相似度描述了顶点 与
的重叠程度,
Hub Depressed 相似度
好友度量(Friend Measure)
其中 用于判断
之间是否有边相连接。如果相连接,则取值为
否则取值为
Adamic Adar 相似度(Adamic Adar Similarity)
因此, 事实上,当
时,
越大,表示顶点
和
的相似度就越高;反之,如果
越小,表示顶点
和
的相似度就越低。Adamic Adar Algorithm 相当于在共同邻居的计算上增加了权重,如果
的共同邻居
拥有较多的邻居,则降低权重,否则增加权重。
Resource Allocation 相似度(Resource Allocation Similarity)
该相似度函数与 Adamic Adar 相似度类似,只是分母上没有增加对数函数而已。
参考文献:
- Silva, Thiago Christiano, and Liang Zhao. Machine learning in complex networks. Vol. 2016. Switzerland: Springer, 2016.
- Barabási, Albert-László. Network science. Cambridge university press, 2016.
- Wang, Peng, et al. “Link prediction in social networks: the state-of-the-art.” Science China Information Sciences 58.1 (2015): 1-38.