Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-john-wbdocs-2044-rename-serverless-products.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
W&B는 여러 유형의 스무딩을 지원합니다:
다음 대화형 W&B 리포트에서 직접 확인해 보세요.
시간 가중 지수 이동 평균(TWEMA) 스무딩 (기본값)
시간 가중 지수 이동 평균(TWEMA) 스무딩 알고리즘은 이전 지점의 가중치를 지수적으로 감소시켜 시계열 데이터를 부드럽게 만드는 기법입니다. 이 기법에 대한 자세한 내용은 Exponential Smoothing을 참조하세요. 범위는 0~1입니다. 시계열의 초기 값이 0으로 치우치지 않도록 디바이어스 항이 추가됩니다.
TWEMA 알고리즘은 선 위 점들의 밀도(x축 범위 단위당 y 값의 개수)를 고려합니다. 이를 통해 서로 다른 특성을 가진 여러 선을 동시에 표시할 때도 일관된 스무딩을 적용할 수 있습니다.
다음은 이것이 내부적으로 어떻게 작동하는지 보여주는 예제 코드입니다:
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;
});
앱에서는 다음과 같이 표시됩니다:
가우시안 스무딩(또는 가우시안 커널 스무딩)은 점들의 가중 평균을 계산합니다. 이때 가중치는 스무딩 파라미터로 지정한 표준편차를 갖는 가우시안 분포를 따릅니다. 스무딩된 값은 각 입력 x 값마다 계산되며, 해당 값의 앞뒤에 있는 점들을 모두 반영합니다.
다음은 앱에서 어떻게 표시되는지 보여줍니다:
이동 평균은 주어진 x 값의 앞뒤 윈도우에 있는 포인트들의 평균으로 해당 포인트를 대체하는 스무딩 알고리즘입니다. 자세한 내용은 Wikipedia의 “Boxcar Filter”를 참조하세요. 이동 평균에 대해 선택한 파라미터는 이동 평균을 계산할 때 고려할 포인트 수를 Weights and Biases에 전달합니다.
포인트 간 간격이 x축에서 고르지 않다면 가우시안 스무딩을 대신 사용하는 것이 좋습니다.
다음은 앱에서 표시되는 모습입니다:
지수 이동 평균(EMA) 스무딩 알고리즘은 지수 윈도 함수로 시계열 데이터를 스무딩하는 데 사용하는 실용적인 기법입니다. 이 기법에 대한 자세한 내용은 Exponential Smoothing을 참조하세요. 범위는 0~1입니다. 시계열의 초기 값이 0으로 편향되지 않도록 디바이어스 항이 추가됩니다.
많은 경우 EMA 스무딩는 먼저 버킷팅한 다음 스무딩하는 대신, 이력 전체를 스캔한 뒤 적용됩니다. 이렇게 하면 더 정확하게 스무딩되는 경우가 많습니다.
다음과 같은 경우에는 대신 EMA 스무딩가 버킷팅 후에 적용됩니다:
- 샘플링
- 그룹화
- 표현식
- 비단조 x축
- 시간 기반 x축
다음은 이 동작이 내부적으로 어떻게 구현되는지 보여주는 예제 코드입니다:
data.forEach(d => {
const nextVal = d;
last = last * smoothingWeight + (1 - smoothingWeight) * nextVal;
numAccum++;
debiasWeight = 1.0 - Math.pow(smoothingWeight, numAccum);
smoothedData.push(last / debiasWeight);
앱에서는 다음과 같이 표시됩니다:
기본적으로 스무딩되지 않은 원본 데이터는 차트 배경에 희미한 선으로 표시됩니다. 이 표시를 끄려면 Show Original을 클릭합니다.