• 相似度计算


    很多时候,相似度可以理解为两样物体的距离,相似度计算在数据挖掘和推荐系统中有着广泛的应用场景。例如:

    • CF协同过滤算法中,可以利用相似度计算用户之间(User-Based)或者物品之间(Item-Based)的相似度;
    • 在利用k-means进行聚类时,判断个体所属类别,可以使用相似度计算公式计算个体到簇类中心的距离;
    • 利用KNN进行分类时,也可以利用相似度计算个体与已知类别之间的相似性,判断个体所属的类别;

    1、欧式距离

            欧式距离,也叫欧几里得距离,指在m维空间中两点的真实距离。

            在二维空间中,计算点a(x_1,y_1)与点b(x_2,y_2)之间的欧式距离,

    其公式为:d_{ab} = sqrt{(x_1-x_2)^2+(y_1-y_2)^2}

    2、曼哈顿距离

            曼哈顿距离又叫城市街区距离。所谓的城市街区距离,就是将城市比喻为二维矩阵,从一个十字路口开到另外一个十字路口,驾驶距离显然不是欧式距离,而是“曼哈顿”距离。

            在二维空间中,计算点a(x_1,y_1)与点b(x_2,y_2)之间的曼哈顿距离,

    其公式为:d_{ab} = |x_1-x_2|+|y_1-y_2|

    3、切比雪夫距离

            切比雪夫距离(Chebyshev Distance)的定义:max(|x_1-X_2|, |y_1-y_2|, ...)

            在二维空间中,计算点a(x_1,y_1)与点b(x_2,y_2)之间的切比雪夫距离,

    其公式为:d_{ab} = max(|x_1-x_2|,|y_1-y_2,...|)

    4、马氏距离

            马氏距离指的是协方差距离。有m个样本向量(X_1, X_2,...,X_m),协方差矩阵为S。其中,向量X_iX_j之间的马氏距离为:

    D(X_i,X_j) = sqrt{(X_i-X_j)^TS^{-1}(X_i-X_j)}

    式中,X为样本向量,S为协方差矩阵。

    5、夹角余弦距离

            几何中的夹角余弦用来衡量两个向量方向的差异。

            在二维空间中,向量a(x_1,y_1)与向量b(x_2,y_2)的夹角余弦公式如下:

    cos(	heta ) = frac{x_1x_2+y_1y_2}{sqrt{{x_1}^2+{y_1}^2}sqrt{{x_2}^2+{y_2}^2}}

    6、杰卡德相似系数与杰卡德距离

            两个集合AB的交集元素在AB的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示,对应的公式:J(A,B) = frac{|Acap B|}{|Acup B|}

    杰卡德相似系数是衡量两个集合相似度的一种指标。

    有时候,分母会变成两个集合的平均长度。

    如Python代码:

    def JaccardSimilarityCoefficient(a,b):
        set_a = set(a)
        set_b = set(b)
        # 原式
        dis = float(len(set_a & set_b)) / len(set_a | set_b)
        # 变式
        dis = 2 * float(len(set_a & set_b)) / (len(set_a)+len(set_b))
        return dis

            与杰卡德系数相反的概念,就是杰卡德距离,即两个集合中不同元素占所有元素的比例,用来衡量两个集合的区分度。

    公式:J_delta (A,B) = frac{|Acup B|-|Acap B|}{|Acup B|}

    7、相关系数与相关距离

            相关系数是衡量随机变量和相关程度的一种方法,相关系数的取值范围是[-1, 1]。相关系数的绝对值越大,表明与的相关度越高。

            当和线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。

    随机变量与的相关系数:
ho _{XY} = frac{Cov(X,Y)}{sqrt{D(X)}sqrt{D(Y)}} = frac{E((E-EX)(Y-EY))}{sqrt{D(X)}sqrt{D(Y)}}

    则随机变量与的相关距离为:D_{XY} = 1 - 
ho_{XY}

  • 相关阅读:
    Spring Boot源码分析-配置文件加载原理
    Spring Boot源码分析-启动过程
    Spring Cloud Alibaba基础教程:Nacos服务发现与配置管理
    JVM(九):垃圾回收算法
    JVM(八):Java 对象模型
    JVM(七):JVM内存结构
    JVM(六):探究类加载过程-下
    JVM(五):探究类加载过程-上
    JVM(四):深入分析Java字节码-下
    JVM(三):深入分析Java字节码-上
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/11601330.html
Copyright © 2020-2023  润新知