메인 콘텐츠로 건너뛰기
W&B는 여러 가지 유형의 smoothing을 지원합니다: 대화형 W&B Reports에서 이 기능들이 실제로 어떻게 작동하는지 확인해 보세요.
다양한 smoothing 알고리즘 데모

Time Weighted Exponential Moving Average (TWEMA) smoothing (기본값)

Time Weighted Exponential Moving Average (TWEMA) smoothing 알고리즘은 이전 포인트의 가중치를 지수적으로 감소시켜 시계열 데이터를 부드럽게 만드는 기술입니다. 기술에 대한 자세한 내용은 Exponential Smoothing을 참조하세요. 범위는 0에서 1 사이입니다. 시계열의 초기 값이 0으로 편향되지 않도록 디바이어스 (de-bias) 항이 추가됩니다. TWEMA 알고리즘은 라인 위의 포인트 밀도 (x축 범위 단위당 y 값의 수)를 고려합니다. 이를 통해 특성이 다른 여러 라인을 동시에 표시할 때 일관된 smoothing이 가능합니다. 다음은 내부적으로 어떻게 작동하는지 보여주는 샘플 코드입니다:
const smoothingWeight = Math.min(Math.sqrt(smoothingParam || 0), 0.999);
let lastY = yValues.length > 0 ? 0 : NaN;
let debiasWeight = 0;

return yValues.map((yPoint, index) => {
  const prevX = index > 0 ? index - 1 : 0;
  // VIEWPORT_SCALE은 결과를 차트의 x축 범위로 확장합니다.
  const changeInX =
    ((xValues[index] - xValues[prevX]) / rangeOfX) * VIEWPORT_SCALE;
  const smoothingWeightAdj = Math.pow(smoothingWeight, changeInX);

  lastY = lastY * smoothingWeightAdj + yPoint;
  debiasWeight = debiasWeight * smoothingWeightAdj + 1;
  return lastY / debiasWeight;
});
앱 내부에서는 다음과 같이 표시됩니다:
TWEMA smoothing 데모

Gaussian smoothing

Gaussian smoothing (또는 Gaussian kernel smoothing)은 가우스 분포에 해당하는 가중치와 smoothing 파라미터로 지정된 표준 편차를 사용하여 포인트의 가중 평균을 계산합니다. smoothed 값은 해당 포인트의 앞과 뒤에 있는 포인트들을 모두 기반으로 하여 모든 입력 x 값에 대해 계산됩니다. 앱 내부에서는 다음과 같이 표시됩니다:
Gaussian smoothing 데모

Running average smoothing

Running average는 특정 x 값의 앞뒤 윈도우에 있는 포인트들의 평균값으로 해당 포인트를 대체하는 smoothing 알고리즘입니다. Wikipedia의 “Boxcar Filter”를 참조하세요. 선택한 running average 파라미터는 이동 평균에 고려할 포인트의 수를 Weights & Biases에 알려줍니다. x축의 포인트 간격이 일정하지 않은 경우에는 대신 Gaussian Smoothing을 사용하는 것이 좋습니다. 앱 내부에서는 다음과 같이 표시됩니다:
Running average smoothing 데모

Exponential Moving Average (EMA) smoothing

Exponential Moving Average (EMA) smoothing 알고리즘은 지수 윈도우 함수를 사용하여 시계열 데이터를 부드럽게 만드는 경험적 기법입니다. 기술에 대한 자세한 내용은 Exponential Smoothing을 참조하세요. 범위는 0에서 1 사이입니다. 시계열의 초기 값이 0으로 바이어스되지 않도록 디바이어스 항이 추가됩니다. 대부분의 상황에서 EMA smoothing은 smoothing 전 버킷 처리를 하는 대신 전체 히스토리에 적용됩니다. 이는 종종 더 정확한 smoothing 결과를 만들어냅니다. 다음 상황에서는 대신 버킷 처리 후에 EMA smoothing이 적용됩니다:
  • 샘플링
  • Grouping
  • Expressions
  • 단조 증가하지 않는 x축 (Non-monotonic x-axes)
  • 시간 기반 x축 (Time-based x-axes)
다음은 내부적으로 어떻게 작동하는지 보여주는 샘플 코드입니다:
  data.forEach(d => {
    const nextVal = d;
    last = last * smoothingWeight + (1 - smoothingWeight) * nextVal;
    numAccum++;
    debiasWeight = 1.0 - Math.pow(smoothingWeight, numAccum);
    smoothedData.push(last / debiasWeight);
앱 내부에서는 다음과 같이 표시됩니다:
EMA smoothing 데모

원본 데이터 숨기기

기본적으로 차트 배경에 희미한 선으로 smoothing되지 않은 원본 데이터가 표시됩니다. 이를 끄려면 Show Original을 클릭하세요.
원본 데이터 켜기 또는 끄기