새소식

데이터 사이언스

Kaggle : Titanic (outline)

  • -

맨 처음 교수님께서 내주셨던 과제이다.

이거에 더해 sql책도 과제로 내주셨지만 이는 다음에 차차...

 

이 책을 공부한 목적: 캐글 대회가 어떻게 진행되는지, 전체적인 과정을 파악함과 동시에 고전 문제인 titanic 문제를 책을 따라 풀어보면서 순서 익히기

 


1. 데이터셋

캐글의 데이터셋은 3가지로 나뉘어져있다.

test.csv

train.csv

~~~_submission.csv

 

~~~submission.csv는 채출해야하는 양식이다.

모범답안?? 같은 느낌이다. 학교 수업에서 과제 내주실 때 이렇게 제출하면 됩니다~ 하는 것처럼 ㅎㅎ

 

test.csv는 목표값이 비워져있는 데이터셋이다.

이 비워진 목표값을 예측해서 채운후 제출하면 캐글에서 점수가 나오고 이 점수로 경쟁하는 구조이다.

 

train.csv는 목표값까지 나와있는 데이터셋이다.

모델을 훈련시키는데에 사용해야하는 데이터셋이다.

음.. 쉽게 말하자면 문제와 정답을 함께 알려주고 이 문제 나오면 이게 정답이니까 이런 문제 나오면 정답이 이거야~

라고 컴퓨터를 학습시키는 것이다.

마치 기출문제집을 답지를 보며 푸는 것처럼 말이다..

(물론 기출보고 시험본다고 다맞는게 아닌 것처럼 머신러닝 또한 그렇다 ㅎㅎ.

기출을 많이 풀수록, 좋은 문제들을, 지엽적인 문제(이상치)들도 다뤄봐야 시험을 잘보듯 컴퓨터도 좋은 데이터셋을 줘야 학습을 잘하고, 예측도 잘한다 ^^)

 

그렇다면 컴퓨터에게 좋은 데이터셋을 주려면 어떻게 해야하는가..?


2. 특성 엔지니어링

 

똑똑한 사람은 두꺼운 책 던져주고 이거 다 외워! 하면 다 외울 수 있겠지만, 나 포함 대부분은 그렇지 않다.

시험에 나올부분에 조금 지엽적인 부분까지 더해서 공부하는게 최선이다ㅎㅎ

그 밖에 쓸데없는 부분까지 외우다보면 오히려 쓸데 없는 부분에 치우쳐지기도 하고 (이게 가장 중요한 부분),

이에 더해 만약 그중 잘못된 정보가 껴있다면 잘못된 답을 외우고 시험장에 들어가게 된다.

아무리 열심히 공부한다고 한 들 내가 외운 부분이 쓸데없는 부분이었고, 심지어 내가 달달 외운 답이 오답이었다면?

 

시험은 무조건 망한다....

(과정이 중요하다는 달콤한 현실도피는 집어치우자 ㅎㅎ)

 

컴퓨터도 비슷하다. 뭐 슈퍼컴퓨터라서 학습 용량에 제약이 없다고 한들 쓸데없는 부분만 학습했다면?

내가 만든 모델은 아무런 의미가 없다... 그저 코드쪼가리 정도?

 

그럼 어떤 것을 학습시켜야하는가?

당연하게도 시험문제에 관련된 정보를 입력해야한다.

그럼 어떤 정보가 시험문제를 풀기에 좋은 정보일까..?

 

내 생각에는 치팅시트를 만든다는 생각으로 접근하는게 좋은 것 같다.

A4 한페이지라는 좁은 공간에 시험문제를 풀 때 꼭 필요할 것 같은 부분, 내가 생각했을 때 중요하다고 생각되는 부분부터 빼곡하게 집어 넣는것처럼

시험 문제를 풀 때 꼭 필요한 것들이 뭔지 판단하는 것.

선택된 것들 중에서도 중요도를 판단해서 치팅시트에서 빼거나 집어넣는 것.

이게 바로 특성 엔지니어링이다.

 

titanic문제는 실제 타이타닉호 탑승객의 정보이며, 이 정보들로 이사람이 사망할지 생존할지 예측하는 것이 문제이다.

그럼 어떤 정보를 알고 이를 예측할 수 있을까?

이 사람이 아침식사로 뭘 먹었는지? 아니면 생일이 4월달인지? 성별이 남성인지?

어떤 것이던 어떻게든 연결될 수 있다.

정말 우연의 일치로 탑승한 고객중 아침으로 계란을 먹은 고객은 전부 생존했을 수도 있다.

하지만 데이터 분석에서 "우연히 그럴 수도 있어요!"는 멍청한 가설이다.

아무도 안믿어줄 것이다. 차라리 길거리에서 내일 세상이 종말한다는 소리를 믿지.

 

여기서 또 포인트가 나온다.

'신빙성'

데이터 분석가는 신빙성있는 가설을 세워야한다.

그리고 이를 증명 또는 기각 시켜가며 성능을 향상시켜야 한다.

 

그럼 신빙성있는 가설은 무엇일까..

정답은 "결과를 확인하기 전까지 모른다." 이다.

허무맹랑하지만 이게 데이터 분석가의 재량이자, 역량인 것 같다.

유의미한 패턴, 가설을 세우고 이를 증명함으로써 성능을 향상시키는 것...

(이에 더해 캐글에서는 문제가 주어져있지만 현실에서는 문제가 주어지는 경우가 없다.

현실에서는 문제정의부터 분석가가 알아서 가설을 세우고 끝없는 가설 정의, 가설 검정을 거쳐 결과를 도출해야한다.)

 

모델링을 잘하는 것? 파라미터를 기가막히게 잘 찾는 것? (내가 말하기엔 좀 뭐가 없지만) 노가다에 불과하다.

차라리 새로운 모델을 만든다면 모를까..ㅋㅋ

모델링은 가설을 입증하기 위한 수단일 뿐이라고 생각한다. (내 기준에서)


그럼 이제 분석가로서의 역량을 키우기 위해 특성을 살펴보고 그럴 듯한 가설을 세워보자

 

Titanic에서 주어지는 특성은 총 12가지이다.

'PassengerId' : 승객 고유 넘버

'Pclass' : 객실 등급 

'Name' : 이름

'Sex' : 성별

'Age' : 나이

'SibSp' : 동반한 형제자매, 배우자 수

'Parch' : 동반한 부모, 자식 수

'Ticket' : 티켓 고유 넘버

'Fare' : 티켓 요금

'Cabin' : 객실 번호

'Embarked' : 승선한 항구

 

가설1.  "동반한 부모, 자식의 수가 많고, 남성인 경우 사망자이다"

근거: 구명보트에 동반한 부모, 자식을 먼저 태웠을 가능성이 높고 그러므로 생존률이 낮을 것이다.

 

가설2. "객실 번호가 위층쪽이고 동반한 사람의 수가 적다면 생존자이다"

근거: 갑판위로 올라오기까지 시간이 다른 사람보다 짧았을 것이고 동반한 사람의 수가 적다면 행동이 더 신속했을 것이다.

...

이렇게 가설을 세울 수 있을 것이다.

아침에 계란을 먹어서 사망했을 것이라는 가설보다는 훨씬 그럴듯해 보인다.

 

이러한 가설을 통해 새로운 특성을 만들거나, 필요없는 특성을 버릴 수 있다.


이번 포스트에서는 캐글의 데이터셋 형태, 특성 엔지니어링의 필요성, titanic의 특성 정보를 알아보았다.

중점은?

- 기본적인 내용

 

다음 포스트 부터 데이터 분석의 첫 단계인 데이터 프로파일링부터 차근차근 알아보자!

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.