6주차 | 3차 미니프로젝트
KT AIVLE SCHOOL 5기 6주차에 진행한 3차 미니프로젝트 내용 정리 글입니다.
1일차
도메인 이해
- 인간 행동 인식 : 다양한 센서를 활용하여 사람의 모션에 관련된 정보를 수집하고 해석하여 행동을 인식하는 기술
- 사례: 센서 신호 → 특징 추출 → 모델 학습 → 행동 추론
데이터 소개
- 데이터 출처: https://archive.ics.uci.edu/dataset/240/human+activity+recognition+using+smartphones
- 수집 방식
- 가속도 센서 : x, y, z축 선형가속도 측정, 자이로스코프 센서: 회전하는 물체의 각속도 측정
- 하나의 센서에서 수집된 신호를 가공방법을 달리하여 집계
- feature 이름 구조 : Sensor + Aggregation + Axis
프로젝트 목표
- 스마트폰 기반의 센서 데이터를 활용해 동작 분류하는 모델 완성
탐색적 데이터 분석
- target 확인
- 정적 행동의 수가 동적 행동보다 많다
- 누워있거나 서있는 경우가 가장 많다
- 정적 행동의 수가 동적 행동보다 많다
- 데이터 분석
- 전체 행동 유형
- 변수 중요도 분석: 중력 가속도가 많이 중요
- 변수 그룹 별 분석: 중력 가속도가 많이 중요
- 정적 vs 동적 유형
- 변수 중요도 분석: 몸의 회전 움직임과 몸의 선형적인 움직임이 중요
- 변수 그룹 별 분석: 몸의 선형적인 움직임이 가장 중요
- 개별 동작 분석
- 변수 중요도 분석: 중력 가속도, 몸의 선형적인 움직임이 중요
- 변수 그룹 별 분석: 중력 가속도, 몸의 선형적인 움직임이 가장 중요
- 전체 행동 유형
- 결론: 중력 가속도와 관련된 변수들이 제일 중요하다
기본 모델링
- 모델은 Random Forest, XGBoost, LightGBM, CatBoost 사용
- 모델의 성능은 부스팅 모델들이 가장 좋게 나옴 (accuracy: 거의 98~ 99%)
- 교차 검증도 시도했지만 그냥 예측한 것과 차이가 거의 없음
모델별로 변수 중요도를 이용하여 각각의 성능을 비교한 데이터 프레임 생성
2일차
단계별 모델링
- 모델 1: 동적, 정적 유무 분류 모델 선정 → RandomForest 모델 선택(accuracy : 100%)
- 모델 2-1 : 정적 동작 세부 분류 모델 선정 → CatBoost 모델 선택(accuracy : 98.6%)
- 모델 2-2 : 동적 동작 세부 분류 모델 선정 → CatBoost 모델 선택(accuracy : 100%)
- 테스트 데이터 로드, 전처리 + 예측 및 성능 평가 함수 생성
예측 결과 accuracy : 98.7%(모델 2_1 전체 변수), 98.9%(모델 2_1 상위 25개 변수)
추가 학습 사항
- 탐색적 데이터 분석 과정에서 구한 특성 중요도를 기준으로 고유한 특성 값들(약 20~30개) 만으로 학습 및 평가 수행해도 결과가 전체 변수를 활용한 것과 비슷 → 아주 좋은 부분이었던 것 같다
- 딥러닝 모델, ‘elu’ 활성화 함수를 이용하여 분류하는 방법도 있었다
3일차
Kaggle 대회
- 주제: 센서 데이터를 활용한 행도 유형 분류
- 정적, 동적으로 너무 간단하게만 나눠서 동적 세부 활동 분류에서 성능이 너무 안 좋게 나옴
- 최종적으로 accuracy : 0.895 나옴
- 시간 순서대로 정렬한 후 분석과 처리를 했어야 했다…
- 변수들을 제대로 파악하자…
- 딱 중간 순위를 함..
상위 랭커들의 풀이
- 시간 순서대로 정렬 후 결측치를 선형 보간법으로 채움
- MICE를 이용하여 결측치 처리
- time_stamp 변수가 중요했다
- 선형 보간법 + median으로 채우기
- datetime으로 날짜 및 시간 변수들을 포함시켜야 했다
- 중요 변수를 찾아내는게 중요했다…
- 시간 관련 변수가 있다면 우선 날짜 및 시간 변수 만들어보기
느낀점
- 데이터 분석 및 머신러닝, 딥러닝 프로젝트 진행 시 필요한 점들을 또 한번 배울 수 있었다
- 배운 부분을 정리하여 나의 능력으로 만들어야겠다