중앙값 절대 편차 집계
중앙값 절대 편차 집계 (Median absolute deviation aggregation)
median_absolute_deviation 집계는 단일 값(single-value) 메트릭 집계예요. 중앙값 절대 편차는 중앙값에서의 산포(dispersion)를 측정하는 변동성 지표예요.
중앙값 절대 편차는 제곱 오차 항을 사용하는 표준편차보다 이상치(outlier)의 영향을 덜 받으며, 정규 분포를 따르지 않는 데이터를 설명하는 데 유용해요.
중앙값 절대 편차는 다음과 같이 계산돼요:
median_absolute_deviation = median( | xi - median(xi) | )
OpenSearch는 메모리 제약 때문에 median_absolute_deviation을 직접 계산하지 않고 추정해요. 이 추정은 계산 비용이 많이 들어요. 추정 정확도와 성능 사이의 트레이드오프를 조정할 수 있어요. 자세한 내용은 추정 정확도 조정(Adjusting estimation accuracy) 섹션을 참고하세요.
출처: 문서
본문
파라미터
median_absolute_deviation 집계는 다음과 같은 파라미터를 받아요.
| 파라미터 | 필수/선택 | 데이터 타입 | 설명 |
|---|---|---|---|
field |
필수 | String | 중앙값 절대 편차를 계산할 숫자 필드의 이름이에요. |
missing |
선택 | Numeric | 필드 값이 없는 문서에 할당할 값이에요. 지정하지 않으면 누락 값이 있는 문서는 추정에서 제외돼요. |
compression |
선택 | Numeric | 추정 정확도와 성능 사이의 균형을 조정하는 파라미터예요. compression 값은 0보다 커야 해요. 기본값은 1000이에요. |
예제
다음 예제는 opensearch_dashboards_sample_data_flights 데이터셋의 DistanceMiles 필드에 대한 중앙값 절대 편차를 계산해요:
GET opensearch_dashboards_sample_data_flights/_search
{
"size": 0,
"aggs": {
"median_absolute_deviation_DistanceMiles": {
"median_absolute_deviation": {
"field": "DistanceMiles"
}
}
}
}
예제 응답
다음 예제 응답에서 볼 수 있듯이, 집계는 median_absolute_deviation_DistanceMiles 변수에 중앙값 절대 편차의 추정값을 반환해요:
{
"took": 490,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 10000,
"relation": "gte"
},
"max_score": null,
"hits": []
},
"aggregations": {
"median_absolute_deviation_DistanceMiles": {
"value": 1830.917892238693
}
}
}
누락 값 처리 (Missing values)
OpenSearch는 median_absolute_deviation을 계산할 때 누락 값과 null 값을 무시해요.
집계 대상 필드의 값이 없는 문서에 특정 값을 할당해 줄 수 있어요. 자세한 내용은 누락 값 집계(Missing aggregations) 문서를 참고하세요.
추정 정확도 조정 (Adjusting estimation accuracy)
중앙값 절대 편차는 t-digest 데이터 구조를 사용해 계산되며, 성능과 추정 정확도의 균형을 맞추기 위해 compression 파라미터를 받아요. compression 값을 낮추면 성능은 좋아지지만 추정 정확도는 낮아질 수 있어요. 다음 요청에서 확인할 수 있어요:
GET opensearch_dashboards_sample_data_flights/_search
{
"size": 0,
"aggs": {
"median_absolute_deviation_DistanceMiles": {
"median_absolute_deviation": {
"field": "DistanceMiles",
"compression": 10
}
}
}
}
추정 오차는 데이터셋에 따라 다르지만, compression 값이 100처럼 낮아도 일반적으로 5% 미만이에요. (여기서 사용한 낮은 예시 값 10은 트레이드오프 효과를 보여주기 위한 것으로, 권장되지는 않아요.)
다음 응답에서 계산 시간(took 시간)이 감소하고 추정 파라미터 값이 약간 덜 정확해진 것을 확인할 수 있어요.
참고로, DistanceMiles의 중앙값 절대 편차에 대한 OpenSearch의 최선의 추정값(compression을 매우 높게 설정했을 때)은 1831.076904296875예요:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 10000,
"relation": "gte"
},
"max_score": null,
"hits": []
},
"aggregations": {
"median_absolute_deviation_DistanceMiles": {
"value": 1836.265614211182
}
}
}