# 파라미터(오더, 레벨) 설정 가이드

#### 웨이블릿 오더의 개념

웨이블릿 오더는 모함수의 소멸 모멘트 수, 혹은 계수 다항식의 차수 등에 의해 결정되는 파라미터다. 예시로 Daubechies 계열 웨이블릿에서 오더 $N$은 스케일링 함수와 웨이블릿 함수가 갖는 제로 모멘트 수에 대응한다. 오더가 커지면 시간 영역에서의 국소화 정도가 약간씩 달라지고, 주파수 영역에서의 특성도 변한다.

연속 함수를 $f(t)$라 할 때, 웨이블릿 변환을 수행하려면 모함수 $\psi(t)$가 필요하고, 이 $\psi(t)$를 결정하는 중요한 요소가 바로 오더다. 오더가 높아지면 $\psi(t)$의 지지(support) 길이도 늘어나고, 상관관계 파악 시 고주파 대역 해상도가 어느 정도 손실될 수 있지만, 더 부드러운 스케일링 함수를 얻을 수 있다.

오더가 $N$이라고 할 때, Daubechies 계열에서 필터 계수의 길이는 일반적으로 $2N$이 된다. 다음과 같은 개념적 수식에서 하향 필터 $\mathbf{h}$와 상향 필터 $\mathbf{g}$는 오더에 따라 길이가 결정된다.

$$
\mathbf{h} = { h\_0, h\_1, \dots, h\_{2N-1} }, \quad \mathbf{g} = { g\_0, g\_1, \dots, g\_{2N-1} }
$$

이때 $\mathbf{h}$는 스케일링(저주파) 필터, $\mathbf{g}$는 웨이블릿(고주파) 필터에 대응하며, 다음의 직교성 조건을 만족해야 한다.

$$
\sum\_{n=0}^{2N-1} h\_n , h\_{n-2k} = \delta(k),  \quad \sum\_{n=0}^{2N-1} g\_n , g\_{n-2k} = \delta(k)
$$

여기서 $\delta(k)$는 크로네커 델타다.

오더를 결정할 때는 원하는 신호 분석의 시간 해상도와 주파수 해상도 간 트레이드오프, 그리고 필터 크기에 따른 연산 복잡도 등을 고려해야 한다. 오더가 높으면 필터의 길이가 길어져 경계 문제나 연산 비용이 증가하지만, 스케일링 함수가 갖는 특성과 부분적으로 양호한 주파수 응답을 확보할 수 있다.

#### 웨이블릿 레벨의 개념

웨이블릿 변환에서는 레벨을 하나씩 올려가며 저주파 성분과 고주파 성분을 분리한 뒤, 저주파 성분을 다시 다음 레벨에서 분해한다. 이 과정을 레벨 $L$까지 반복하면, $f(t)$에 대해 $L$번의 분해가 이루어진다. 각 레벨에서 시간축 상의 해상도가 절반씩 감소하지만, 주파수축 상의 해상도는 2배씩 증가한다.

레벨을 설정할 때는 신호의 대역폭과 샘플링 주파수에 기반해, 필요한 스케일 분해도를 어느 정도로 할지 결정한다. 예를 들어, 샘플링 주파수가 $f\_s$인 신호를 레벨 $L$까지 분해하면 다음과 같은 대역 구분이 가능하다.

$$
\[0, \frac{f\_s}{2^{L+1}}],  \bigl\[\frac{f\_s}{2^{L+1}}, \frac{f\_s}{2^L}\bigr],  \dots,  \bigl\[\frac{f\_s}{4}, \frac{f\_s}{2}\bigr],  \bigl\[\frac{f\_s}{2}, f\_s\bigr]
$$

각 대역은 웨이블릿 변환에서 서로 다른 구성 요소(approximation과 detail 성분)에 대응하므로, 레벨을 결정하는 것은 신호 분석의 목표 주파수 범위와 직결된다. 예컨대, 시계열에서 저주파 영역만 관심이 있다면 레벨을 충분히 올려야 저주파대역 성분을 세밀하게 살펴볼 수 있다. 반면, 고주파 분석이 중요하다면 너무 많은 레벨 분해보다는 중간 수준에서 고주파 성분을 잘 포착할 수 있도록 레벨 수를 조정하는 편이 유리할 수 있다.

#### 오더 결정 시 고려사항

오더를 결정하려면 분석 대상 신호가 가지는 주파수 특성과 분석 목적을 먼저 파악해야 한다. 오더가 높아지면 필터 계수의 길이가 길어지고, 모함수의 소멸 모멘트 수도 증가한다. 이로 인해 웨이블릿 함수가 더 부드러운 형태를 띠게 되며, 고차 미분까지도 0이 되는 구간을 확보할 수 있다. 하지만 오더를 지나치게 높게 설정하면 다음과 같은 문제들이 나타날 수 있다.

* 시간 영역 국소성이 떨어질 수 있다.
* 경계 구간에서의 에너지 누락이나 위상 왜곡이 발생하기 쉽다.
* 필터 계수 계산 및 컨볼루션 연산 비용이 증가한다.
* 직교(orthogonal) 웨이블릿의 경우, 오더가 증가할수록 필터 계수들이 복잡해지고 부호 패턴이 달라진다.

분석 목적이 특정 고주파 트렌드, 예컨대 신호 내 급격한 변화점을 정밀하게 포착하는 것이라면 오더가 너무 높으면 변화점 근처에서 스파이크가 완화되거나 희석될 가능성이 있다. 반대로 저주파 구성요소(예: 장기 추세)를 더욱 부드럽게 나타내고자 할 때는 오더가 어느 정도 높은 쪽이 유리할 수 있다.

Daubechies 계열에서 오더 $N$이 커짐에 따라 한 계층 레벨에서 분해 가능한 주파수 대역의 대역폭은 동일해도, 웨이블릿 함수 자체의 빈틈없는 근사(approximation) 능력이 향상되므로 특정 패턴을 잡아내는 민감도가 달라진다. 그러나 이는 분석 주제가 무엇이냐에 따라 장점이 되기도, 단점이 되기도 한다.

$$
\psi\_{j,k}(t) = 2^{-j/2} \psi\bigl(2^{-j} t - k\bigr)
$$

위 식에서 $\psi(t)$가 오더에 의해 결정되는 모함수일 때, 모멘트 조건이 충족되어야 특정 다항식 신호가 웨이블릿 계수에서 0으로 소거된다. 이 같은 속성은 노이즈 제거나 압축 과정에서 유용하지만, 오더가 높을수록 위상이 복잡해져 신호 해석에 예기치 않은 영향을 줄 수 있다.

#### 레벨 결정 시 고려사항

웨이블릿 변환은 계층적 필터링 구조로 구현되며, 레벨 수는 해당 구조를 몇 번 반복할지를 정한다. 레벨을 올릴수록 저주파 대역을 더욱 잘게 세분하지만, 시간축 해상도는 떨어진다. 신호가 $2^M$ 샘플 길이를 가진다고 할 때, 최대 레벨은 보통 $M$ 이하로 제한된다.

신호 에너지가 특정 주파수 대역에 집중되어 있다면, 그 대역을 충분히 분리해 낼 수 있을 정도로만 레벨을 올려주는 것이 바람직하다. 예컨대 저주파 영역(낮은 변동) 분석이 목적이라면 가능한 한 높은 레벨까지 분해해 저주파 정보만 따로 떼어낼 수 있어야 한다. 반면, 불필요하게 높은 레벨은 잡음 대역도 광범위하게 분해하여 해석 복잡도가 오를 수 있다.

$$
A\_L(t) = \sum\_{k} c\_{L,k} \phi\_{L,k}(t), \quad D\_j(t) = \sum\_{k} d\_{j,k} \psi\_{j,k}(t),  \quad j = 1, 2, \dots, L
$$

상기 표현에서 $A\_L(t)$는 최종 레벨 $L$의 저주파 근사 성분, $D\_j(t)$는 각 레벨별로 추출되는 세부(detail) 성분이다. $L$을 지나치게 높이 설정하면 $A\_L(t)$가 거의 상수에 가까워질 수 있으며, 오히려 분석하려는 특징이 사라지기도 한다.

경계 처리를 어떻게 할 것인지도 레벨 결정과 밀접하게 관련이 있다. 레벨을 올릴수록 컨볼루션 길이가 증가해 신호의 양 끝단에서 불필요한 에너지가 유입 혹은 누락될 가능성이 커지므로, 패딩 전략(reflect, zero, periodic 등)을 신중히 택해야 한다.

#### 오더와 레벨의 상호작용

오더와 레벨은 서로 독립적이면서도 결과물에 복합적으로 영향을 미치는 파라미터다. 오더를 먼저 선택하고 레벨을 뒤에 결정하는 방식이 일반적이지만, 특정 문제에서는 레벨을 먼저 정한 뒤 해당 레벨에서 원하는 주파수 특성을 정확히 포착할 수 있는 오더를 고르는 전략도 쓰인다. 오더가 낮고 레벨이 높은 경우에는 각 계층 분해가 이루어지면서도 각 세부 성분이 상대적으로 예민하게 반응할 수 있다. 반면 오더가 높고 레벨이 낮으면, 큰 스케일에서의 해석이 매끄럽게 이뤄지지만 세밀한 고주파 성분의 국소화가 다소 분산될 수 있다.

웨이블릿 변환으로 생성되는 계수 벡터를 $\mathbf{W} = \mathbf{W}(N, L)$이라 할 때, 이는 모함수 오더 $N$과 분해 레벨 $L$의 함수로 볼 수 있다. 다음과 같은 의사 표현으로 나타낼 수 있다.

$$
\mathbf{W}(N, L) = \mathcal{WT}\bigl(f(t); \psi\_N, L\bigr)
$$

여기서 $\psi\_N$은 오더 $N$에 해당하는 모함수다. 같은 신호라 하더라도 $N$과 $L$의 선택에 따라 얻어지는 세부 성분(detail coefficients)과 근사 성분(approximation coefficients)의 분포가 달라진다.

#### 복소 웨이블릿(Complex Wavelet)의 오더 설정

분석 파라미터 설정에서 복소 웨이블릿을 사용하는 경우에는 실수 웨이블릿 때와 달리 위상 정보를 별도로 고려해야 한다. 복소 모함수를 통해 얻는 계수는 실수부와 허수부로 분리되는데, 이때 오더가 높으면 실수부와 허수부의 에너지 스펙트럼이 더욱 부드럽게 연결되는 경향이 있다. 실제 응용에서는 홀필터와 짝필터가 모두 필요할 수 있으며, 이로 인해 연산 부담이 늘어나므로, 높은 오더를 무조건 추구하기보다는 분석 목표와 구현 자원을 함께 고려해야 한다.

#### 샘플링 비율과 파라미터의 관계

신호의 샘플링 비율이 높으면 전체 주파수 범위가 넓어지므로, 필요한 레벨 수도 늘어나거나 오더를 높여야 하는 상황이 발생한다. 다만 신호가 매우 고주파 성분을 많이 포함한다면, 높은 레벨까지 분해하기보다는 적절한 대역에서 집중 분석할 수 있는 오더를 택해 특정 구간의 세부 성분만 잘 포착하는 편이 효율적일 수 있다.

#### 경계(바운더리) 처리와 파라미터

웨이블릿 변환을 적용할 때 신호의 양끝단 처리는 오더와 레벨 설정만큼이나 중요한 영역이다. 파이니트 지원을 갖는 웨이블릿이라도 실제 디지털 신호는 유한 길이를 가지므로, 변환 과정에서 필연적으로 경계 구간이 발생한다. 오더가 높으면 필터 길이가 길어지고, 레벨이 많아질수록 반복적인 다운샘플링과 컨볼루션이 이뤄지므로, 경계 구간의 처리가 누적되어 전체 분석에 영향을 미칠 수 있다.

경계 처리를 위해서는 일반적으로 zero-padding, periodic extension, reflection 등이 사용된다. zero-padding은 신호 밖을 0으로 채우는 방법이고, periodic extension은 신호를 주기적으로 반복해 이어 붙이는 방법이다. reflection은 신호 경계에서 반사되어 들어오는 형태로 연장한다. 오더가 클수록 필터 길이가 길어지므로 zero-padding 방식을 채택하면 경계 인근에서 0이 많이 들어가 왜곡이 심해질 가능성이 있다. 반면 reflection이나 periodic extension은 실제 신호의 뒷부분 혹은 앞부분이 인위적으로 이어지므로, 레벨이 커질수록 반복 누적이 발생한다.

분석 목표에 따라 경계에서 발생하는 왜곡을 최소화하기 위해 오더를 적정 수준으로 제한하거나, 레벨도 불필요하게 높이지 않는 전략을 채택할 수 있다. 경계 인근에 중요한 이벤트가 있는 신호라면 reflection처럼 신호의 맥락을 유지하는 방식을 택하는 편이 유리하지만, 신호가 매우 긴 경우에는 periodic extension을 통해 연산 효율성을 확보하는 경우도 많다.

#### 구현 시 고려해야 할 점

오더와 레벨, 그리고 경계 처리 방식을 종합적으로 결정하기 위해서는 원하는 주파수 해상도, 시간 해상도, 연산 자원, 경계에서의 정보 손실 허용치 등을 동시에 고려해야 한다. 실험적인 접근을 통해 최적 파라미터를 찾는 경우가 많으며, 신호 특성별로 차이가 크기 때문에 한 번의 설정으로 모든 문제를 해결하기는 어렵다.

소프트웨어 구현 시에도 오더와 레벨 결정, 경계 처리 옵션이 변수로 주어진다. 파이썬 PyWavelets 라이브러리를 예로 들면, 다음과 같은 코드를 통해 특정 웨이블릿 오더와 레벨을 설정하여 신호를 분해할 수 있다.

```python
import pywt
import numpy as np

# 가상의 신호 예시
t = np.linspace(0, 1, 512)
signal = np.sin(2 * np.pi * 50 * t) + 0.5 * np.random.randn(len(t))

# Daubechies wavelet (오더 = 4)
wavelet_name = 'db4'
max_level = 5
coeffs = pywt.wavedec(signal, wavelet_name, level=max_level, mode='symmetric')

# coeffs[0] = 최종 레벨 저주파 근사 성분
# coeffs[1:] = 레벨별 세부 성분
```

이 예시에서 wavelet\_name을 db4로 지정해 오더가 4인 Daubechies 웨이블릿을 선택했고, max\_level은 5로 설정했다. mode 파라미터를 symmetric으로 지정해 경계 구간에서 반사 연장을 적용했다. 실제로는 signal 특성에 따라 db8, coif5 등 다른 모함수나 오더를 택할 수 있고, level 값도 달라질 수 있다.

#### 파라미터 선택 프로세스 예시

오더와 레벨을 결정하기 위해서는 신호 특성, 분석 목적, 연산 제한 등을 종합적으로 고려해야 한다. 다음은 그 과정을 단순화하여 표현한 흐름도 예시다.

{% @mermaid/diagram content="flowchart TD
A((시작)) --> B{신호 길이 및<br>샘플링 정보 파악}
B --> C{주파수 대역폭<br>및 관심 대역 설정}
C --> D{최대 레벨 M 결정}
D --> E{오더 후보<br>선정}
E --> F{"테스트 변환 수행<br>(오더, 레벨 조합)"}
F --> G{계수 해석 및<br>목적함수 평가}
G --> H{최적 파라미터 선택}
H --> I((종료))" %}

신호 길이를 확인하는 단계는 레벨을 계산하기 위한 초기 조건이 된다. 예컨대 신호가 $2^M$ 샘플 길이를 가질 때는 이론적으로 최대 $M$까지 분해할 수 있으나, 실제 적용 시에는 잡음 수준이나 분석 범위를 고려하여 $M$보다 낮게 설정한다. 관심 대역을 설정하는 단계에서는 분석 대상 신호가 주로 포함하는 주파수 영역을 파악해, 레벨별 대역 분할이 어떤 식으로 이뤄지는지 예측한다. 그 후 오더 후보군을 정해 놓고, 각 조합에 대해 웨이블릿 변환을 시도해본 뒤 결과 계수를 평가한다. 계수 분포나 주요 성분의 분리가 목적에 얼마나 부합하는지를 살펴보고, 최적 파라미터를 선택한다.

#### 신호 종류별 접근 전략

음성이나 음악 신호처럼 인간 청각 주파수 범위(대략 20 Hz \~ 20 kHz)에 집중된 신호의 경우, 오더를 지나치게 높이지 않아도 변별력 있는 세부 성분을 얻을 수 있다. 반면 지진파나 바이오 신호처럼 초저주파부터 초고주파까지 폭넓은 대역을 다루는 경우에는 레벨을 높게 설정하고, 분석 목적에 따라 적절히 높은 오더를 써서 부드러운 모함수 기반 분해를 시도하기도 한다. 신호가 짧고 급변 구간이 많으면 오더가 너무 높을 때 감쇄 효과가 커질 수 있으므로, 오더를 중간 정도로 유지하고 레벨도 신호 길이에 맞춰 제한하는 편이 좋다.

고정된 파라미터로는 상황에 따라 최적화가 어렵고, 여러 조합을 시도한 뒤 재구성 오차나 해석에 유리한 지표(특정 주파수 대역에서의 에너지 집중도 등)를 확인하여 결정하는 경우가 많다. 파라미터 선택은 상당 부분 경험적이므로, 기본 원칙을 따른 뒤에는 실제 데이터로 반복 실험을 통해 조정하는 과정을 거친다.
