시계열 데이터 간의 유사성을 측정하는 작업은 데이터 마이닝, 패턴 인식, 시계열 예측 및 클러스터링에 있어 핵심적인 과정입니다. RMS, 최소값, 최대값, 표준편차와 같은 다양한 통계적 특성을 종합적으로 고려하기 위해서는 단일 거리 측정법보다 여러 측정법을 조합하는 접근이 효과적입니다. 본 보고서에서는 TSdist R 패키지에서 제공하는 다양한 시계열 거리 측정법을 분석하고, 이들을 효과적으로 통합하는 방법론을 제시합니다. 특히 각 측정법이 포착하는 시계열의 고유한 특성과 이를 종합적으로 활용하는 전략에 중점을 두었습니다.

## 시계열 거리 측정의 기초와 개요
시계열 데이터 분석에서 두 시계열 간의 유사성을 정량화하는 것은 시계열 클러스터링, 분류, 이상 탐지 등 다양한 데이터 마이닝 작업의 기반이 됩니다. TSdist 패키지는 시계열 데이터를 위한 포괄적인 거리 측정법을 제공하며, 이를 통해 다양한 데이터 마이닝 작업을 수행할 수 있습니다[3].
시계열 데이터의 특성상 단순한 점별 비교를 넘어서 시간적 구조, 복잡도, 패턴 등을 고려해야 하는 필요성이 있습니다. 이에 따라 시계열 거리 측정은 형태 기반(shape-based), 특성 기반(feature-based), 모델 기반(model-based) 접근법으로 분류될 수 있습니다[4]. 특히 형태 기반 접근법 중에서는 동적 시간 왜곡(DTW)이 널리 사용되지만, 계산 비용이 높다는 단점이 있습니다[4].
### 주요 시계열 거리 측정법
TSdist 패키지는 다양한 시계열 거리 측정법을 제공하며, 각 측정법은 시계열의 서로 다른 특성을 포착합니다. 패키지 내에는 Lp 거리, 교차 상관 기반 거리, 동적 시간 왜곡(DTW), 편집 거리(EDR, LCSS, ERP), 푸리에 변환 기반 거리 등 다양한 측정법이 포함되어 있습니다[3].
## 주요 거리 측정법 상세 분석
### 유클리드 거리(Lp Distance)
유클리드 거리는 시계열 데이터 간의 점별 차이를 직접 측정하는 가장 기본적인 거리 측정법입니다. TSdist 패키지에서는 `LPDistance` 함수를 통해 구현됩니다[3].
#### 특성 및 장단점:
- **RMS 반영**: 유클리드 거리는 본질적으로 Root Mean Square Error(RMSE)와 직접적인 관련이 있어, 시계열의 진폭 차이를 효과적으로 포착합니다.
- **간단한 계산**: 계산이 단순하고 빠르기 때문에 초기 분석이나 대규모 데이터셋에 적합합니다.
- **한계점**: 시간적 변형에 민감하며, 시계열의 복잡도나 패턴 변화를 고려하지 않습니다.
### 복잡도-불변 거리(Complexity-Invariant Distance)
복잡도-불변 거리(CID)는 시계열의 복잡도를 고려하여 유클리드 거리를 보정하는 방법입니다. TSdist 패키지에서는 `CIDDistance` 함수로 제공됩니다[2].
#### 특성 및 장단점:
- **복잡도 고려**: 시계열의 복잡도 추정치를 기반으로 유클리드 거리를 보정합니다[2].
- **표준편차 반영**: 복잡도 추정 과정에서 시계열의 표준편차가 고려되므로, 변동성이 다른 시계열 간의 비교에 유용합니다.
- **구현 세부사항**: `CIDDistance` 함수는 TSclust 패키지의 `diss.CID` 함수를 래핑한 것으로, 같은 길이의 두 수치 시리즈 간의 복잡도 기반 유클리드 거리 보정을 계산합니다[2].
```R
# 예시 사용법
CIDDistance(series1, series2)
```
이 함수는 복잡도 추정을 통해 유클리드 거리를 보정함으로써, 단순한 진폭 차이뿐만 아니라 시계열의 내재적 복잡성도 고려합니다[2].
### 상관 기반 거리(Correlation-based Distances)
TSdist 패키지는 Pearson 상관계수를 활용한 `CorDistance`와 시간적 상관관계와 원시값 동작을 결합한 `CortDistance`를 제공합니다[3].
#### 특성 및 장단점:
- **패턴 강조**: 상관 기반 거리는 시계열의 절대적 값보다 패턴 유사성에 중점을 둡니다.
- **시간적 관계 반영**: 특히 `CortDistance`는 시간적 상관관계와 원시값의 동작을 동시에 고려합니다[3].
- **정규화된 비교**: 상관계수를 활용하므로 스케일이 다른 시계열 비교에 유용합니다.
### 동적 시간 왜곡(Dynamic Time Warping)
동적 시간 왜곡(DTW)은 시간축을 비선형적으로 조정하여 두 시계열 간의 최적 정렬을 찾는 기법입니다. TSdist 패키지에서는 `DTWDistance` 함수로 제공됩니다[3].
#### 특성 및 장단점:
- **시간 비정렬 처리**: 시간적으로 늘어나거나 압축된 패턴을 효과적으로 비교할 수 있습니다[4].
- **계산 비용**: 동적 프로그래밍 알고리즘을 사용하여 최적 워핑 경로를 찾기 때문에 계산 비용이 높습니다[4].
- **최적화 기법**: 이러한 계산 비용 문제를 완화하기 위해 다양한 최적화 기법이 개발되었습니다[4].
DTW는 형태 기반 시계열 클러스터링에서 특히 인기가 있으며, 시간적 패턴이 중요한 분석에 적합합니다[4].
### 기타 중요 거리 측정법
TSdist 패키지는 위에서 언급한 측정법 외에도 다양한 거리 측정법을 제공합니다[3]:
- **편집 거리 계열**: 실수 시퀀스를 위한 편집 거리(EDR), 실수 시퀀스를 위한 최장 공통 부분수열 거리(LCSS), 실제 페널티에 기반한 편집 거리(ERP)
- **자기상관 기반 거리**: 자기상관 기반 비유사도(`ACFDistance`), 부분 자기상관 기반 비유사도(`PACFDistance`)
- **모델 기반 거리**: LPC 켑스트럴 계수 기반 비유사도(`ARLPCCepsDistance`), Maharaj가 제안한 모델 기반 비유사도(`ARMahDistance`), Piccolo가 제안한 모델 기반 비유사도(`ARPicDistance`)
- **압축 기반 거리**: 압축 기반 비유사도 측정(`CDMDistance`)
각 측정법은 시계열의 서로 다른 특성을 포착하므로, 분석 목적에 따라 적절한 측정법을 선택하거나 여러 측정법을 조합하는 것이 중요합니다.
## 거리 측정법의 통합적 접근
단일 거리 측정법은 시계열의 특정 측면만을 포착하는 경향이 있습니다. 따라서 RMS, 최소값, 최대값, 표준편차 등을 종합적으로 고려하기 위해서는 다양한 거리 측정법을 조합하는 접근이 효과적입니다.
### 다중 거리 측정법 적용 전략
여러 거리 측정법을 동시에 적용하고 결과를 통합하는 전략은 다음과 같습니다:
1. **다양한 측정법 계산**: 분석 목적에 적합한 여러 거리 측정법을 계산합니다.
2. **결과 정규화**: 각 측정법의 결과를 표준화하여 비교 가능하게 만듭니다.
3. **통합 점수 생성**: 정규화된 결과를 가중 합산하여 종합 점수를 생성합니다.
이러한 접근은 각 측정법이 포착하는 시계열의 서로 다른 특성을 모두 고려할 수 있게 해줍니다.
### 측정법 선택 매트릭스
아래 표는 다양한 측정법이 시계열의 어떤 특성을 포착하는지 보여줍니다:
| 거리 측정법 | RMS 반영 | 표준편차 반영 | 시간적 패턴 반영 | 복잡도 고려 | 계산 효율성 |
|------------|---------|--------------|----------------|------------|-----------|
| LPDistance | ✓ | × | × | × | 높음 |
| CIDDistance | ✓ | ✓ | × | ✓ | 중간 |
| CorDistance | × | × | ✓ | × | 높음 |
| CortDistance | ✓ | × | ✓ | × | 중간 |
| DTWDistance | ✓ | × | ✓ | × | 낮음 |
| ACFDistance | × | ✓ | ✓ | × | 중간 |
이 매트릭스를 통해 분석 목적에 맞는 측정법 조합을 선택할 수 있습니다.
### 통계 지표 결합 방법
거리 측정 결과와 별도로 계산한 통계 지표를 결합하여 더 포괄적인 분석을 수행할 수 있습니다:
1. **기본 통계량 계산**: 각 시계열에 대해 최소값, 최대값, 평균, 표준편차 등의 통계량을 계산합니다.
2. **통계량 간 거리 측정**: 두 시계열의 통계량 간의 차이를 계산합니다.
3. **거리 측정 결과와 통합**: 거리 측정 결과와 통계량 차이를 가중 합산합니다.
예를 들어, RMSSD(Root Mean Square Successive Difference)는 시계열의 연속적인 차이에 기반한 시간 도메인 측정법으로, 시계열의 고주파 변동을 포착하는 데 유용합니다[5]. 이러한 통계 지표를 다른 거리 측정법과 결합하면 시계열의 다양한 측면을 포괄적으로 고려할 수 있습니다.
## 실제 구현과 응용
### R 코드 예시: 다중 거리 측정법 적용
아래 코드는 TSdist 패키지를 활용하여 여러 거리 측정법을 적용하고 결과를 통합하는 방법을 보여줍니다:
```R
# TSdist 패키지 설치 및 로드
library(TSdist)
# 예시 시계열 데이터
data(example.series1)
data(example.series2)
# 다양한 거리 측정법 적용
euclidean_dist <- LPDistance(example.series1, example.series2)
cid_dist <- CIDDistance(example.series1, example.series2)
cor_dist <- CorDistance(example.series1, example.series2)
dtw_dist <- DTWDistance(example.series1, example.series2)
# 결과 정규화 (최대값으로 나누어 0-1 범위로 변환)
normalize <- function(x, measures) {
return(x / max(measures))
}
measures <- c(euclidean_dist, cid_dist, cor_dist, dtw_dist)
norm_euclidean <- normalize(euclidean_dist, measures)
norm_cid <- normalize(cid_dist, measures)
norm_cor <- normalize(cor_dist, measures)
norm_dtw <- normalize(dtw_dist, measures)
# 가중치 설정 (예시)
weights <- c(0.2, 0.3, 0.2, 0.3)
# 통합 점수 계산
integrated_score <- sum(weights * c(norm_euclidean, norm_cid, norm_cor, norm_dtw))
```
### 시각화 방법
시계열 거리 측정 결과를 시각화하는 것은 패턴 이해와 해석에 중요합니다:
```R
# 다양한 거리 측정법의 결과를 비교하는 막대 그래프
barplot(c(norm_euclidean, norm_cid, norm_cor, norm_dtw),
names.arg = c("Euclidean", "CID", "Correlation", "DTW"),
col = "skyblue",
main = "Normalized Distance Measures",
ylab = "Normalized Distance")
# 계층적 클러스터링을 활용한 덴드로그램 시각화
distances <- TSDatabaseDistances(ts_database, distance = "dtw")
hc <- hclust(as.dist(distances), method = "complete")
plot(hc, hang = -1, main = "Hierarchical Clustering of Time Series")
```
### 클러스터링과의 연계
거리 측정 결과를 클러스터링 알고리즘과 연계하여 유사한 시계열 그룹을 식별할 수 있습니다:
```R
# k-means 클러스터링을 위한 거리 행렬 계산
dist_matrix <- TSDatabaseDistances(ts_database, distance = "dtw")
# 다차원 축소를 통한 시각화 (예: PCA 또는 t-SNE)
library(Rtsne)
tsne_result <- Rtsne(dist_matrix, is_distance = TRUE)
plot(tsne_result$Y, col = cluster_assignments, pch = 19,
main = "t-SNE Visualization of Time Series Clusters")
```
dtwclust 패키지는 특히 DTW 거리를 활용한 시계열 클러스터링을 위한 포괄적인 기능을 제공합니다[4]. 이 패키지는 다양한 클러스터링 알고리즘과 DTW 최적화 기법을 포함하고 있어, 대규모 시계열 데이터 분석에 유용합니다.
## 결론 및 권장사항
시계열 데이터 간의 거리를 측정할 때 RMS, 최소값, 최대값, 표준편차 등을 종합적으로 고려하기 위해서는 다양한 거리 측정법을 조합하는 접근이 효과적입니다. TSdist R 패키지는 이러한 다양한 거리 측정법을 제공하며, 이를 통해 시계열의 다양한 특성을 포착할 수 있습니다.
### 권장 접근 방식:
1. **목적 기반 측정법 선택**: 분석 목적에 맞는 거리 측정법 조합을 선택합니다.
2. **다중 측정법 적용**: 여러 거리 측정법을 적용하고 결과를 정규화하여 통합합니다.
3. **통계 지표 결합**: 거리 측정 결과와 별도로 계산한 통계 지표를 결합하여 더 포괄적인 분석을 수행합니다.
4. **시각화 및 클러스터링**: 결과를 시각화하고 클러스터링 알고리즘과 연계하여 패턴을 식별합니다.
이러한 통합적 접근은 시계열 데이터의 복잡한 특성을 더 잘 이해하고, 클러스터링, 분류, 이상 탐지 등 다양한 데이터 마이닝 작업의 정확도를 향상시킬 수 있습니다.
특히 CIDDistance와 같은 복잡도 기반 측정법은 시계열의 변동성을 고려하여 유클리드 거리를 보정함으로써, 표준편차가 다른 시계열 간의 비교에 유용합니다[2]. 또한 DTW와 같은 형태 기반 측정법은 시간적 패턴을 효과적으로 포착할 수 있지만, 계산 비용이 높다는 단점을 고려해야 합니다[4].
최종적으로, 어떤 단일 거리 측정법도 모든 데이터셋에 최적이라고 할 수 없으므로, 다양한 전략을 테스트하고 비교하는 것이 중요합니다[4]. TSdist 패키지와 같은 공통 인프라는 이러한 다양한 접근법을 쉽게 구현하고 비교할 수 있게 해줍니다.
Citations:
[1] https://www.semanticscholar.org/paper/764b8a36edc3ef0ec668e280b21ecd6a89d61bcd
[2] https://rdrr.io/cran/TSdist/man/CIDDistance.html
[3] https://www.rdocumentation.org/packages/TSdist/versions/3.7.1/topics/TSdist-package
[4] http://r.meteo.uni.wroc.pl/web/packages/dtwclust/vignettes/dtwclust.pdf
[5] https://pubmed.ncbi.nlm.nih.gov/15787862/
[6] https://www.semanticscholar.org/paper/4bf0e9786d6638dc7d4b1fc929def68da9003c4e
[7] https://github.com/ymtoo/ts-dist
[8] https://pmontman.r-universe.dev/TSclust
[9] https://www.semanticscholar.org/paper/0cd0679fad1855582fda34593d39abfd2b488a75
[10] https://www.semanticscholar.org/paper/d639df461a9a67e8a86fb989014fb6f5fd5b60d5
[11] https://pubmed.ncbi.nlm.nih.gov/32336025/
[12] https://www.semanticscholar.org/paper/4a66df2de68cc243aa4ab041fe2e096fbf4b0d29
[13] https://pubmed.ncbi.nlm.nih.gov/22455463/
[14] https://www.semanticscholar.org/paper/01e649ac2ba9f6dfed9adad99256b14ac9f4482e
[15] https://rdrr.io/cran/TSdist/man/TSdist-package.html
[16] https://digitalcommons.unl.edu/r-journal/476/
[17] https://www.semanticscholar.org/paper/95710d37fcc699ec875bb4713be697e2125d239a
[18] https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3632530/
[19] https://rdrr.io/cran/TSdist/man/CortDistance.html
[20] https://digital.library.txst.edu/items/32e5b489-19ad-4785-bb0a-844f81946705
[21] https://cran.r-universe.dev/TSdist
[22] https://github.com/Data-Hero/tsdist/blob/main/README.md
[23] https://journal.r-project.org/archive/2016/RJ-2016-058/RJ-2016-058.pdf
[24] https://www.rdocumentation.org/packages/TSclust/versions/1.3.1/topics/TSclust
[25] https://en.wikipedia.org/wiki/Root_mean_square
[26] https://www.rdocumentation.org/packages/TSdist/versions/3.7.1/topics/TSDistances
[27] https://journal.r-project.org/articles/RJ-2016-058/
[28] https://rdrr.io/cran/TSdist/man/DTWDistance.html
[29] https://cran.r-project.org/web/packages/TSclust/TSclust.pdf
[30] https://www.allaboutcircuits.com/technical-articles/how-standard-deviations-relates-rms-values/