Python量化交易实战
上QQ阅读APP看书,第一时间看更新

3.3 常用的统计分析方法——相似度计算

我们从3.2节的内容中可以看到,由于不同目标行之间的属性不同,画出的散点图也是千差万别的,而不同的属性对于数据处理来说,需要一个统一的度量进行计算,即需要对其相似度进行计算。

相似度的计算方法很多,这里选用最常用的两种,即欧几里得相似度计算和余弦相似度计算。如果读者对此不感兴趣,可以跳过本节内容继续学习。

3.3.1 基于欧几里得距离的相似度计算

欧几里得距离(Euclidean Distance)是最常用的计算距离的公式,它用来表示三维空间中两个点的真实距离。

欧几里得相似度计算是一种基于用户之间直线距离的计算方式。在相似度计算中,不同的物品或者用户可以将其定义为不同的坐标点,而将特定目标定位为坐标原点。使用欧几里得距离计算两个点之间的绝对距离。欧几里得相似度的计算如【公式3-1】所示。

【公式3-1】

从【公式3-1】可以看到,作为计算结果的欧式值显示的是两点之间的直线距离,该值的大小表示两个物品或者用户差异性的大小,即用户的相似性。两个物品或者用户距离越大,可以看到其相似度越小;距离越小则相似度越大。

提示

简而言之,欧几里得的计算数值与最终的相似度计算成反比,欧氏距离越小,两组数据相似度就越大,欧氏距离越大,两组数据相似度就越小。因此,在实际中往往使用欧几里得距离的倒数作为相似度计算的近似值,即使用1/(d+1)作为近似值。

下面来看一个常用的用户-物品推荐评分表的例子,如表3-3所示。

表3-3 用户与物品评分对应表

表3-3是3个用户对物品的打分表,如果需要计算用户1和其他用户之间的相似度,通过欧几里得距离公式可以得出:

可以看到,用户1和用户2的相似度为1.414,而用户1和用户3的相似度是:

从得到的计算值可以看出,d12的分值小于d13的分值,根据欧氏距离与相似度成反比的法则,可以认为用户2相对于用户3更加近似于用户1。

3.3.2 基于余弦角度的相似度计算

与欧几里得距离相类似,余弦相似度也将特定目标(物品或者用户)作为坐标上的点,但不是坐标原点,与特定的计算目标进行夹角计算,具体如图3-7所示。

图3-7 余弦相似度示例

从图3-7可以很明显地看出,两条直线分别从坐标原点触发,引出一定的角度。如果两个目标较为相似,那么其线段形成的夹角较小。如果两个用户不相近,那么两条射线形成的夹角较大。因此,在使用余弦度量的相似度计算中,可以用夹角的大小来反映目标之间的相似性。余弦相似度的计算如【公式3-2】所示。

【公式3-2】

从【公式3-2】可以看到,余弦值一般在[-1,1]之间,而这个值的大小同时与余弦夹角的大小成正比。如果用余弦相似度计算表3-3中用户1和用户2之间的相似性,结果如下:

而用户1和用户3的相似性如下:

从计算结果可得,用户2相对于用户3,与用户1更为相似。

3.3.3 欧几里得相似度与余弦相似度的比较

欧几里得相似度以目标绝对距离作为衡量的标准,而余弦相似度以目标差异的大小作为衡量标准,其表述如图3-8所示。

图3-8 欧几里得相似度与余弦相似度

可以看到,欧几里得相似度注重目标之间的差异,与目标在空间中的位置直接相关。而余弦相似度是不同目标在空间中的夹角,更加表现在前进趋势上的差异。

欧几里得相似度和余弦相似度具有不同的计算方法和描述特征。一般来说,欧几里得相似度用以表现不同目标的绝对差异性,从而分析目标之间的相似度与差异情况。而余弦相似度更多的是对目标从方向趋势上区分,对特定坐标数字不敏感。

提示

举例来说,两个目标在不同的两个用户之间的评分分别是(1,1)和(5,5),这两个评分在表述上是一样的。但是在分析用户相似度时,更多的是使用欧几里得相似度而不是余弦相似度对其进行计算。余弦相似度更好地区分了用户的分离状态。