728x90

안녕하십니까, 간토끼입니다.

 

이번 포스팅에서는 2020년에 수상한 한국정보화진흥원의 2020 데이터 크리에이터 캠프 공모전 수상 경험을 다뤄보겠습니다.

 

 


이번 공모전은 예선부터 본선까지 해커톤 방식으로 진행되었습니다.

사실 제 인생에서 제한된 시간 안에 주어진 주제에 맞게 프로젝트를 수행하고 결과물을 뽑아내는 등의 일련의 과정은 정말 처음이었는데요.

많은 것을 배울 수 있었고, 제가 아직 얼마나 부족한지 깨달을 수 있었던 경험이었습니다.

 

 

1. 대회 소개

간단하게 대회 소개를 하자면 다음과 같습니다.

- 과학기술정보통신부가 주최하고 한국정보화진흥원(한국지능정보사회진흥원)이 주관한 대회

- 예선 당일 오전엔 빅데이터 분석 알고리즘에 대한 실습 강의, 오후엔 알고리즘을 활용한 비즈니스 문제 해결

- 각 예선당 3팀을 선발하여 본선에서 빅데이터 분석 알고리즘을 활용한 모델링 후 상위 3팀 시상

 

한국정보화진흥원, 지금은 한국지능정보사회진흥원으로 이름이 바뀌었죠.

예선, 본선 모두 해커톤 방식으로 진행되며, 조금 특별(?)한 것은 대학생부와 고등학생부로 나누어 진행됩니다.

고등학생들도 참여 가능한 것이 장점인데(물론 고등학생부는 고등학생끼리만 합니다),

고등학생이 기계학습을 배워 실제로 적용한다는 것이 꽤나 신기하더라고요 ㅎㅎ 대단합니다.

 

아무튼 예선에서는 강사님께서 기계학습, 그리고 데이터 사이언스에 대한 전반적인 개념을 설명해주는 강의를 해주십니다.

그렇기에 비전공자들도 참여 가능하다고 홍보하던데... 음 사실상 참여는 가능한데 개인적인 경험으로 미루어 보았을 때 참여는 가능하지만 수상까진 힘들 가능성이 큽니다.

그 이유는 조금 뒤에 작성해볼게요.

 

그래서 강의를 들은 후 오후에는 특정 주제에 대한 팀별 문제 해결 해커톤을 진행합니다.

각 회차마다 주제는 달라지는 것 같은데 저희 주제는 NLP(자연어처리) 관련 주제였습니다.

이런... 정형 데이터를 생각하다가 정말 큰 코 다쳤습니다.

왜냐하면 제가 제일 좋아하지 않고, 자신없는 주제가 NLP거든요. 

 

사실 비정형데이터를 별로 좋아하지 않습니다 ㅋㅋ Image Processing은 그나마 괜찮은데 자연어는 좀 어렵더라고요.

자세한 주제는 공개해도 될지 모르겠지만, 대략적으로만 설명 드리자면

"네이버 영화 리뷰 데이터를 알맞게 전처리 후 클러스터링을 이용하여 도출된 클러스터별 특성을 바탕으로 인사이트를 제시하라"

정도였습니다. (구체적으로는 다소 길어서 ㅎㅎ)

 

본선까지 주제를 공개하면 "차량 이미지 데이터를 각 차량 클래스별로 분류하는 모델링을 하라" 였습니다.

허허 .. 자세한 분석 과정은 이어서 바로 작성하겠습니다.

 


 

2. 분석 과정

예선과 본선에서 강조한 점이 조금은 달랐습니다.

그렇기에 나누어서 과정을 써보도록 할게요.

 

(1) 예선

위에서 언급한 것처럼 텍스트 데이터를 이용하여 자연어처리를 해야 합니다.

다행인건 대회 측에서 베이스라인 코드도 제공해주고, 대학원생 멘토님을 붙여주시기에 도움을 받을 수 있었지만

팀원 중 NLP를 해본 인원이 아무도 없었어서... 모두 패닉이었습니다.

 

그래도 제가 팀장이자 모델링 담당이었어서 얼른 정신을 차리고 했었습니다.

예선전에서 좋은 성과를 거둘 수 있었던 팁을 다뤄보면서 후기를 작성할게요.

 

먼저 3시간이라는 타이트한 시간 속에서 전처리, 모델링부터 PPT와 발표 준비까지 해야하기 때문에

시간을 효율적으로 사용하기 위해서는 대회측에서 주어지는 베이스라인 코드를 잘 사용해야 합니다.

 

이때 베이스라인 코드에서 큰 변화없이 분석만 하게 된다면 좋은 점수를 받기 힘듭니다.

왜냐하면 베이스라인은 정말 대략적인 흐름 및 방법만 알려주는 기초 코드기 때문에, 적절히 변형하여 사용해야 합니다.

특히 예선에서는 코드에 약간의 함정을 심어놓으셨더라고요.

그렇기에 이 함정을 찾아내어 분석한 팀만이 예선을 통과한 걸 보면.. 이게 결정적 계기가 되지 않았나 싶습니다.

(물론 멘토님의 도움이 굉장히 컸습니다.)

 

그리고 어떤 기법을 사용할 때도 합리적인 이유가 필요합니다.

예를 들어 클러스터링 기법 중 DBSCAN과 K-Means 가 있다고 가정하죠.

이때 K-Means를 선택한 이유가 "그냥..." , 혹은 "사용하기 쉬워서.." 등의 단순한 이유가 되면 안 됩니다.

"DBSCAN 알고리즘은 각 샘플에서 임의의 작은 거리 엡실론 내의 샘플이 몇 개 있는지 세어 엡실론-이웃 내 샘플이 많이 존재하는지에 따라 Cluster를 형성합니다. 그렇기에 Data가 서로 밀집될수록 효율이 좋으나, 주어진 데이터는 Column 수가 많아 Dimension이 복잡하므로 DBSCAN 알고리즘이 적합하지 않습니다 ~"

등으로 나름의 합리적 이유를 제시하여 다른 알고리즘을 선택한 근거를 나타내줘야 합니다.

 

그리고 저희가 가장 중요하다고 생각했던 것 중 하나는 "하이퍼 파라미터 튜닝(Hyper Parameter Tuning)"입니다.

예를 들어 K-Means 알고리즘 같은 경우는 하이퍼 파라미터가 군집의 개수인 K 값이 되겠죠.

이를 위해 통상적으로 실루엣 스코어를 고려하는 등 수치적으로 결정하거나, 업계에서는 경험적으로 결정하곤 하죠.

 

이때 별 건 아니어도 "그냥 K = 3이 편해서 했어요." 보다는 "각각의 K에 따른 실루엣 스코어를 비교한 결과, K=3일 때 스코어가 제일 1에 가까워 3으로 설정하였습니다." 가 훨씬 타당하게 느껴집니다.

 

그리고 마지막으로 각 군집의 특성을 통해 인사이트를 제시해야 하는데, 좀 난해(?)하다보니, 해석에 어려움을 겪는 팀들이 많아 발표 때 생략한 팀도 많았습니다.

저희는 어렵더라도 최대한 해석하여 인사이트를 제안했는데요.

이러한 노력을 좋게 봐주시지 않았나 싶습니다.

 

 

 


 

(2) 본선

본선은 원래 판교의 K-ICT 빅데이터센터에서 오프라인 해커톤 방식으로 진행됐어야 했지만...

갑자기 코로나-19가 심해지는 바람에 대회 직전에 온라인으로 진행된다고 통보 받았습니다. 매우 아쉬웠습니다..

 

어쨌든 본선 주제는 위에서 언급한 것처럼 이미지 데이터 프로세싱입니다.

Classification에 관한 주제라... 사실 주제 자체는 경험자에겐 무난하지만 초심자에겐 다소 어려울 수 있다는 점에서 좀 의아했습니다.

왜 굳이 비정형데이터일까.. 차라리 좀 어려운 정형데이터가 나을텐데... 라고 생각했지만.

 

통상적으로 정형데이터의 경우, Feature와 Target 간 상관성을 바탕으로 Feature Selection을 하든,

EDA를 하면서 적절히 인사이트를 찾아내 Feature Engineering을 하든 해야하는데

3시간 동안 이것도 하면서 모델링까지 하는 건 정말 ... ^^ 매우 어렵죠.

그래서 이런 복잡한 Feature Engineering을 할 필요가 없는 이미지 데이터를 고른 게 아닌가 싶습니다.

 

먼저 저는 이전 대회에서 Keras를 이용해 Resnet 구조를 바탕으로 이미지 분류 모델링을 한 적이 있었습니다.

2020/12/13 - [Records/Project] - [Project] 2020년_AI-JAM KOREA 2020 공모전(장려상)

 

[Project] 2020년_AI-JAM KOREA 2020 공모전(장려상)

안녕하십니까, 간토끼입니다. 이번 포스팅은 올해 수상했던 AI 활용 창업 아이디어 공모전인 AI-JAM KOREA 2020 수상 경험에 관해 다뤄보겠습니다. 이번 공모전 경험 또한 직접 데이터를 이용해 머신

datalabbit.tistory.com

 

그래서 그런지 사실 이미지 분류 주제가 나와서 내심 좋았습니다 ㅋㅋ 다른 팀이 당황했을 거라고 생각했거든요.

 

아무튼 이번 대회 또한 베이스라인 코드가 주어졌고, 멘토님도 계시는 동일한 환경에서 진행됐습니다.

사실 데이터가 기본적으로 다음과 같이 DataFrame 형태로 주어졌습니다.

비경험자들을 고려한 배려기도하고, RandomForest 같은 기계학습 알고리즘을 사용하려면 DataFrame으로 주어져야겠지요.

그리고 베이스라인이 생각보다 너무 간단해서 마찬가지로 저희만의 추가적인 활용이 필수적으로 요구됐습니다.

그래서 대충 다음과 같은 프로세스를 추가하였습니다.

(1) 각 픽셀값의 범위(range)를 [0, 255] 에서 [0,1]로 조정해주는 Min-Max Scailing

(2) Train : Test 로 split 후, GridSearch를 이용해 교차검증 및 하이퍼파라미터 튜닝

(3) 베이스라인에서 제시된 알고리즘말고도 추가로 기계학습 알고리즘을 이용하여 모델링 후 비교

(4)  Keras를 이용해 "간단히" CNN 기반의 딥러닝 구조를 설계하여 모델링

 

 

가장 좋은 건 CNN 기반의 딥러닝 아키텍처를 바탕으로 장시간 학습시켜 예측력을 높이는 것일텐데...

시간도 부족했고, 발표 자료도 만들고 하려면 꽤나 빠듯했습니다 ^^;

 

 

예선 경험을 미루어 보았을 때, 대회측에서 긍정적으로 평가하는 것은 다음과 같다고 생각했습니다.

1. 얼마나 완성도 있게 프로젝트를 수행하는가

2. 베이스라인을 넘어서 어떻게 활용하고 응용해 발전시켜 나가는가

 

그래서 하이퍼파라미터 튜닝이나 정규화 등 기본적이지만 비경험자 입장에서 알기 어려운 부분들을 저희만의 방식으로 강조하며 프로젝트를 수행해나갔으며,

각 단계마다 그렇게 한 근거를 꼭 덧붙였습니다.

"왜 이미지 데이터는 Min-Max Scailing을 해야 효과가 좋은가"에 대해 설명하면서 저희가 왜 그렇게 했는지 근거를 항상 제시했습니다.

이런 모습이 좋게 보이지 않았나 싶네요. ㅎㅎ 

 

 

허허 그 결과 덕분에 대상(1등)을 할 수 있었습니다.

 

 

 

해커톤 방식은 처음이라 많이 떨렸었는데, 잘 따라와준 팀원들에게 이 자리를 빌려 감사하다는 말을 다시 한번 전합니다.

 

감사합니다.

잘 읽으셨다면 게시글 하단에 ♡(좋아요) 눌러주시면 감사하겠습니다 :)

(구독이면 더욱 좋습니다 ^_^)

 

 

 

 


- 간토끼(DataLabbit)

- University of Seoul

- Economics & Data Science

728x90

+ Recent posts