본 프로젝트는 스마트폰의 가속도계와 자이로스코프 센서 데이터를 활용하여 사용자의 행동을 자동으로 인식하는 모델을 개발하는 것을 목표로 합니다. 이러한 기술은 헬스케어, 운동 모니터링, 안전 관리 등 다양한 분야에 활용될 수 있습니다.
- 2024년 10월 16일 ~ 2024년 10월 18일 (3일간)
❓ 스마트폰 센서 데이터(가속도계, 자이로스코프)를 통해 6가지 동작을 정확히 분류할 수 있는가?
- 🔹 스마트 디바이스의 컨텍스트 인식 기능 강화
- 🔹 건강 모니터링 및 활동 추적 서비스 지원
- 🔹 사용자 맞춤형 서비스 제공을 위한 기초 기술
- 🔹 낙상 감지 등 안전 관련 응용 프로그램 개발 가능
분류 | 기술 | 용도 | |
---|---|---|---|
💻 | 언어 | Python | 전체 프로젝트 개발 |
데이터 처리 | Pandas | 데이터프레임 조작 및 전처리 | |
NumPy | 수치 연산 및 배열 처리 | ||
시각화 | Matplotlib, Seaborn | 데이터 시각화 및 결과 표현 | |
🤖 | 머신러닝 | Scikit-learn | 데이터 전처리, 모델 평가 |
TensorFlow, Keras | 신경망 모델 구현 및 학습 | ||
개발 환경 | Google Colab | 코드 개발 및 학습 환경 |
분석 대상 | 스마트폰 센서 기반 인간 행동 데이터 |
---|---|
출처 | UCI Machine Learning Repository |
데이터 구성 |
|
측정 방법 |
|
- 데이터 전처리 (스케일링, 인코딩)
- 다양한 신경망 구조 실험
- 은닉층 없는 기본 모델
- 다층 신경망 모델
- 드롭아웃 적용 모델
- 조기 종료(Early Stopping) 적용 모델
- 모델 성능 비교 및 평가
분석 관점 | 주요 특성 | 관찰 결과 |
---|---|---|
6개 행동 구분 |
|
|
정적/동적 행동 구분 |
|
|
🔍 주목할 점: 위 KDE 플롯 시각화에서 볼 수 있듯이, 중요도가 높은 변수(좌측)는 LAYING 행동만 분리하고 나머지 행동들의 분포가 상당 부분 겹치는 반면, 중요도가 낮은 변수(우측)는 오히려 정적 행동과 동적 행동을 명확하게 구분합니다. 이는 모델 구축 시 단순히 전체 중요도가 높은 변수만 고려하는 것이 아니라, 문제의 계층적 특성에 맞는 변수 선택이 중요함을 보여줍니다.
🔍 주요 관찰: 이진 분류(정적/동적 행동 구분)에 초점을 맞춘 특성 중요도 분석에서는 위 그래프와 같이 매우 명확한 패턴이 관찰됩니다. 특히 tBodyAccJerk-entropy()-X와 같은 특성에서는 정적 행동(파란색)과 동적 행동(주황색)이 완전히 분리된 분포를 보여, 이진 분류가 99.9%의 높은 정확도로 가능했던 이유를 설명합니다. 이는 문제를 계층적으로 접근할 때 각 단계에 맞는 특성 선택의 중요성을 보여줍니다.
모델 | Hidden Layer | Dropout | Early Stopping | Accuracy | Test |
---|---|---|---|---|---|
model1 | - | - | - | 0.97 (0.954,0.975) | 0.955812 |
model2 | 64,32,16,8 | - | - | 0.98 (0.969,0.986) | 0.959891 |
model3 | 64,32,16,8 | 0.1 | - | 0.98 (0.970,0.986) | 0.951054 |
model4 | 64,32,16,8 | 0.1 | min_delta=0.001, patience=5 | 0.97 (0.961,0.980) | 0.941536 |
model7 | 64,32 | - | - | 0.98 (0.971,0.987) | 0.961251 |
단계 | 모델 | 정확도 | 구성 |
---|---|---|---|
1단계 | 정적/동적 행동 분류 | 0.999 | Hidden Layer: 32, epoch: 50, learning rate: 0.001, sigmoid 활성화 함수 |
2단계 | 동적 행동 세부 분류 | 0.99 | Hidden Layer: 64,32,16, epoch: 50, softmax 활성화 함수 |
정적 행동 세부 분류 | 0.96 | Hidden Layer: 512,128,32, epoch: 70, softmax 활성화 함수 | |
통합 | 파이프라인 모델 | 0.97 | 1단계 + 2단계 모델을 결합한 파이프라인 |
1단계: 정적/동적 행동 분류 | 2단계: 세부 행동 분류 | |
---|---|---|
![]() |
![]() |
![]() |
1단계 모델 학습 곡선 | 동적 행동 모델 학습 곡선 | 정적 행동 모델 학습 곡선 |
학습 곡선 분석:
- 1단계 모델(정확도: 0.999): 빠르게 수렴하며 안정적인 학습 곡선을 보임
- 동적 행동 모델(정확도: 0.99): 약간의 변동이 있지만 비교적 안정적으로 수렴
- 정적 행동 모델(정확도: 0.96): 가장 변동성이 크고 학습에 더 많은 시간이 소요됨
핵심 관찰: 정적 행동(STANDING, SITTING, LAYING) 간의 센서 데이터 패턴이 서로 유사하여 세부 분류가 더 어려운 반면, 동적 행동(WALKING 계열)은 상대적으로 특징이 뚜렷하여 분류가 용이함을 확인할 수 있습니다.
프로젝트의 핵심은 복잡한 다중 분류 문제를 더 단순한 하위 문제로 분해하는 계층적 접근법입니다.
-
1단계 모델: 정적 행동(0)과 동적 행동(1)을 구분 (정확도: 99.9%)
- 정적 행동: STANDING, SITTING, LAYING
- 동적 행동: WALKING, WALKING_UPSTAIRS, WALKING_DOWNSTAIRS
-
2-1단계 모델: 정적 행동 내 세부 분류 (정확도: 96%)
- STANDING, SITTING, LAYING 구분
-
2-2단계 모델: 동적 행동 내 세부 분류 (정확도: 99%)
- WALKING, WALKING_UPSTAIRS, WALKING_DOWNSTAIRS 구분
-
통합 파이프라인: 두 단계 모델을 결합하여 최종 예측 수행 (정확도: 97.5%)
계층적 모델링 접근법을 통해 최종 통합 파이프라인은 테스트 데이터에서 97.5%의 정확도를 달성했습니다.
test_result = data_pipeline(test)
print(accuracy_score(test['Activity'], test_result['Activity']))
46/46 —————————————————— 0s 1ms/step
27/27 —————————————————— 0s 2ms/step
20/20 —————————————————— 0s 2ms/step
0.9748470428280082
✓ model 7: Accuracy(정확도) : 0.98
- hidden layer 개수 2개
- Dropout, Early Stopping 미사용
- 단순한 구조로 설정했을 때 가장 정확도가 높게 나옴
흥미로운 관찰 결과 중 하나는 변수 중요도와 분류 효과성 간의 역설적 관계입니다. 전체 6개 행동 분류에서 중요도가 높게 나온 변수들은 정작 가장 기본적인 구분인 정적/동적 행동 분류에는 효과적이지 않았습니다. 반면, 중요도가 낮게 평가된 하위 변수들이 정적/동적 행동을 명확하게 구분하는 데 더 효과적이었습니다.
이는 문제의 계층적 특성을 이해하고 각 단계에 맞는 특성을 선별하는 것의 중요성을 보여줍니다. 이러한 통찰이 계층적 모델링 접근법의 효과성을 뒷받침합니다.
- 계층적 접근법의 우수성: 복잡한 다중 분류 문제를 단계별로 해결하는 방식이 단일 모델보다 효과적
- 이진 분류의 높은 정확도: 정적/동적 행동 구분은 99.9%의 정확도로 매우 신뢰성 높게 수행 가능
- 행동 유형별 정확도 차이: 동적 행동(99%)이 정적 행동(96%)보다 세부 분류가 더 정확함 - 정적 행동 간 유사성이 더 높기 때문
- 모델 단순화의 효과: 더 복잡한 구조가 아닌, 최적화된 간결한 모델(model 7)이 더 좋은 성능 달성
- 파이프라인 자동화: 데이터 전처리부터 예측까지 일관된 파이프라인 구축으로 실시간 예측 시스템 구현 가능
- 건강 관리 시스템: 일일 활동량 자동 기록, 칼로리 소모 추적, 운동 패턴 분석을 통한 맞춤형 피트니스 코칭
- 활동 촉진 서비스: 장시간 정적 행동 시 알림 제공, 규칙적인 움직임 유도로 건강한 생활 습관 형성 지원
- 맞춤형 UX: 사용자의 현재 행동 상태에 따라 스마트폰 인터페이스와 알림 방식을 자동 최적화
- 스마트홈 연동: 행동 패턴 감지에 따른 자동 조명 조절, 실내 온도 제어, 음악/미디어 추천 등 환경 최적화
- 안전 모니터링: 노인이나 장애인의 비정상적 행동 패턴 감지, 낙상 즉시 알림, 응급 상황 자동 대응 시스템
- 교통 및 도시 계획: 대규모 인구의 행동 패턴 분석을 통한 대중교통 최적화 및 도시 인프라 계획 지원
📊 특성 선택 |
많은 특성(561개) 중 중요도 기반으로 핵심 특성을 선별하는 기법 습득 |
🔄 계층적 모델링 |
복잡한 다중 분류 문제를 더 작은 단위로 분해하여 해결하는 접근법 학습 |
🤖 딥러닝 최적화 |
드롭아웃, 조기 종료 등 과적합 방지 기법의 효과적인 적용 방법 습득 |
📈 신뢰구간 평가 |
단순 정확도가 아닌 신뢰구간을 활용한 모델 평가의 중요성 인식 - 정확도 뿐만 아니라 모델 예측의 신뢰성도 고려해야 함 |
🔍 세분화된 분류 |
단일 복잡 모델의 높은 정확도보다 문제를 세분화하여 각 하위 문제를 정확하게 해결하는 접근법이 더 효과적임을 학습 |
⚙️ 파이프라인 구축 |
복잡한 데이터 처리 및 다단계 예측 과정을 일관된 흐름으로 구현하는 기술 습득 |
💼 센서 데이터 이해 |
가속도계, 자이로스코프 센서 데이터의 특성과 의미에 대한 이해 심화 |
김예은 | 김지수 | 윤종진 | 이대희 | 정재원 | 황은비 |