5.1.16. 中位数绝对偏差聚合
中位数绝对偏差聚合
此单值
聚合近似于其搜索结果的中位数绝对偏差。
中位数绝对偏差是变异性的量度。这是一个可靠的统计信息,这意味着它对于描述可能具有异常值或未正常分布的数据很有用。对于此类数据,它比标准偏差更具描述性。
计算为每个数据点与整个样本的中值的偏差的中值。即,对于随机变量X,中值绝对偏差为中值(| median(X)-X〜i〜|)。
示例
假设我们的数据代表一到五星级的产品评论。此类评论通常被概括为平均值,这很容易理解,但却无法描述评论的可变性。估计中值绝对偏差可以洞悉彼此之间有多少差异。
在此示例中,我们的产品平均评分为3星。让我们看一下其评分的中位数绝对偏差,以确定它们之间的差异
GET reviews/_search
{
"size": 0,
"aggs": {
"review_average": {
"avg": {
"field": "rating"
}
},
"review_variability": {
"median_absolute_deviation": {
"field": "rating"
}
}
}
}
- 评分必须是数字字段
所得的2
的绝对中位数绝对值告诉我们,评级中存在相当大的可变性。评论者必须对此产品有不同的意见。
{
...
"aggregations": {
"review_average": {
"value": 3.0
},
"review_variability": {
"value": 2.0
}
}
}
近似值
计算中值绝对偏差的幼稚实现将整个样本存储在内存中,因此此聚合计算出一个近似值。 它使用 TDigest 数据结构 来近似估计样本中位数和样本中位数的偏差中位数,有关TDigests近似特性的更多信息,请参见 百分位数通常是近似值 。
资源使用率与TDigest分位数逼近度的精度之间的权衡,以及由此聚合的中位数绝对偏差近似值的精度,由compression
参数控制。较高的compression
设置以较高的内存使用量为代价提供了更准确的近似值。有关TDigestcompression
参数的特征的更多信息,请参见压缩。
GET reviews/_search
{
"size": 0,
"aggs": {
"review_variability": {
"median_absolute_deviation": {
"field": "rating",
"compression": 100
}
}
}
}
此聚合的默认压缩值为1000。在此压缩级别,此聚合通常在精确结果的5%以内,但是观察到的性能将取决于样本数据。
脚本
此度量标准聚合支持脚本。在上面的示例中,产品评论的规模从1到5。如果我们想将它们修改为1到10的比例,则可以使用脚本。
要提供内联脚本:
GET reviews/_search
{
"size": 0,
"aggs": {
"review_variability": {
"median_absolute_deviation": {
"script": {
"lang": "painless",
"source": "doc['rating'].value * params.scaleFactor",
"params": {
"scaleFactor": 2
}
}
}
}
}
}
提供储存脚本
GET reviews/_search
{
"size": 0,
"aggs": {
"review_variability": {
"median_absolute_deviation": {
"script": {
"id": "my_script",
"params": {
"field": "rating"
}
}
}
}
}
}
缺失值
missing
参数定义应如何处理缺少值的文档。默认情况下,它们将被忽略,但也可以将它们视为具有值。
让我们保持乐观,假设有些评论者非常喜欢该产品,以至于他们忘记给它打分了。我们给他们分配五颗星
GET reviews/_search
{
"size": 0,
"aggs": {
"review_variability": {
"median_absolute_deviation": {
"field": "rating",
"missing": 5
}
}
}
}
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。