중앙값 절대 편차 집계

중앙값 절대 편차 집계 (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
    }
  }
}

더 알아보기 (Learn more)