본문 바로가기

Industry Analysis [Data Science]/Kaggle 데이터 분석

#2 [문돌이들을 위한 캐글 개론 - 2] 캐글 방법론

How To Kaggle?

 

모든 캐글 competition의 문제들은 각자 다른 방법론과, 다양한 접근이 필요하다. 이는 부정할 수 없는 사실이다.

캐글은 데이터 사이언스 분석의 큰 부분을 맡고 있으며 데이터 수집을 제외한 모든 부분을 직접 해야한다.

 

캐글 전체를 구성하는 풀이는 공통점을 띈다. 여러 설명글, 책과 초급자를 위한 글을 참고하였으며, 아래의 편집된 부분은 작성자의 주관적인 판단하에 작성된 것이다.

오늘은 이에 대해서 알아보자!!

 

캐글은 오리가 대표 캐릭터다 꽥

 


 

전통(이라고 할만큼 오래되지는 않았지만)적으로 데이터 마이닝 Data Mining은 다음과 같은 6단계 과정을 거친다.

#1 문제 정의 Clarification
#2 데이터 수집 & 분석 Data Collection &  Analysis
#3 데이터 전처리 Data Preprocess
#4 가설 & 구조화 Hypothesis & Structure
#5 모델 설계 & 테스트 Modeling & Test
#6 의미 분석 & 제출 Analysis & Submit

 

캐글에서는 여기서 #2의 데이터 수집만 뺀 나머지를 진행하게 된다. 데이터는 기본적으로 주어지니까!

과정에 대해서 자세히 알아보도록 하자.

이 과정을 머리 속에 담아야 추후 문제점이 어디서 나왔는지 도출해낼 수 있다.

 


#0 문제 Problem

서울 수도권의 집 값이 끝을 모르고 치솟고 있다.
여기, 2019년에 서울 수도권 내에서 거래된 집 값 10만행 과 집마다 100개 이상의 데이터 열이 있다.
집 값이 주어지지 않은 만 개의 집 값을 예측하여라.

보통 문제들은 이렇게 결과 값(종속 변수)이 주어진 수 많은 데이터와, 행이 주어져 있다.

우리는 주어진 Train Data들을 통해 만 개의 Test Data를 유추해야한다.

 

 

 

#1 문제 정의 Clarification

이 단계에서는 내가 알고 싶은 종속 변수가 무엇인지 밝혀내는 것이다.

집 값을 알고 싶다면 이에 필요한 정보가 무엇인지, 얼만큼인지, 시계열인지, 어디서 얻어야 하는지 등등을 설계해야한다.

다행히도 캐글에서는 정보가 주어져있다. 따라서 이 정보들을 적절하게 사용하면 된다.

엑셀 혹은 여러 가지의 마법의 도구를 이용해 연관성을 유추할 수 있을 것만 같다. 하지만 데이터는 그렇게 뜻대로 나와주지 않는다!

 

 

#2 데이터 수집 & 분석 Data Collection &  Analysis

말했듯이 기존의 데이터 사이언스는 자신이 원하는 데이터를 직접 끌고 와야한다는 굉장히 큰 단점을 안고 있다. 뭐 대충 사이트나 DART나 통계청에서 끌고 오면 되겠지 라는 생각은 금물이다. 직접 설문조사를 해야할 수도, 기업에서 기밀인 자료를 요청해야할 수도, 알 수 없는 회계장부를 뒤져야할 수도 있다. IoT장비라면 이상하게 생긴 16진법, 숫자 모형들을 인간의 언어에 맞게 다시 바꾸어야한다.

다시 한 번 캐글에 감사하자. 우리는 이 짓을 할 필요가 없다. 심지어 적절하게 데이터도 정제되어서 나온다!!

 

100개가 넘는 수도권의 집 특성(Data Field)들을 보고 우리는 어떤 것이 유효한(Valid) 정보인지, 어떻게 편집해야하는지 생각해봐야 한다.

캐글에 있는 실제 부동산 가격 측정 competition의 Data Field를 보자.

더럽게 많네!

엄청나게 많다!!

 

우리는 이중에서 무엇이 가치있고, 무엇이 덜 가치있을지, 부동산 가격과 비례할지, 반비례 할 지, 다른 독립 변수들과 어떻게 시너지 / 반시너지를 내는지 등등에 관해서 고민해야한다.

 

실제로 우리가 집을 구매할 때도,

창이 남향인가

집이 몇층인가

버스정류장은 가까운가

지하철은 가까운가

편의점은 있는가

도심이랑은 얼마나 먼가

.

.

.

.

등등 수 백가지 가능성을 놓고 저울질한다.

인간은 본능적으로 몇가지의 고려 사항을 수면 위로 떠오르게 한다. 집에서 학교 까지의 거리. 집에서 직장 까지의 거리. 치안, 교통 등 .... 하지만 기계는 이걸 모른다!

물론 데이터가 방대하게 쌓이면 그 분(전자 두뇌)도 차차 알게 되신다. 그러나 우리가 적절하게 데이터를 편집해주지 않으면 영 딴판인 결과값을 내게 만든다.

 

따라서 Data Field에 대한 분석은 여기서부터 시작한다.

 

 

 

#3 데이터 전처리 Data Preprocess

데이터 전처리는 데이터 중 아주 특수한 값, 중간중간 정보가 없는 값(굉장히 많다), 명목 수치(남자 0 여자 1), 서열 수치(치안 1등 A시, 2등 B시...),  등간 수치(1층, 2층, 3층) 등 얼핏보면 있고 없고(남여) 2층이 1층의 2배이고, 치안 1등 도시와 2등 도시가 배 이상 차이나 보인다.

인간은 교육으로 인해 이를 인지하지만 기계는 인지하지 못한다.

압도적으로 높은 건물이 사실은 유명 화가의 생가라서 그럴 수도 있고, 역사적인 가치를 지닐 수도 있다. 

하지만 기계는 이를 모른다!

따라서 우리는 데이터를 기계에 돌리기 전에 전처리를 해주어야한다.

데이터 전처리는 실제로 데이터 사이언스에서 50%이상의 시간(해본 결과)을 잡아먹기 때문에 인간이 할 수 있는 한 객관적으로 변화를 주는 것이 중요하다.

다시 한번 말하지만 굉장히 중요하다. 캐글러가 할 수 있는 가장 좋은 결과를 내는 대부분의 방법이 여기서 나온다.

전처리가 끝났다면 이제 가설을 세우러 가자.

 

 

#4 가설 & 구조화 Hypothesis & Structure

많은 사람들이 전처리만 한 뒤 바로 모델링 단계로 들어간다. 그러나 이는 생각하지 않는 데이터 사이언티스트를 만들 가능성이 크다.

설문조사 혹은 기타 공돌이 연구자들이 하는 것과 마찬가지로 가설을 세우고, 독립변수들이 어떻게 종속변수에 영향을 주는지 구조화 시켜야한다.

예를 들어 계절, 성별, 껴입는 옷 수 만 주어진 데이터라고 하자.

만약 남자는 겨울에 내복, 내의, 웃옷, 맨투맨, 패딩에 모자까지 쓰는 사람이 많고, 여자는 히트텍, 웃옷, 패딩만 입고 다니는 사람이 많다고 해보자. 기계는 남자가 추위에 약하고 여자는 더 강하다라고 결론을 낼 것이다(실제로 그럴 수도 있다.). 여자들이 패션에 조금 더 신경쓴다는 점(가설), 야외 활동을 남자가 더 많이 한다는 점(가설)이 주어진다면 남자와 여자가 비슷하게 추위를 탄다고 결론을 내릴 것이다.

 

데이터를 있는 그대로 믿지 말고, 주관적으로 가설을 내린 뒤 검증만 다음 단계를 통해 하자.

다시 한번 말하지만, 예비 결론은 4번에서 내고 간다.

 

 

#5 모델 설계 & 테스트 Modeling & Test

모델링은 말그대로 주어진 Raw Data를 어떤 툴을 이용해서 분석할 것인지에 대한 것이다.

세상에는 이미 다양한 데이터 분석 툴이 만들어져있다.(Thanks to 컴돌이)

모델링 툴에는 신경망 모형, 의사결정나무 모형, 선형 회귀 분석, 나이브 베이즈 분류모형 .......... 등 수 많은 것들이 존재한다. 그리고 놀랍게도 각자 쓰임새가 다 있다. (이는 추후에 하나씩 다룰 예정이다.)

 

어떤 Data Field에 어떻게 모델링을 할 것인지 결정했다면 Train Data Set을 가지고 Test를 실행한다.

어떤 결과 값이 나오는가? Prediction의 Accurancy가 높으면 높을 수록 예측이 잘된 모델이다.

 

90% 이하의 값이 나오는가? 선방했다. 다시해보자

80% 이하의 값이 나오는가? 다시해보자

75% 이하의 값이 나오는가? 전처리를 반대로 했는지, 데이터 필드를 정확히 이해했는지 보자

50% 이하의 값이 나오는가? 다시배우자ㅎ

 

더욱 개선하고 싶다면 3번부터 다시 뜯어봐야한다.

 

 

#6 의미 분석 & 제출 Analysis & Submit

충분히 높은 점수 및 정확도를 얻었다면 이제 캐글에 제출하는 일만 남았다.

캐글에 제출하는 것은 간단하다. Test Data Set에 있는 독립변수들로 서울시 수도권의 집값을 추론한다. 그리고 제출용 엑셀 파일옆에 1열을 집값만 붙여넣기 해준다.

 

아울러 의미 분석을 하는 것도 놓치지 말자. 점수를 잘맞는 것도 중요하지만, 우리가 여기서 찾아낸 의미가 더욱 중요하다.

내가 처음에 생각했던대로 집값이 요동치는지, 아니면 생각지도 못했던 변수가 있는지. 중요하다고 생각했던 것들이 기각 되었는지 등등, 자신이 배운 것을 적고 사람들에게 알려주자.

 


 

Why Open Source

캐글의 가장 큰 장점은 Open Competition이라는 것, 그리고 오픈된 소스를 가지고 더욱더 발전한 예측 모델을 만들 수 있다는 장점이 있다.

돈이나 상금이 걸려있는 것이 아니라면 온라인 Github혹은 Kaggle사이트 내에 기재하고, 내가 도움을 받았던 만큼 타인에게도 도움을 줄 수 있으면 좋겠다.

 

여기서 미약하나마 도움을 받고 모두들 즐 캐글 했으면 좋겠다.  :D 카쟈!

이제 편히 쉴 수 있어