이번에는 3일간 진행하는 미니 프로젝트! 4차의 여파로 인해... 난이도가 다소 조정된듯하다 ㅋ
미니 프로젝트 5차 : 스마트폰 센서 데이터 기반 인간 행동 인식 분류
프로젝트의 주제는 스마트폰 기반의 센서 데이터를 활용해 동작을 분류하는 모델을 만드는 것이다. 이름 그대로 스마트폰의 센서에서 측정된 데이터들을 활용해 데이터마다 어떤 동작의 상태인지를 구분해 냈다. 행동의 종류는 6가지로, 정적 행동으로 분류되는 눕기, 앉기, 서기의 3종류와 동적 행동으로 분류되는 걷기, 계단 오르기, 계단 내려가기로 구성되어 있었다. 단순히 모델로 바로 6개의 행동을 분류해 내는 것이 아니라, 우선 동작을 크게 정적/동적 행동으로 나누고, 그 안에서 세부 카테고리로 나누는 것이었다. 지금까지 한 프로젝트들이 한 번에 분류를 진행했기에 이렇게 모델을 쪼개서 해보는 게 처음이라서 처음에는 조금 헤매기도 했지만, 이런 식으로 프로젝트를 진행하는 게 결론적으로는 많은 도움이 되었다! 휘몰아치던 4주차에 비하면 비교적 평화로웠던 다섯 번째 프로젝트에 대해 간단하게 정리해보려고 한다 : P
1일차 : 데이터 분석 및 기본 모델링
▶ 1일차 일정 : 개별 실습 → 조별 토의 및 실습
EDA를 진행하며 데이터 구성과 분포를 확인해 보고 feature importance를 직접 확인해 보았다. 아찔했던 게 train 데이터의 feature의 개수가 561개여서 엄청나게 겁먹기도 했다 ㅠ.ㅜ 오죽하면 아예 프로젝트 시작 전 단순히 ipynb 파일과 data가 담긴 csv 파일 외에도 각 변수가 어떤 데이터인지 설명해 주는 파일까지 주어졌다! 561개의 변수들이 모두 따로국밥은 아니었고, 측정된 센서 + 집계 방식 + 측정된 축 이런 식으로 이름이 지정되어 있었다. 집계방식에 대해서도 지금까지는 평균, 최대최소, 중앙값 이런 것들만 생각했었는데, 빈도, 비대칭도, 첨도 등등 굉장히 다양했다. 프로젝트 때는 진도 나가기에 급급했는데, 실제로 이런 다양한 측정된 데이터가 행동 예측에 어떤 영향을 미치는지 궁금해지기도 했다.
561개의 feature들을 센서별 / 집계 함수별 / 축별로 모아서 갯수를 확인하기도 하고, kdeplot으로 하나의 feature와 target 간의 관계를 시각화하기도 했다. 처음에는 뭘 해야 되는지 어리둥절했었지만 단계를 차근차근 따라가다 보니까 왜 이런 분석을 하는지에 대해서도 이해가 가고, 특정행동에서는 어떤 변수가 가장 영향을 많이 미치는 지도 확인 할 수 있었다.
알찼지만 단순반복이었던 EDA 분석 뒤에는, 기본적인 모델링을 진행하였다. 언제나 그랬듯이, 데이터 전처리를 하고 train,test 데이터로 나눈 후 다양한 모델을 통해서 결과를 예측하기! 나중에 알려주셨는데, 이번에 준 데이터 자체가 워낙 분류가 명확하게 잘 되는 케이스라고 한다. 왠지.. 모델링하는데 분류 정확도가 기본 0.95 이상이어서 처음엔 내가 뭘 잘못했나 싶었다 (⁰▿⁰) 나는 StandardScaler로 스케일링만 진행하고, 별개의 변수 제거 없이 모델을 학습시켰다. 이렇게만 해도 분류가 너무 잘되서 괜스레 기분이 좋아졌다 ㅋㅋㅋ 다양한 모델을 시도하기도 하고, Hyperparameter Tuning도 진행하였다! 난 이상하게 GridSearchCV가 RandomSearchCV보다 정이 간다… 나한테는 시간이 촉박하긴 했지만, 다행히 난이도가 그리 높지 않아서 무사히 수요일을 마쳤다!
2일차 : 단계별 모델링
▶ 2일차 일정 : 개별 실습 → 조별 토의 및 실습
어제 진행했던 모델링을 좀 더 세분화해서, 단계별 모델링을 하였다. 가장 먼저 동작들을 정적(0), 동적(1) 행동으로 이진 분류하는 모델을 생성하였다. 다음으로 세부 동작에 대한 분류모델 생성했는데, 0으로 예측한 데이터는 3가지의 정적 행동으로, 1으로 예측한 데이터는 3가지의 동적 행동으로 재분류하였다. 처음에 모델을 나누어서 만든다는 게 낯설었는데, 단계별로 차근차근 구현하니 모델이 만들어졌다! 생각보다 금방 만들어져서 남은 시간 동안은 만든 모델들을 하나의 함수로 실행될 수 있도록 합쳐보려고 도전했다. 시간 내에 다 완성하지는 못했지만 함수로 만드는 것 자체가 선택사항이었기에, 큰 문제는 없었다. 다만 한 가지 스포 하자면,,, 이 과정을 잘못 이해한 채로 진행해서 결국 금요일에 kaggle 할 때는 써먹지도 못하고 처음부터 다시 함수로 만들었다.. (´-`).。oO(에잉 아까워라)
3일차 : 개인 Kaggle
▶ 3일차 일정 : 개인 Kaggle Competition → 개인 결과 발표
5번의 프로젝트를 진행하면서 처음으로 “개인” Kaggle을 진행하게 되었다! 조금 떨리기도 했지만, 조별 프로젝트 때마다 많은 도움이 되지 못하면 미안한 마음이 많이 남았는데, 개인 제출이면 내 실력(?) 어쨌든 내가 한만큼 결과를 낼 수 있고, 그에 대해 나 혼자만 책임지면 되니까 오히려 마음은 더 편했던 것 같다. 이번 프로젝트가 난도가 높은 편은 아니었기에, 어떻게 하면 정확도를 올릴 수 있을지 혼자 잘 고민하면서 Competition에 임했다! 대회 진행 중에 작은 이슈가 있어서, 최종 등수를 공개하지는 않았지만, 마감시간이었던 4시에 내 등수를 캡처해 두긴 했었다 ~,~ 부끄러우니 이름은 가리기 ㅋ 사실 50%에도 못 드는 등수이긴 한다,,, 하이퍼 파라미터를 계속 건들고 있었는데, 범위를 잘못 잡았던 건지 오히려 튜닝을 안 했을 때 정확도가 더 높게 나왔다 🤣 아직 배워나가야 할게 많은 것 같다! 그리고 막판에 GridSearchCV를 하기 위해 아는 변수 다 건드려서 집어넣었더니 무려 1시간 동안이나 돌아갔다.. 내 GPU로,,, 이러고 성능 나아졌으면 괜찮았는데 성능이 나아지지 않아서 GPU가 넘 아깝더라구~!~! 그래도 재밌고 후회 없이 참여했다 🙂
총평
4차와 비교했을때 체감 난이도가 확 내려감 + 결과가 예쁘게 잘 나오는 데이터로 프로젝트 진행 + 개인 케글 ← 이 삼박자가 나에게는 너무 딱 맞아떨어졌던 것 같다! 혼자서 함수화 한다고 여러 시도도 하고, 성과에 대한 부담 없이 프로젝트를 진행하다 보니 마음이 너무 편했다.. 아직 딥러닝에 익숙하지 않아서 머신러닝 모델을 사용하는 게 편하긴 한데 앞으로는 딥러닝을 더 자주 사용해 보면서 익숙해지는 게 좋을 것 같다! 처음으로 아쉬운 것도 별로 없고 난이도도 평탄했던 것 같아서 총평에 쓸 말이 없다..!! 6차 프로젝트는 언어 지능(자연어 처리)으로 2일 + 시계열 데이터로 2일 진행한다는데 어떻게 될지 궁금하다! 가장 행복했던 5차 프로젝트 후기 끗 (̵̵́^ᴥ^)̵̵̀
'KT AIVLE School 3기' 카테고리의 다른 글
[KT AIVLE School 3기] AICE Associate 시험 후기 (0) | 2023.05.05 |
---|---|
[KT AIVLE School 3기] 6차 미니 프로젝트 후기 (1) | 2023.04.22 |
[KT AIVLE School 3기] 4차 미니 프로젝트 후기 (1) | 2023.04.17 |
[KT AIVLE School 3기] 3차 미니 프로젝트 후기 (0) | 2023.03.25 |
[KT AIVLE School 3기] 2차 미니 프로젝트 후기 (0) | 2023.03.17 |