손동작 분류 AI 해커톤

정형 | Accuracy

  • moneyIcon 상금 : 참가시 최소 50 XP, 특별상 데이콘 후드
  • 545명 마감

 

[Private 3위/ public 0.9006] rectangular CNN

2022.03.18 20:55 1,333 조회 language

안녕하세요 traink 입니다.   
먼저 좋은 코드를 공유해주신 lastdefiance20 님께 감사드립니다.   
전체적인 코드는 lastdefiance20님께서 작성하신 https://dacon.io/competitions/official/235876/codeshare/4673 글과 같습니다.   
저는 RobustScaler와 LeakyReLU, RepeatedStratifiedKFold으로 변경하였고 이후 앙상블하였습니다.   

sensor data이므로 RobustScaler 를 사용하였습니다.   
RobustScaler는 평균과 분산대신, 중간값과 사분위 값으로 Normalize 하고 아주 동 떨어진 데이터인 이상치를 제거합니다.   
https://wikidocs.net/89704   

저는 RobustScaler를 사용하기에 다른 activation function인 elu, LeakyReLU를 사용하였습니다.    
LeakyReLU는 alpha값을 조절하며 각 class의 확률을 proba로  예측 결과를 submit으로 저장하였습니다. 
Swap Noise때문에 매번 결과가 달라졌지만 대체적으로 alpha가 0.3 혹은 0.5일때 val acc가 가장 높았습니다.   
과정중 못했지만 고정시키기 위해 np.random.seed() 적용해야 될듯 합니다.

RepeatedStratifiedKFold   
https://machinelearningmastery.com/repeated-k-fold-cross-validation-with-python/   
여기에서 5번 반복이 적당하다고 하여 15번의 fold를 5번 반복시켰습니다   

이후  확률들을 앙상블 하였습니다.
감사합니다.

코드
로그인이 필요합니다
0 / 1000
lastdefiance20
2022.03.18 22:05

코드 공유 감사합니다. numpy에 seed를 설정하는걸 깜빡했네요... traink님의 순위가 9위에서 3위로 올라온것을 보니까 (저도 private에서 순위상승이 일어났습니다) 제가 의도한 바인 swap noise 기법을 사용하여 적은 수의 train set에 overfitting되는 것을 방지하는 전략이 유효하게 먹힌것 같습니다. 코드에서 다른 normalize 기법과 activation function을 이용하는 것만으로도 점수가 많이 올라간다는 점이 흥미롭네요. 3등 축하드립니다!

traink
2022.03.19 00:46

축하 감사합니다. 사실 코드 대부분이 lastdefiance20님 코드와 너무 똑같아서 부끄럽네요. public과 val_acc가 비슷하고 같이 떨어지고 올라가는 것을 보고 제대로 예측하는 모델인것을 알 수 있었습니다. 저도 seed설정은 끝나고 발견해서 글로만 적어놓았습니다. ReduceLROnPlateau와 rectangular CNN를 알려주셔서 감사합니다. 데이콘 처음이었는데 덕분에 많이 배웠습니다.