Skip to main content
 首页 » 编程设计

利用Elaticsearch实现相关性分析

2022年07月19日123qq78292959

Elasticsearch 5.x及以上版本提供了特殊模块aggs-matrix-stats,自动计算几个字段的高级分析。

Matrix stats 聚集

matrix_stats聚集是基于文档中一组数值型自己计算聚集,主要包括下面信息:

计算项 描述
count 每个计算字段的样本数量.
mean 每个字段的平均值.
variance 每个字段方差,即偏离样本平均值的度量.
skewness 偏度,以均值为中心不对称分布程度.正态分布的偏度为0,两侧尾部长度对称。若以bs表示偏度。bs<0称分布具有负偏离,也称左偏态,此时数据位于均值左边的比位于右边的少,直观表现为左边的尾部相对于与右边的尾部要长,因为有少数变量值很小,使曲线左侧尾部拖得很长;bs>0称分布具有正偏离,也称右偏态,此时数据位于均值右边的比位于左边的少,直观表现为右边的尾部相对于与左边的尾部要长,因为有少数变量值很大,使曲线右侧尾部拖得很长;而bs接近0则可认为分布是对称的.
kurtosis 峰度,衡量样本分布的形状.峰度(Kurtosis)与偏度类似,是描述总体中所有取值分布形态陡缓程度的统计量。这个统计量需要与正态分布相比较,峰度为0表示该总体数据分布与正态分布的陡缓程度相同;峰度大于0表示该总体数据分布与正态分布相比较为陡峭,为尖顶峰;峰度小于0表示该总体数据分布与正态分布相比较为平坦,为平顶峰。峰度的绝对值数值越大表示其分布形态的陡缓程度与正态分布的差异程度越大.
covariance 协方差,定量描述了一个字段与另一个相关联的变化.
correlation 相关性,值范围 [-1 ~ 1], 描述字段之间分布关系.

示例

计算分析"poverty", “income” 两个字段的相关性。

GET /_search 
{ 
  "aggs": { 
    "statistics": { 
      "matrix_stats": { 
        "fields": [ "poverty", "income" ] 
      } 
    } 
  } 
} 

matrix_stats类型聚集及fields属性定义一组字段进行相关性计算,返回结果示例如下:

{ 
  ... 
  "aggregations": { 
    "statistics": { 
      "doc_count": 50, 
      "fields": [ { 
          "name": "income", 
          "count": 50, 
          "mean": 51985.1, 
          "variance": 7.383377037755103E7, 
          "skewness": 0.5595114003506483, 
          "kurtosis": 2.5692365287787124, 
          "covariance": { 
            "income": 7.383377037755103E7, 
            "poverty": -21093.65836734694 
          }, 
          "correlation": { 
            "income": 1.0, 
            "poverty": -0.8352655256272504 
          } 
        }, { 
          "name": "poverty", 
          "count": 50, 
          "mean": 12.732000000000001, 
          "variance": 8.637730612244896, 
          "skewness": 0.4516049811903419, 
          "kurtosis": 2.8615929677997767, 
          "covariance": { 
            "income": -21093.65836734694, 
            "poverty": 8.637730612244896 
          }, 
          "correlation": { 
            "income": -0.8352655256272504, 
            "poverty": 1.0 
          } 
        } ] 
    } 
  } 
} 

doc_count表示涉及分析计算文档的数量。

其他参数

matrix_stats类型聚集把每个文档作为独立样本。mode参数可以设置如何分析数组或多值类型字段,可以取下面几个字段:

avg :平均值
min :最小值
max :最大值
sum : 多值和
median:中位数

missing参数定义如何处理缺失值。默认忽略所有缺失值。但我们也可以指定默认值。示例如下:

GET /_search 
{ 
  "aggs": { 
    "matrixstats": { 
      "matrix_stats": { 
        "fields": [ "poverty", "income" ], 
        "missing": { "income": 50000 }       
      } 
    } 
  } 
} 

本文参考链接:https://blog.csdn.net/neweastsun/article/details/114177795
阅读延展