KT 에이블스쿨 : 3-1차 미니프로젝트 - 스마트폰 센서 기반 행동 분류
지금은 빅프로젝트를 끝낸 시기이지만
임시저장에 갇혀있던 3차 미니프로젝트를 정리할려고한다.
3차 미니프로젝트는 4월이었는데, 그때는 빅프로젝트를 어떻게 하지 ?
걱정도 되고 먼 미래처럼 느껴졌었는데 어느덧 수료를 앞두고 있다니..
아직도 실감이 잘나지 않는다. . ㅎ
3차 (1) 미니프로젝트 : 스마트폰 센서 기반 행동 분류
프로젝트 목적: 24.04.04(목) ~ 05(금)
이번 데이터분석에서 가장 중요했던 것은
562개의 변수(센서)들 중에서 중요한 변수만 추출해 모델링하는것
전체 변수를 다 돌리는 경우 성능이 0.98~1 정도로 성능이 아주 좋게나오는데, 몇개의 변수만으로도 이렇게 성능이 좋게 나오도록 최적화 변수를 찾아보았다.
전체 변수를 돌리는건 모델 기술적 비용이 많이 들어서 비효율적이기에
PCA 차원축소나 중요도가 높은 상위 변수만으로 돌리는게 필요했다.
스마트폰 센서에서 나올 수 있는 행동은 크게 2가지 (정적, 동적) 이다.
- 정적행동 : sitting, standing, laying
- 동적행동 : walking, walking_up, walking_down
1일차 : 24.04.04 (목)
데이터 전처리 및 분석 -> 행동별 변수간 관계시각화(EDA) -> 기본 모델링
전체 행동(6개)별 중요 변수를 시각화했을때는 변수별 구분이 어려웠기에 행동별 중요한 변수를 구분하는게 필요했다.
1) 변수 중요도 확인: 트리 모델의 변수 중요도 그래프 활용
2) 시각화 탐색: 행동 6가지 각각마다 중요한 변수 5가지를 추출해 그래프로 확인
우선, 동적인지 정적인지에 따라 행동을 구분하고
앉아있을때 중요한 변수, 걸을때 중요한 변수들을 시각화할 수 있었음
그래서, "변수의 중요도", "영향력이 큰, 작은 변수"의 의미에 대해서 제대로 이해할 수 있게되었다
1일차 실습을 하면서, 양이 많고 중요도를 도출하는데 어려운 점이 많았는데 한번하고나니까 이제는 비교적 쉽게 느껴지는 것 같다.
이번에 중요했던 것은 자주 사용하는 것을 함수로 만들어서 빠르고 간편하게 사용하는 것
초반에 시간을 들여서 만들었던 함수가 효율성을 크게 높여줬다.
2일차 : 24.04.05 (금)
단계별 모델링
데이터 전처리를 한 뒤에, PCA를 추가적으로 수행했다.
PCA 차원축소를 해서 주성분을 2개만으로 분석했을때도 성능이 거의 1에 수렴할 정도로 정확도가 높았다.
(PCA를 한 뒤에 모델링은 Logistic regression, randomforest로 했음)
다른 방법으로 하고 싶어서 1일차에서 사용한 중요한 변수 df을 사용했다.
상위 변수 13개로 모델링을 했는데, 이때는 여러가지 분류 모델을 사용해서 성능을 예측하고, 최적화된 모델로 최종 학습시킬 수 있었다.
(top13 변수로 모델링은 할때 사용한 분류 모델은 Logistic regression, randomforest, knn, svm(linear), svm(rbf)로 했음 )
정적 행동과 동적 행동을 나눠서 최적의 모델링을 한뒤
두 단계 모델을 통합하고 새로운 데이터에 대해서 최종 예측결과와 성능평가가 나오도록 함수를 만들었다.
데이터 파이프라인을 구축해서 다른 상황에서도 활용하기 쉽게 만들었다.
데이터 파이프라인은 만들때는 복잡하고 어렵기도 하지만, 만들고 나면 정말 유용한 것 같다.
1일차에서 도출한 중요도별 변수를 데이터프레임화하고 csv로 저장했는데, 2일차에서 활용해 변수의 개수를 줄일수 있었다.
변수의 개수를 최대한으로 줄이더라도 정확도가 높았다.
변수의 개수를 최소한으로 줄이면서 정확도가 얼만큼 향상되는지 최적의 지점을 어떻게 찾는지 배울 수 있었다.
가장 실무에서 가깝고 유용한 프로젝트가 아니었나 생각이든다.
댓글
댓글 쓰기