Skip to content

rlawjdgns02/pulse_revise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

맥진 데이터 기반 한의학 체질 분류 모델

맥진(脈診) 센서 데이터를 활용하여 한의학의 한열(寒熱) 및 허실(虛實) 체질을 자동으로 분류하는 머신러닝 프로젝트입니다.

📌 프로젝트 개요

목적

  • 좌수(左手) 맥진 신호 분석을 통한 객관적 체질 진단 보조 시스템 개발
  • 전통적인 맥진의 정량화 및 자동화

데이터

  • 샘플 수: 100명
  • 원본 특성: 99개 맥진 측정 지표
    • 혈압 및 순환계 지표
    • 맥파 형태 및 진폭
    • 시간 및 주파수 특성
    • 에너지 및 변동성 지표
  • 분류 태스크:
    • 한열(寒熱): 한증(寒證) vs 열증(熱證)
    • 허실(虛實): 허증(虛證) vs 실증(實證)

🔬 방법론

1. 데이터 전처리

특성 간 상관관계 분석을 통한 중복 제거:

  • 완전 중복 특성 제거 (상관계수 = 1.0)
  • 고상관 특성 제거 (상관계수 > 0.95)
  • 저분산 특성 제거
  • 결과: 99개 → 73개 특성

2. 특성 선택 (Feature Selection)

다각도 평가를 통한 중요 특성 선별:

  • F-test: 통계적 유의성 기반
  • Mutual Information: 정보량 기반
  • Random Forest Importance: 모델 기반 중요도
  • RFE (Recursive Feature Elimination): 재귀적 제거

투표 방식: 4가지 방법 중 2개 이상 선택한 특성만 채택
결과: 73개 → 39개 특성

3. 최적 특성 개수 결정

  • 성능 비교 방법: 특성 개수별 교차 검증 성능 측정
  • SFS (Sequential Feature Selection): Forward 방식으로 최적 조합 탐색
  • 두 방법의 공통 선택 특성 추출
  • 최종 선택: 8개 핵심 특성

선택된 8개 특성

  1. MeanResp_Left - 평균 호흡수
  2. Cardiac Output_left - 심박출량
  3. H5_left - 5번째 맥파 피크
  4. W_R_Left - 맥파 폭
  5. ECO(%)_Left - 에너지 효율
  6. T4_R_Left - 4번째 시간 특성
  7. T5_R_Left - 5번째 시간 특성
  8. STD_PR_R_Left - 맥박 변동성

추후 실험 시 변동 가능

4. 모델 학습 및 평가

Nested Cross-Validation

과적합 방지 및 정직한 성능 평가를 위한 이중 교차 검증:

  • 외부 5-fold CV: 일반화 성능 평가
  • 내부 3-fold CV: 하이퍼파라미터 튜닝
  • 데이터 누수(Data Leakage) 완전 차단

평가 모델

  1. Logistic Regression

    • L1/L2 정규화
    • GridSearchCV로 최적 하이퍼파라미터 탐색
  2. Random Forest

    • 앙상블 기반 비선형 모델
    • 트리 깊이 및 샘플 수 최적화
  3. SVM (Support Vector Machine)

    • RBF 및 Linear 커널 비교
    • C 및 gamma 파라미터 조정
  4. Gradient Boosting

    • 순차적 앙상블 학습
    • Learning rate 및 subsample 최적화
  5. MLP (Multi-Layer Perceptron)

    • 얇은 신경망 구조 (1-hidden layer, 16 neurons)
    • Dropout, BatchNorm, L2 정규화로 과적합 방지
    • Early Stopping 적용

📁 프로젝트 구조

.
├── 좌수_특성.csv              # 맥진 특성 데이터
├── 좌수_한열_레이블.csv        # 한열 레이블
├── 좌수_허실_레이블.csv        # 허실 레이블
├── model.py                   # 전통적 ML 모델 학습 (LR, RF, SVM, GB)
├── mlp.py                     # 신경망 모델 학습
└── README.md                  # 프로젝트 설명서

📊 주요 기술적 특징

과적합 방지 전략

  1. 특성 축소: 99개 → 8개 (91% 감소)
  2. 정규화: L1/L2, Dropout, Weight Decay
  3. Nested CV: 데이터 누수 완전 차단
  4. Early Stopping: 과학습 자동 중단
  5. 샘플:특성 비율 최적화: 12.5:1 (100 샘플 / 8 특성)

재현성 보장

  • Random seed 고정 (42)
  • Stratified K-Fold로 클래스 균형 유지
  • 동일한 전처리 파이프라인

데이터 누수 방지

  • 각 CV fold마다 독립적으로 스케일링
  • Test set은 transform만 적용
  • 특성 선택도 train set에서만 수행

💡 핵심 인사이트

1. Less is More

  • 많은 특성보다 핵심 특성이 중요
  • 8개가 12개보다 성능 우수 (과적합 감소)

2. 특성 선택의 중요성

  • 다양한 방법의 교집합이 가장 안정적
  • 단일 방법은 과적합 가능성

3. 모델별 특성

  • Gradient Boosting: 비선형 패턴 학습에 강함
  • Logistic Regression: 안정적이고 해석 가능
  • MLP: 복잡도 제어 시 경쟁력 있음

4. 데이터 크기의 한계

  • 샘플 100개는 딥러닝에 제한적
  • 얇은 구조 + 강한 정규화 필수

🛠️ 기술 스택

  • 언어: Python 3.8+
  • 데이터 처리: pandas, numpy
  • 머신러닝: scikit-learn
  • 딥러닝: PyTorch
  • 시각화: matplotlib, seaborn

📖 참고 자료

사용된 알고리즘

Cross-Validation

🔮 향후 계획

  • 허실(虛實) 분류 모델 개발
  • 우수(右手) 맥진 데이터 통합

📄 라이선스

이 프로젝트는 학술 연구 목적으로 제작되었습니다.

👥 기여

버그 리포트, 기능 제안, 코드 개선은 언제나 환영합니다!

📧 문의

프로젝트 관련 문의사항이 있으시면 Issue를 등록해주세요.

About

pulse project (revise version)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published