프로그램 운영실적

  • KAIST-엘리스 데이터 사이언티스트 에듀 챌린지 후기
  • 창업원
  • 2022-10-29 23:53:21
  • 332


 

KAIST와 엘리스가 야심차게 준비한 프로젝트
 


데이터 사이언티스트 에듀 챌린지가 지난 주 워크숍을 끝으로 무사히 마칠 수 있었습니다.
 


2017년 12월부터 시작해서 약 1개월정도 온라인상으로 지속되었던 이번 챌린지에는 데이터 구조를 처음 배운 대학생부터 현업에서 종사하고 있는 데이터 사이언티스트 전문가까지 참여해서 챌린지의 의미가 있었습니다. 한국의 캐글과 같이 경쟁만이 아닌 누구나 함께 공부하는 데이터사이언스 축제가 되었으면 하는 소망으로 시작되었습니다.






1라운드 12월 4일 주를 시작으로 12월 26일 주까지 4라운드에 걸쳐 챌린지가 진행되었고 1월 13일 워크숍에서는 시상식과 함께 네트워킹 시간이 있었습니다. 상금이 걸려있는 대회였기 때문에 보다 많은 사람들이 참가해 경쟁하였습니다. 대회 전체의 1~4라운드별 합산 대상 1명, 최우수상 2명, 우수상 4명을 정하였습니다. 그리고 챌린지에 열심히 참여한 분에게는 노력상이 돌아갔습니다.
 


이번 대회는 기초적인 알고리즘만을 사용해서도 문제를 풀 수 있고, 복잡한 모델을 사용하면 높은 점수를 받을 수 있도록 설계했습니다. 가상 데이터가 아닌 Real World에서 만들어진 데이터를 바탕으로 진행했습니다. 평소에도 흥미 있을 만한 주제를 선정하여 파트별로 전개하였습니다. 아래는 라운드별 출제의도와 풀이 방법을 소개합니다. 라운드별 출제의도는 문제를 낸 엘리스에서 발표를 하였고 라운드별 우수자들이 문제해결방법에 대해 발표하였습니다.

 




데이터 사이언티스트 문제풀이 전에는 현업 데이터사이언티스트 전문가의 PT가 있었습니다. 원래는 데이터 사이언티스트가 아니었지만 엘리스의 교육을 받고 이직을 해서 현재는 쎄트렉아이 현 서버 개발자 및 데이터 사이언티스트입니다.발표자가 전에 엘리스에서 받은 교육은 16주 과정으로 국회의원처럼 말하는 챗봇을 만드는 프로젝트였습니다.



2012.07.02.~2016.05.19.일까지의 국회 회의록을 dataset을 했습니다. Proposed Models로는 토픽별로 분류한 모델, 진보/보수 정당모델, 전체 문장 + 추가 정보를 활용한 모델을 개설하였습니다. 그 결과, LSM을 이용하여 간단히 구현할 수 있었고 Web으로 UI제공하였습니다. 카카오 플러스 친구로 제공하기도 하였습니다. 이 교육과정을 통해서 데이터 조작능력을 함양할 수 있었으며 어디에 있는 데이터를 어떻게 가져올 수 있는지-크롤링 에 대해 배울 수 있었습니다. 동시에 어떤모델을 쓰면 좋을 지에 대한 문제 해결도 기를 수 있었습니다. 또한 시스템 구성 및 구현 능력을 갖출 수 있었습니다. 엘리스 교육 후 발표자는 리쿠르팅 데이를 통해 각종 기업들과 컨택한 후 데이터 사이언티스트로서 지금의 자리에 있게 된 것이라고 했습니다.
 


이번 에듀 챌린지도 참가자들에게 하나의 도전이 되어 데이터 사이언티스트로 거듭날 수 있는 시간이 되었으면 좋겠습니다.

 




P1. 네이버 영화평 감정분석
 


네이버 영화 서비스에서 가져온 140자 한줄 평 안에 들어있는 감정을 맞추는 것이었습니다. 한줄 평에 있는 별점을 성능측정(accuracy)을 합니다. 문제의 의도는 다음과 같았습니다.
 


“Classic NLP”
 


Seed word expansion, Naive Bayes. WordNet, BOW+SVM. pLSI/Topic Modeling, x-level Word Embdding.
 


발표자의 문제풀이는 아래와 같습니다.
 


먼저, 네이버 영화평 감정분석한 것을 설명하며 baseline model에서 Scikit-learn을 사용하며 Naive Bayes, Random Forest,SVM을 하였으며 약 60점이었습니다. 그 다음에는 Baseline deep learning model에서 PyTorch를 사용하였으며 RNN-Bidirectional GRU를 약 70점이었습니다. Tuning에서는 CRNN-RNN 모델의 앞단에 Conv layer를 붙여 비슷한 성능을 나타내었습니다. Attention에서는 약 71점으로 BiLSTM에서는 GRU가 더 좋았음을 발견할 수 있었습니다. 더 많은 데이터에서는 네이버 영화평을 직접 크롤링하여 약 300만건 데이터 사용으로 BiGRU 86점과 BiGRU + Attention 88점을 하였습니다.

 




P2. 리그 오브 레전드 프로게이머 대전 승패 예측
 


팀별 정보와 선수별 정보를 가지고 38,679 EU Master 대전 데이터(2016)을 가지고 시작했습니다. 아무래도 인기 있는 게임이다 보니 이번 챌린지에서 가장 참가자가 많은 항목이었습니다. 성능측정은 어떤 팀이 승리할지 Accuracy로 하였습니다. 문제의도는 다음과 같습니다.
 


“Feature Engineering”
 


Normalization, Linear/Logistic Regression, Decision tree/Regression tree SVC/SVR, Factor Analysis, Probabilistic Model, DNN.
 


이에 우수자의 문제풀이방식은 처음에 챔피언 정보만을 사용하여 RF,XGB,DNN 약 85점이었습니다. 두 번째는 소환사 정보만을 사용하여 Data augmention 약 85점이었습니다. 그 다음 소환사 정보와 챔피언 정보를 통합하여 85점이 나왔습니다. 두 정보를 같이 하면 성능 개선이 일어날 수 있을 거라 기대했지만 성능 개선은 없었습니다.

 




P3. 뉴스 기사 텍스트로 언론사 추론
 


요즘 가짜뉴스가 많고 뉴스별로 논조가 조금씩 차이가 있습니다. 기사의 논조를 보고 어떤 언론사인지 맞추는 것이 아니라 특정 데이터를 분석하여 언론사를 맞추는 항목이었습니다. 가장 확률이 높은 언론사부터 낮은 언론사까지 분석하였습니다. 성능측정은 MRR(Mean Reciprocal Rank)로 하였습니다.
 


Text classification
 


Feature Engineering(text), Word Count Bag of Words, SVC, Topic Models Ideal Point Model(in Politics), x-level Word Embedding.
 


3라운드 우수자의 문제풀이방식은 다음과 같습니다. 뉴스 기사 텍스트로 언론사를 추론하기 위해 논조,스타일,단어나 포맷을 분석하였고 인터뷰 형식과 기사 업로드 시 사용하는 텍스트 레이아웃이 다름에서 접근하였습니다. 문제해결책으로 먼저 음절단위의 학습을 시작으로 음절의 위치, 순서를 반영한 학습. 마지막으로는 특수기호를 보존해서 학습에 이용하였습니다. 음절기반을 CNN or RNN 이용하였습니다. 데이터 셋에 있는 가각의 음절들을 정수로 매핑해 음절 사전을 제작하였습니다. 학습 데이터의 문장 길이는 900으로 설정하고 짧은 경우 padding으로 채워주었습니다. 그 이후 모델을 설계하여 예측하는 결과를 도출했습니다. 최종 결과 94점이 나왔고 음절 임베딩과 Dripout과 CNN을 결합한 구조가 유효했던 것 같다고 말했습니다. 문장의 길이를 500을 했을 때보다 성능이 높아짐을 확인할 수 있었습니다.

 




P4. 그래프로 미래의 주식 가격 예측하기
 


주식그래프가 참가자들에게 주어지고 참가자들은기업의 이름도, 가치도, 좋업원 수도, 사업분야를 모릅니다. 단지 그래프만 보고 내일 주식가격을 예측하는 항목이었습니다. 2010.01.30.~2016.12.30.일까지의 주식그래프를 분석하여 2016.12.31.일의 종가를 예측하는 것이었습니다. 성능측정은 종가의 방향(오른다/내린다): 50점, 실제 주식 종가(MSE): 50점이었습니다.
 


Just print the last price, Moving average, Momentum, Black-Scholes ,Thousand of Heuristics and Theories, Bayesian Probabilistic Models , RNN.
 


마지막으로 주식가격 예측하기 문제풀이에서는 training data형식을 사용하였고 성능 측정을 하였습니다. 성능은 MSE(Mean squared error)로 측정됩니다. Data Processing에서는 volume 값 transformation, close_diff  변수 추가:종가/ 최대, 최저 변동폭을 설정하였습니다.
 


X:high,low,open,close,volume,close_diff(6 vars)
 


Y(target): X에 대해 다음 날의 close
 


data, symbol은 구분하지 않는다. train:data<=’2016-12-29’
 


test:date==’2016-12-29’
 


시도했던 알고리즘은 Random/ForestRegressor/Extra Tree Regressor/Gradient Boosting Regressor 최종선택에서는 2 hidden layers, 1 final output 이 나왔습니다. 최종결과는 82점이 나왔습니다. 이번 과제를 통해 어떻게 더 공부해야 하고 시계열 분석 알고리즘을 적용해봐야겠다고 느꼈다고 합니다.

 






이번 에듀 챌린지는 KAIST와 엘리스가 함께 처음으로 준비한 프로젝트였습니다. 한국의 캐글과 같은 경연을 만들려고 하였지만 서버의 문제 등 개선해야 할 점도 발견하였던 대회였습니다. 그럼에도 대학생부터 현업 데이터 사이언티스트까지, 다양한 연령대 직업군을 망라한 참가로 이번 대회의 의미를 살릴 수 있었습니다. 참가자들의 후기처럼 이러한 형태의 챌린지를 더 발전시키고 더 연구하고 심화해서 다음을 준비하겠습니다.
 


상을 받으신 분들 축하드리고 상의 유무를 떠나 열정적으로 챌린지에 참가한 모든 참가자분들께 감사드립니다. 다음 번 챌린지를 기대해주세요.

 



 
첨부파일