월간 데이콘 운동 동작 분류 AI 경진대회

Private 8위 , Public : 0.49139 / 3 Catboost Model

2021.02.22 22:18 4,748 조회 language

처음 6개의 변수를 보고 딥러닝만이 점수를 잘 낼 수 있겠다 싶었습니다.
결론적으로 딥러닝이 우수한 결과를 내기도 했지만 부스팅 모델 또한 나쁘지 않은 것 같습니다.

6개의 변수를 346개로 늘리는 과정이 재밌었고 좋은 경험이 되었습니다.

딥러닝 지식이 부족하여 딥러닝과의 앙상블을 시도해보지 못 한 점이 아쉽네요ㅠㅠ

다시 한 번 트리 기반 모델에서 Feature engineering이 중요하다는 점을 이번 대회에서 느끼고 갑니다.

코드
로그인이 필요합니다
0 / 1000
IMJI
2021.02.27 17:49

감사합니다!! 
공유해주신 코드보고 공부하면서 도움이 많이 되었어여!!    
그리고 제가 반복문 코드를 조금 수정해봤어요. 
id가 많다보니 train dataset에서 반복문 시간이 오래걸려서 고민하다가 찾게 되어서 
혹시나 도움이 될 수 있을까 해서.... 공유해봐요! 


1. 시간 변동에 따른 수치 변화 데이터 
groupby('id').diff() 을 활용하면 반복문을 돌리지 않아도 차이 계산이 되더라구요!!! 

2. 첫번째 데이터 추출 
drop_duplicates(['id'], keep='first') 을 이용하면 첫번째 값만 가져올 수 있었어요. 

3. 첫 3초 데이터 의 평균값 
train_acc_3 = train.iloc[:,:5][train['time']<150].drop('time',axis = 1).groupby('id').mean()  
time 변수를 활용해서 slicing 했어요. 

혹시나 아는 척 했다면 죄송합니다!! 

Byeongtae Park
2021.02.27 20:00

아뇨 피드백 감사합니다! 도움이 되셨다니 다행이네요!
2번의 경우는 head 함수를 통해 숫자를 조정해가며 실험하느라 그랬던것 같습니다.
1번의 경우 cumsum함수가 있듯이 제가 생각해도 반복문을 돌리지 않아도 되었을것 같은데 diff함수가 있었네요 감사합니다ㅎㅎ

gunwoo1217
2021.03.06 21:37

"첫 3초 데이터 의 평균값 " 변수는 어떻게 생각해내게 되신건가요??

Byeongtae Park
2021.03.07 15:02

제가 모든 label을 확인해보지 않았지만, 기존에 넣어주었던 전체 12초 데이터의 여러 가지 통계량이 담아내지 못한 정보를 초기 몇 초 정도의 데이터가 담아낼 수 있다고 생각했습니다.
예를 들면, 정지 스쿼트 같은 당기거나 미는 동작을 수행 후 일정 시간 정지하는 경우가 있을 것 같네요
일반적인 스쿼트와 정지 스쿼트 두 가지만을 비교했을 때 운동 수행 후 3초 정도 간의 평균 데이터는 비슷하겠지만, 전체 12초간의 평균 데이터는 차이가 날 수밖에 없다고 생각을 했습니다.
이런 생각에서 출발한 아이디어였고 꼭 이런 예시뿐만 아니라 초반에 급격하게 움직이는 운동과 정적인 운동 또한 비교가 가능할 것 같아 운동 수행 후 초기 n초간의 데이터를 실험해봤고 최종적으로 3초가 적당하다는 걸 알아냈습니다!