brunch

You can make anything
by writing

C.S.Lewis

by hansung dev Jan 11. 2021

시스템 품질 변화로 인한 사용자 불편 예지 AI경진대회

데이콘, "정형 데이터 / 지도 학습" 대회 참여 및 베이스라인 제출

Study With Me는 매일 학습한 내용을 정리하여 공유하는 매거진입니다.


데이콘의 시스템 품질 변화로 인한 사용자 불편 예지 AI경진대회에 참여하고 베이스 모델을 제출해보았습니다.


데이터 분석 절차

데이터 분석 절차는 아래와 같습니다. 대회 안내 페이지를 살펴보고 문제 파악을 해보도록 하겠습니다.


배경은 다양한 장비/서비스에서 일어나는 시스템 데이터를 통해 사용자의 불편을 예지 하기 위해 ‘시스템 데이터’와 ‘사용자 불편 발생 데이터’를 분석하여 불편을 느낀 사용자와 불편 요인들을 찾아주세요.


목적은 데이터를 통해 사용자가 불편을 느끼는 원인 분석 및 사용자 관점의 데이터 분석 능력이 뛰어난 인재 발굴을 목적으로 합니다.


분석 일정은 1월 6일부터 2월 3일까지 입니다.


대회 규칙 이해 중 주요한 부분은 아래와 같습니다.

평가 산식 : AUC (사용자로부터 불만 접수가 일어날 확률 예측)

평가 방식 : 1~3차까지 진행되며 최종 3팀을 선정합니다.

외부 데이터 및 사전 학습 모델 사용 불가

제공된 학습 데이터 외 학습 불가, 테스트 데이터는 추론 과정에서만 사용 가능

사용 가능 언어: Python, R

총상금은 1,000만 원입니다.

출처 - 파이썬 딥러닝 머신러닝 입문

데이터?

학습 및 테스트 데이터는 아래와 같습니다. 테스트 데이터에는 라벨에 해당하는 "사용자 불만 및 불만이 접수된 시간" 데이터가 없는 것을 볼 수 있습니다. 정답(=라벨)이 있는 지도 학습 문제입니다.


학습 데이터 (user_id : 10000 ~ 24999, 15000명)

train_err_data.csv : 시스템에 발생한 에러 로그

train_quality_data.csv : 시스템 퀄리티 로그

train_problem_data.csv : 사용자 불만 및 불만이 접수된 시간

테스트 데이터(user_id : 30000 ~ 44998, 14999명)

test_err_data.csv : 시스템에 발생한 에러 로그

test_quality_data.csv : 시스템 퀄리티 로그

sample_submission.csv : 사용자 불만 확률(0~1) (제출용)


제공된 데이터로 ERD를 구성해보았습니다. 분석 및 예측을 위해 가공된 데이터로 ERD의 의미가 없지만 한눈에 데이터 명세를 볼 수 있어 분석하는데 도움이 됩니다.

ERD

AUC란?

평가 산식인 AUC(=Area Under Curve)에 대해서 알아보겠습니다.


AUC를 이해하기 위해서는 ROC곡석에 대한 이해가 선행되어야 합니다. ROC 곡석은 FPR(False Positive Rate)이 변할 때 TPR(True Positive Rate)이 어떻게 변하는지를 나타내는 곡석입니다. FPR을 X축으로, TPR을 Y축으로 잡으면 FPR의 변화에 따른 TPR의 변화가 곡석 형태로 나타납니다.

TP : 실제로 양수이고 예측 양수인 값 (ex. 질병이 있는 사람을 질병이 있는 것으로 판정)

FP : 실제로는 음수이지만 양수로 예측되는 값 (ex. 질병이 있는 사람을 질병이 없는 것으로 판정)

FN : 실제로는 양수이지만 음수로 예측되는 값 (ex. 질병이 없는 건강한 사람을 질병이 있다고 판정)

TN : 실제로 음수이고 음수로 예측되는 값 (ex. 질병이 없는 건강한 사람을 질병이 없는 것으로 판정)

ROC곡선 자체는 FPR과 TPR의 변화 값을 보는 데 이용하며 분류의 성능 지표로 사용되는 것은 ROC 곡선 면적에 기반한 AUC 값으로 결정합니다. 1에 가까울수록 좋은 수치입니다. AUC 수치가 커지려면 FRP이 작은 상태에서 얼마나 큰 TPR을 얻을 수 있느냐가 관건입니다.  (출처 : 파이썬 머신러닝 완벽 가이드)

출처 - https://glassboxmedicine.com/2019/02/23/measuring-performance-auc-auroc/

베이스라인 코드 제출

데이콘에서는 대회 초반 베이스라인 코드를 코드공유 게시판에 공유를 합니다. 데이터를 불러오고 예측한 결과를 제출 파일 포맷에 맞게 가공하는 부분을 베이스라인 도움을 받을 수 있습니다. 대회가 진행되면서 대회 참여자들끼리 다양한 코드들을 서로 공유하면서 실력을 향상할 수 있습니다.


데이콘 코드공유 게시판의 베이스라인 게시물

베이스라인을 다운로드 후 결과 파일을 제출해보면 "0.801" 점수가 나오는 것을 확인했습니다. 최근 pycaret 같은 AutoML도구들로 모델 선택 및 하이퍼 파라미터 최적화 등 자동화할 수 있는 도구들이 대회에서 유행하고 있습니다. 데이콘 베이스라인의 전처리된 부분을 이용해서 pycaret으로 제출을 해보니 "0.685" 정도의 점수가 나오는 것을 확인했습니다. 데이콘 측에서도 AutoML에 대한 검토 후 베이스라인을 제공한 것 같은 느낌이 듭니다. 이번 데이콘 베이스라인은 교차검증 코드까지 포함되어 제출된 부분을 보면요. :)/


데이터 엔지니어 직무를 하다 보니 시스템 로그에 대해 많이 접하고 있으며 로그를 통한 분석 및 예측에 관심이 많은 편이다. 이번 시스템 품질 변화로 인한 사용자 불편 예지 AI경진대회는 시스템 로그 및 사용자 불편 데이터로 분석 및 예측을 해야 하는 대회라 주어진 환경에서 많이 배울 수 있을 거라 생각합니다. 이후 기회가 되면 더 좋은 인사이트로 게시할 수 있도록 하겠습니다.


매일 규칙적으로 공부하는 습관 만들어봐요.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari