시계열 분류 프로젝트: Robot Execution Failures

jul ee·2025년 5월 23일

데이터 성장기

목록 보기
112/139

📋 시계열 분류 프로젝트: Robot Execution Failures

해당 프로젝트는 로봇 작업 중 발생하는 실패 여부를 시계열 센서 데이터 기반으로 분류하는 것을 목표로 진행하였다.

시간의 흐름에 따라 수집된 다변량 센서 데이터를 분석하고 이를 기반으로 분류 모델을 구축하였다. 모델 해석성과 분류 정확도를 동시에 확보하기 위해 시계열에서 추출된 주요 특징을 해석하는 것에 중점을 두었다.

🛠️ Tech Stack

Language:  Python
Data Analysis & EDA:  pandas, numpy, Jupyter Notebook
Time Series Feature Extraction:  tsfresh
Visualization:  matplotlib, seaborn
Machine Learning:
- Modeling:  scikit-learn (LogisticRegression, RandomForestClassifier), XGBoost
- Evaluation:  scikit-learn (accuracy_score, classification_report, confusion_matrix)


프로젝트 개요


  • 데이터: tsfresh.examples.robot_execution_failures
  • 목표:  시계열 내 구조적 패턴을 파악하고 로봇의 작업 실패 여부를 분류
  • 구성:
    • 총 88개의 시계열 (id 단위)
    • 각 시계열은 15개의 시간 구간을 가지며, 총 6개의 센서 값 포함
    • 센서: F_x, F_y, F_z (Force), T_x, T_y, T_z (Torque)
    • 타겟: 작업 실패 여부 (True: 실패, False: 정상)

목차


  1. 데이터 로드 및 확인
  2. 데이터 전처리
  3. EDA: Feature Exploration
  4. 모델 학습 및 성능 비교
  5. 결론 도출


분석 프로세스


1. 데이터 로드 및 확인

1.1  데이터 로드 및 구조 확인

  • tsfresh에서 제공하는 시계열 예제 데이터 로드
  • id 기준의 그룹 시계열 구조 확인

1.2  타겟 분포 확인

  • True/False 분포 확인 (작업 실패 여부)
  • 클래스 불균형 여부 점검

1.3  시계열 길이 및 센서 분포 확인

  • 각 id의 시계열 길이 = 15
  • 센서 값 전체 분포 및 값 범위 시각화

2. 데이터 전처리

2.1  데이터 분할 (Custom Split)

  • True, False 균형 유지하며 train/test 3:1 비율 분할

2.2  특징 추출 (Tsfresh)

  • EfficientFCParameters 기반 자동 추출
  • 4662개의 시계열 파생 특징 생성

2.3  결측치 처리

  • 일부 복잡한 파생 특징에서 NaN 발생
  • impute()로 일괄 보간 처리 후 모델링에 활용

3. EDA: Feature Exploration

시계열 분석의 해석력을 높이기 위해 중점적으로 수행하였다.

4662개의 자동 생성 특징 중 정량 평가를 통해 의미 있는 상위 특징을 선별하고, 클래스 간 분포 차이 및 패턴을 시각화하여 해석하였다.

3.1  추출된 상위 특징 선정

  • 기준: 분산(variance), 상호정보량(mutual_info), 클래스 간 평균 차이(mean_diff)
  • 세 기준을 rank로 정규화 후 종합 점수(combined_score) 계산
  • Top 10 특징 자동 선정

3.2  특징 해석

  • F_z__c3__lag_3, F_z__abs_energy, T_y__variance 등은 타겟 구분에 높은 분별력을 보임
  • 일부 특징은 특정 샘플에서만 급격한 변화 → 예측 타겟과 직접적 연결 가능성
순위Feature NameVarianceMutual
Info
Mean
Diff
Combined
Score
분석 요약
1F_zc3
lag_3
9.43e+160.47281.41e+080.9949매우 높은 분산과 클래스 간 평균 차이
→ 타겟 구분에 강한 신호
2Ty__time
reversal
asymmetry

statistic__lag_3
8.17e+130.48363.75e+050.9941Mutual Info 기준 2위
→ 시계열의 비대칭성이 타겟 구분에 도움
3F_z__variance4.77e+090.5133
(최고)
6.42e+040.9931Mutual Info 최고
→ 타겟과의 정보적 연결성이 가장 강함
4F_zc3lag_21.02e+17
(최고)
0.44941.55e+080.9918최고 분산과 높은 평균 차이
→ 가장 폭발적인 분산형 신호
5F_z__abs_energy1.98e+130.45453.44e+06
(최고)
0.9909에너지 총량 기준 클래스 간 차이 극대화
→ 강력한 타겟 구분 가능성
6F_y__abs_energy9.23e+090.48675.53e+040.9908Mutual Info 높고,
에너지 수준의 변화가 유의미함
7F_yc3lag_39.73e+110.45512.55e+050.9898지연 자기상관 기반 특징
클래스 간 변화 양상이 큼
8T_x__abs_energy7.32e+110.45405.84e+050.9898에너지 기반 특징
T_x 축 기준 클래스 간 차이 존재
9T_y__variance5.15e+07
(최소)
0.5175
(최고)
3.75e+030.9897Mutual Info는 높지만 실제 값 차이는 작음
→ 비선형 패턴 반영 가능성
10T_y__abs_energy2.55e+110.45472.51e+050.9893T_y 축 에너지 수준에서 구분력 존재

3.3  특징 시각화

  • 상위 특징들의 전체 샘플 분포를 선형 그래프로 시각화
  • 클래스에 따른 분포 패턴 차이 확인 → 예측 가능성 해석

Top Feature Variance Visulization

시각화된 상위 특징들은 대부분 전체 샘플에 대해 고르게 분포되지 않고, 일부 특정 샘플에서만 큰 값의 급격한 변화를 보였다.

이는 해당 특징들이 특정 조건 또는 타겟 클래스에 민감하게 반응한다고 생각해 볼 수 있다. 모델이 클래스 간 차이를 학습하는 데 있어 충분히 의미 있는 정보가 존재한다고 해석할 수 있다.


4. 모델 학습 및 성능 비교

4.1  적용 모델

  • Logistic Regression
  • Random Forest
  • XGBoost (최종 모델)

4.2  성능 비교 테이블

ModelAccuracyPrecisionRecallF1-score
Logistic Regression0.57140.84690.57140.5891
Random Forest0.95240.96030.95240.9538
XGBoost1.00001.00001.00001.0000

XGBoost 성능 지표에서 과적합을 의심해 볼 수도 있지만
해당 데이터셋의 크기가 매우 작기 때문에 발생한 상황이라고 해석하였다.

4.3  특징 중요도 시각화: XGBoost

  • F_z__abs_energy 특징만이 실제 분류 의사결정에 사용되었음을 확인
  • 해당 특징의 분류력이 매우 강력함을 의미하지만, 데이터셋이 작기 때문에 모델이 과도하게 의존했을 가능성도 고려해야 함

5. 결론 도출

모델 비교 결과, XGBoost가 모든 평가 지표에서 가장 우수한 성능을 기록하며 최종 선택되었다.
정량적으로 선별한 주요 특징이 실제 모델 학습에도 유의미하게 반영된 점에서 해석 가능성을 확인할 수 있었다.

다만, 데이터의 크기가 매우 작아 모델이 소수 특징에 과도하게 의존한 결과일 수 있음을 고려해야 한다.

일반화를 위해 추가적인 데이터 확보와 검증이 필요하다.



인사이트 및 회고

시계열 데이터를 다룰 때도 마찬가지로 특징을 어떻게 추출하고 해석하느냐가 분석에서 가장 어렵고 중요한 부분이라는 것을 알 수 있었다.

tsfresh를 통해 자동으로 생성된 수많은 특징 중 실제로 의미 있는 특징을 정량적으로 선별하고 시각화해보는 과정에서 시계열과 모델의 이해도를 높이는 데 도움이 되었다.

데이터 수가 매우 적은 상황에서도 하나의 특징만으로 분류가 가능했던 점은 흥미로웠지만, 동시에 데이터의 일반화 가능성에 대한 한계를 확인하였다.

이번 분석을 통해 시계열 분류 문제에서도 데이터의 구조를 드러내는 특징 설계와 해석이 실제 모델의 성능만큼이나 중요하다는 점을 배웠다.


자세한 프로젝트 수행 과정은 🔗 GitHub reppository에서 확인할 수 있다.

profile
AI에 관심을 가지고, 데이터로 가치를 만들어 나가는 과정을 기록합니다.

0개의 댓글