85
Python 입문자의 Data Science(Kaggle) 도전 박미정

[PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Embed Size (px)

Citation preview

Page 1: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Python 입문자의 Data Science(Kaggle) 도전

박미정

Page 2: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 누구에요?

Page 3: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 누구에요?

아이오라는 스타트업에서 스위처를 만들고

개발팀을 리드하고 있어요

Page 4: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

누구를 위한 발표인가?

저처럼, Python과 데이터 분석을

이제 막 시도하시려는 분들을 위한 발표에요

Page 5: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

발표의 목적은?

발표를 듣고 집으로 돌아가셔서,

데이터 분석이 뭔지 아직도 감은 잘 안오지만

튜토리얼 문제를 시도하면서 공부를 시작하도록 돕는 것

Page 6: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

발표를 간단히 요약하면

제가 얼마나 Python과 데이터 분석 초보인지 밝힘으로써 용기를 드리고,

데이터 분석 공부를 시작하게 된 계기와,

데이터 분석 공부를 위한 기본적인 환경,

실제로 Python을 이용하여 Kaggle 문제에 접근한 사례를 공유하게 되요

Page 7: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

Last 30 Days by WakaTime

Page 8: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

지난 한 달 동안 주로 사용한 언어에

Python은 보이지 않아요

Page 9: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

집에는 파이썬, 머신러닝, 딥러닝 책들이

먼지와 함께 쌓여있어요

Page 10: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

제가 파이콘에서 스피커로 자격이 있는지 모르겠어요

Page 11: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

하지만, Back to the Basic

용기를 내어 보았어요

Page 12: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

역시 저는 몰랐지만,

데이터 분석에는 여러 유형이 있어요

Page 13: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

주어진 데이터를 요약/집계해서 결과를 내는

Descriptive analysis 를 이미 진행하고 있었어요

Page 14: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

하지만 저에게 데이터 분석이라고 하면

가장 먼저 떠오르는 유형은 Predictive analysis 였어요

Page 15: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

그 외에도

Exploratory, Inferential, Casual, Mechanistic analysis 등

많은 분석 유형이 존재해요

Page 16: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

사실 모든 유형에 대해 자세히 모르겠어요

Page 17: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

그저 공부를 시작하기 위해 필요한

목적과 동기부여를 위해 Predictive analysis 를 선택했어요

Page 18: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

나는 왜 Python과 데이터 분석을?

데이터를 통한 정확한 예측이 아이오에는 필요하거든요

Page 19: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Predictive analysis?

머신러닝, 의사 결정 트리를 이용해서

발생하지 않은 일을 예측하는 거에요

Page 20: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

머신러닝?

기존 데이터를 학습시킨 후,

새로운 데이터를 예측하는 목적이에요

Page 21: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

머신러닝?

머신러닝에서 지도 학습과 비지도 학습으로

구분지을 수 있어요

Page 22: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

머신러닝?

지도 학습에는 분류와 회귀 방법이 존재하고,

Page 23: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

머신러닝?

비지도 학습에는 군집 방법이 존재해요

Page 24: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

머신러닝?

저는 지도 학습인 분류와 회귀에 대한

공부 경험을 공유하려 해요

Page 25: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떻게 시작하게 되었어요?

혹시, 이 분을 아시나요?

Page 26: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떻게 시작하게 되었어요?

꿀 수업 듣으러 가기

Page 27: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

기본적인 환경은? Kaggle

Page 28: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

기본적인 환경은? Kaggle

데이터 과학과 머신러닝을 실습하고 경쟁할 수 있는

Kaggle을 이용했어요

Kaggle 방문하기

Page 29: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

기본적인 환경은? Kaggle

training set과 test set이 주어져요

Page 30: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

기본적인 환경은? Kaggle

training set을 통해 최적화된 모델을 통해서

test set의 값을 분류 및 예측하고 제출할 수 있어요

Page 31: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

기본적인 환경은? Kaggle

주의할 점!

하루에 제출할 수 있는 기회는 제한되어 있어요

Page 32: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

기본적인 환경은? Python

데이터 분석을 돕는

Python 도구들을 사용했어요

Page 33: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

기본적인 환경은? Python

일,

수학적 기능을 제공하는 NumPy

Page 34: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

기본적인 환경은? Python

이,

데이터 처리 및 가공을 위한 Pandas

Page 35: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

기본적인 환경은? Python

삼,

머신러닝 알고리즘 적용을 위한 Scikit-Learn

Page 36: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석 프로세스는요?

그렇다면,

데이터 분석의 프로세스는 어떻게 될까요?

Page 37: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석 프로세스는요?

일,

문제를 정의해요

내가 원하는 결과가 무엇이고, 어떤 종류의 문제에 속하는지 파악해요

Page 38: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석 프로세스는요?

이,

데이터를 확보해서 준비하고 전처리를 해요

Page 39: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석 프로세스는요?

Page 40: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석 프로세스는요?

Page 41: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석 프로세스는요?

삼,

데이터를 탐색하고 피처를 선택해요

Page 42: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석 프로세스는요?

사,

모델을 최적화하고 검증해요

Page 43: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석을 돕는 Python 도구들?

Pandas는 데이터 처리와 가공을 돕는 도구에요

Page 44: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

이렇게 데이터 파일도 쉽게 불러올 수 있구요

데이터 분석을 돕는 Python 도구들?

Page 45: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

train 데이터와 test 데이터를 쉽게 연결할 수 도 있어요

데이터 분석을 돕는 Python 도구들?

Page 46: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석을 돕는 Python 도구들?

NumPy는 수학적 연산을 돕는 도구에요

Page 47: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

배열, 로그, 평균 등 다양한 연산을 도와줘요

데이터 분석을 돕는 Python 도구들?

Page 48: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석을 돕는 Python 도구들?

Scikit-Learn은 머신러닝 알고리즘을 제공하는 도구에요

Page 49: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 분석을 돕는 Python 도구들?

이렇게 분류를 위한 의사 결정 트리를 사용할 수 있어요

Page 50: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떤 방법을 사용했어요?

앞에서 머신러닝의 분류와 회귀에 대한

공부 경험을 공유한다고 했어요

Page 51: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떤 방법을 사용했어요?

분류에 대한 Kaggle 문제를 접했어요

Page 52: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떤 방법을 사용했어요?

Kaggle의 튜토리얼 문제

Titanic: Machine Learning from Disaster

Page 53: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떤 방법을 사용했어요?

문제 풀으러 가기!

Page 54: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떤 방법을 사용했어요?

Python 도구를 사용해서

이렇게 코드로 분류를 시도할 수 있어요

Page 55: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Yes or No 유형의 분류를 시도할 때,

DecisionTreeClassifier

어떤 방법을 사용했어요?

Page 56: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떤 방법을 사용했어요?

회귀에 대한 Kaggle 문제도 접했어요

Page 57: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떤 방법을 사용했어요?

Kaggle의 문제

Bike Sharing Demand

Page 58: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떤 방법을 사용했어요?

문제 풀으러 가기!

Page 59: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

어떤 방법을 사용했어요?

역시, Python 도구를 사용해서

이렇게 코드로 회귀를 시도할 수 있어요

Page 60: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

특정 숫자 값을 예측할 때,

DecisionTreeRegressor

어떤 방법을 사용했어요?

Page 61: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Titanic 예시

Titanic 튜토리얼 문제를 다시 확인할게요

Page 62: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Titanic 예시 문제 정의

승객들의 정보를 이용하여 살아남을지 아닐지 예측하라

Page 63: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Titanic 예시 데이터 속성 분석

train set을 다운받고, 데이터 속성을 분석해요

Page 64: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Titanic 예시 데이터 속성 분석

Page 65: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

데이터 전처리 작업을 위해, train set과 test set을 합칠게요!

Titanic 예시 데이터 전처리

Page 66: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Scikit-Learn 사용을 위해 Gender 문자열 값을 인코딩 할게요!

Titanic 예시 데이터 전처리

Page 67: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Scikit-Learn 빈 값 처리 오류 제거를 위해, 평균 값으로 채울게요!

Titanic 예시 데이터 전처리

Page 68: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

분류(예측)의 기준이 되는 피처를 선택해요

Titanic 예시 데이터 탐색 및 피처 선택

Page 69: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

피처 선택을 기준으로 train set을 이용하여, test set을 분류(예측)해요!

Titanic 예시 모델 최적화 및 검증

Page 70: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

이제 Kaggle에서 Submit을 하면 예측 점수를 확인할 수 있어요!

Titanic 예시 제출

Page 71: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

전체 코드는 아래 주소에서 확인하실 수 있어요!

GitHub Repository

Reference Code

Titanic 예시

Page 72: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

그래서 어디에 사용할거에요?

일.

지역, 시간, 키워드, 가구 크기 등의 데이터를 이용해서

타겟 정확도를 높이는 마케팅에 이용

Page 73: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

그래서 어디에 사용할거에요?

이.

온도, 습도, 조도, 거리, 행동 패턴 학습을 통한

개인 추천 서비스에 이용

Page 74: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

감사합니다 ;-)

박미정[email protected]

Page 75: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q1. 입문자가 머신러닝 알고리즘을 선택하기 위한 TIP?

Scikit-Learn 에서는 적절한 알고리즘을 선택할 수 있도록 Cheat Sheet를 제공해요

Page 76: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q1. 입문자가 머신러닝 알고리즘을 선택하기 위한 TIP?

알고리즘 선택에 어려움이 있다면, 다음 Cheat Sheet을 참고해서 시작해보세요

Page 77: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q1. 입문자가 머신러닝 알고리즘을 선택하기 위한 TIP?

Page 78: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q2. 과적합(Overfitting) 해결을 위한 TIP?

특정 모델이 train set에 너무 정확하게 학습된 경우,

test set에 대해서는 오차가 크게 발생하게 되요

Page 79: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q2. 과적합(Overfitting) 해결을 위한 TIP?

이 경우를 과적합(Overfitting)이라고 표현해요

Page 80: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q2. 과적합(Overfitting) 해결을 위한 TIP?

특정한 케이스가 아닌 일반적인(general) 결과를 낼 수 있어야 해요

Page 81: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q2. 과적합(Overfitting) 해결을 위한 TIP?

많이 사용되는 방법 중의 하나는 cross validation이 있어요

Page 82: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q2. 과적합(Overfitting) 해결을 위한 TIP?

cross validation은 train set의 일부를 train 목적으로 사용하고,

나머지를 validation 용도로 사용해요

Page 83: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q2. 과적합(Overfitting) 해결을 위한 TIP?

그리고 train 목적과 validation 부분을 변경해가며 반복하면서

오차율을 줄여나가게 되요

Page 84: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q2. 과적합(Overfitting) 해결을 위한 TIP?

Scikit-Learn을 이용해서 쉽게 적용할 수 있어요

Page 85: [PYCON KOREA 2017] Python 입문자의 Data Science(Kaggle) 도전

Q2. 과적합(Overfitting) 해결을 위한 TIP?

from sklearn.cross_validation import cross_val_score

score = cross_val_score(model, X_train, y_train, cv=20, scoring=rmsle_score).mean()