-
이 대회는 3축 가속도계(accelerometer)와 3축 자이로스코프(gyroscope)를 활용해 측정된 센서 데이터를 기반으로 운동 동작 분류를 머신러닝으로 해결하고자 한 대회입니다.
-
순위 평가 기준은 LogLoss입니다.
-
데이터는 dacon 홈페이지에서 얻을 수 있습니다. https://dacon.io/competitions/official/235689/data/
대회 참여가 좀 늦었는데 남은 기간이 1/3일 때 참여하였습니다.
처음 단순한 LSTM 모델 베이스라인을 돌려보니 등수가 굉장히 낮았고
LSTM으로 parameter를 바꿔서 몇 번 돌려봤는데도 점수가 굉장히 낮았습니다.
그래서 구글에 검색 중에 multivariate time series classification을 검색하여 LSTM-FCN이란 모델을 알게 되었고,
모델을 만든 결과 성능이 비슷하였습니다.
그래서 지난 대회를 참고하던 중에 음성 중첩 데이터 분류 AI경진대회를 참고하게 되었습니다.
음성 신호와 가속도계 센서 신호의 시간에 따라 변하고 주기적인 성질을 가지는 공통점에 주목하여
음성 대회와 같은 방법으로 접근하면 어떨까 하여
음성 중첩 데이터 분류 AI경진대회 우승자의 코드 1d-cnn으로 모델을 구현하였습니다.
그 결과 점수는 상위권으로 바뀌었고, 모델 앙상블을 통해 10%안에 들게 되었습니다.
저는 입상을 하기 위해서 어떻게 점수를 더 높일까 생각하던 중에
평가 지표가 LogLoss인 점에 주목하였습니다.
LogLoss의 특징은 0에 가까울수록 패널티가 크다는 점인데
모델이 일반적으로 예측하는 확률이 A, 편차가 B라고 했을 때
LogLoss는 H(P,Q)=−∑xP(x)logQ(x)인데
-log(0.6) = 0.221, -log(0.7) = 0.154, -log(0.8) = 0.096입니다.
위에 경우처럼 LogLoss는 어떤 값에서 a만큼 잘 예측했을 때보다 a만큼 못 예측했을 때 패널티가 크다는 것을 생각하여
모델 추론 결과의 편차를 최대한 줄이기 위하여 앙상블을 다른 대회보다 많이 했습니다.
같은 모델 30개를 앙상블 하였더니 PUBLIC 순위가 입상권에 들어갔고
50개를 앙상블 하였더니 6등까지 갔습니다.
하지만 전체 데이터에는 잘 적용되지 않았던 까닭인지 최종 결과에서는 순위가 14등으로 밀렸습니다.
위에 코드는 LSTM-FCN코드에서 1d-CNN 부분을 좀 더 깊게 연결한 코드입니다.
1d-CNN 모델과 성능 차이를 못 느꼈고 그만큼 제가 LSTM을 포함한 RNN 모델에 약하다는 것을 깨닫게 해준 대회였습니다.