데이터 전처리 대전 - 맛보기

Page 1




데이터 전처리 대전 데이터 분석을 위한 파이썬, SQL, R 실천 기술 초판 1쇄 발행 2019년 11월 1일 지은이 모토하시 도모미쓰 / 옮긴이 윤준 / 펴낸이 김태헌 펴낸곳 한빛미디어 (주) / 주소 서울시 서대문구 연희로 2길 62 한빛미디어(주) IT출판부 전화 02 – 325 – 5544 / 팩스 02 – 336 – 7124 등록 1999년 6월 24일 제25100–2017–000058호 / ISBN 979 – 11–   6224 – 224 –7 93000 총괄 전정아 / 책임편집 이상복 / 기획 박지영 / 편집 김은미 디자인 표지·내지 김연정 / 조판 이경숙 영업 김형진, 김진불, 조유미 / 마케팅 박상용, 송경석, 조수현, 이행은, 홍혜은 / 제작 박성우, 김정우 이 책에 대한 의견이나 오탈자 및 잘못된 내용에 대한 수정 정보는 한빛미디어(주)의 홈페이지나 아래 이메일로 알려주십시오. 잘못된 책은 구입하신 서점에서 교환해드립니다. 책값은 뒤표지에 표시되어 있습니다. 한빛미디어 홈페이지 www.hanbit.co.kr / 이메일 ask@hanbit.co.kr

MAESHORITAIZEN data bunseki no tame no SQL/R/Python jissen technique written by Tomomitsu Motohashi, supervised by HOXO-M Inc. Copyright ©2018 Tomomitsu Motohashi, HOXO-M Inc. All rights reserved. Original Japanese edition published by Gijutsu-Hyoron Co., Ltd., Tokyo This Korean language edition published by arrangement with Gijutsu-Hyoron Co., Ltd., Tokyo in care of Tuttle-Mori Agency, Inc., Tokyo through Botong Agency, Seoul. 이 책의 한국어판 저작권은 Botong Agency를 통한 저작권자와의 독점 계약으로 한빛미디어㈜가 소유합니다. 신 저작권법에 의하여 한국 내에서 보호를 받는 저작물이므로 무단전재와 무단복제를 금합니다.

지금 하지 않으면 할 수 없는 일이 있습니다. 책으로 펴내고 싶은 아이디어나 원고를 메일 ( writer@hanbit.co.kr ) 로 보내주세요. 한빛미디어(주)는 여러분의 소중한 경험과 지식을 기다리고 있습니다.



지은이 옮긴이 소개

시스템 개발업체 연구원과 웹 계열 회사의 데이터 과학자를 거쳐 현재는 디지털 의료 스 타트업의 CTO로 역임 중이다. 양자 어닐링 컴퓨터의 검증에 개인 사업자로 참여하고 있다. 제조업, 소매업, 금융업, 운수업, 레저 산업, 웹 등 다양한 업종의 데이터 분석을 경험했다. 개발한다. 지은이_ 모토하시 도모미쓰 本橋智光

숭실대학교 미디어학부를 졸업하고 동 대학원 모바일랩에서 미디어 공학을 전공했다.

2007년부터 사용자를 생각하는 UI/UX에 관심을 가졌다. 현재는 프런트엔드 엔지니어 로서 웹과 스마트폰 활동한다. 한빛미디어에서 『초보자를 위한 유니티 입문』(2019 )과 『만들면서 배우는 언리얼 게임 프로그래밍』(2015 ), 『HTML5 핵심 API』(2011 )를 번역 했다. 옮긴이_ 윤준 junyun0516@gmail.com

004


옮긴이의 글

그야말로 머신러닝과 데이터 과학의 시대입니다. 그동안 풀기 어려웠던 문제들이 데이 터 과학을 기반으로 상상을 웃도는 좋은 결과를 내고 있으며, 앞으로도 더 많은 문제가 해결될 것입니다. 이제는 단순히 흥미로운 분야가 아니라 정말 반드시 알아야 하고 적극 적으로 도입해야 하는 기술 중 하나가 되었습니다. 이 책은 데이터 분석에서도 가장 먼저 실행되는 전처리를 전문적으로 다룹니다. SQL과

R, 파이썬이라는 각 언어를 통해 하나의 문제를 풀어나가면서 각 언어의 특징과 장단점 을 함께 알려줍니다. 하지만 여러 가지 언어를 다룬다고 해서 모든 것을 얻을 수 있는 그 런 책은 아닙니다. 이 책은 특정 언어의 스킬을 가르쳐주기보다는 전처리란 무엇인가를 설명하는 데 더 초점을 맞춥니다. 특히 다양한 예제를 여러 언어를 통해 풀어보면서 어 떤 식으로 문제에 접근해야 하는지 알려줍니다. 즉 세 가지 언어의 특징을 통해 각 전처 리의 특성을 더욱 잘 이해할 수 있게 구성했습니다. 이 책은 프로그래밍을 하는 사람이면 누구나 쉽게 따라 할 수 있는 내용입니다. 프로그 래밍을 잘 몰라도 예제들을 실행해 봄으로써 전처리의 프로세스를 이해할 수 있을 것입 니다. 전처리라는 분야 자체가 각 상황에 따라 다양하게 쓰이는 만큼 앞으로 더 많은 상 황과 문제를 해결해나가면서 노하우를 익혀야 할 것입니다. 저자의 현장 경험을 바탕으 로 구성한 예제들을 읽다 보면 그러한 경험과 노하우가 문제에 녹아들어 있음을 알 수 있습니다. 앞으로 전처리를 다뤄야 할 독자분이라면 언어의 선택부터 전처리를 다루는 팁까지 얻을 수 있는 좋은 자료가 될 것입니다. 여러모로 부족한 저에게 번역을 맡겨주시는 한빛미디어에 항상 감사드립니다. 부족한 저의 국어 실력을 채워주시는 편집자 분들에게 감사를 드리며 이번에 함께 작업하게 된 박지영 과장님께 감사의 말을 전합니다. 이번엔 함께하지 못했지만 항상 신경 써주시는 최현우 차장님께도 감사드립니다. 마지막으로 번역이 끝나길 누구보다 기다린 아내에게 사랑과 감사의 마음을 전합니다.

005


지은이의 글

지루하고 고독한 오랜 연단 위에 마침내 꽃은 핀다

어떠한 직업이든 꽃이 피는 순간이 있습니다. 축구 선수라면 골을 넣는 순간일 것이고, 요리사라면 플람베를 하는 순간일 것입니다. 또 컨설턴트라면 프레젠테이션하는 순간, 데이터 과학자라면 아주 훌륭한 발견을 하거나 매우 정밀한 모델을 만들어내는 순간이 겠지요. 하지만 이러한 순간은 이전 단계에 성패가 달려 있습니다. 여기서 이전 단계란 정확한 포지션으로 빈틈없는 트래핑을 하는 것, 좋은 식자재를 준비하고 잘 손질하는 것, 자세 히 조사해 완벽한 자료를 만드는 것을 말합니다. 화려한 순간과는 달리 지루하고 오랜 시간이 걸리는 작업이지만, 일류와의 차이는 바로 여기서 발생합니다. 만일 당신이 일류 데이터 과학자가 목표라면 지루하면서도 화려함과는 거리가 먼 전처 리pre-processing에서 정점을 찍어야 합니다. 그럼 지금부터 Awesome한 데이터 과학자의 길로 함께 걸어가봅시다.

006


들어 가며

이 책의 목적 빅데이터, 데이터 과학자, 인공지능artificial intelligence (AI ) 등의 용어가 주목받고 있습니다. 전부 데이터 분석에 관한 용어들이죠. 실제로 많은 조직에서 데이터 분석으로 큰 이익을 창출한 사례가 있는 만큼 분야를 막론하고 데이터 분석은 무시할 수 없게 되었습니다. 관심이 높아지면서 데이터 분석에 관한 기사나 책도 앞다투어 쏟아져 나오고 있습니다. 그중 대부분은 데이터 분석의 전처리를 ‘데이터 분석의 8할을 차지한다’ 혹은 ‘필요 불가 결한 과정’이라고 합니다. 전처리 과정이 이렇게까지 중요한 이유는 무엇일까요? 전처리 가 데이터 분석의 품질을 크게 좌우하기 때문입니다. 집계 분석을 위한 전처리에서는 집계 처리에 이용할 다양한 데이터를 준비해야 합니다. 이때 전처리가 충분하지 않고 집계 분석에 이용할 데이터의 종류가 적으면 데이터에서 얻을 수 있는 시사점이 줄어듭니다. 또한 편향된 샘플링을 사용하면 집계 결과에서 잘못 된 인식을 합니다. 이처럼 전처리는 집계 분석의 품질에 큰 영향을 미칩니다. 예측 모델을 위한 전처리 과정 역시 예측 모델의 정확도나 정밀도 측정의 정확성에 큰 영향을 미칩니다. 예측 모델의 정확도는 머신러닝 모델이나 매개변수 튜닝에 따라서도 영향을 받지만, 전처리를 통해 만들어진 특성에 더 큰 영향을 받습니다. 실제로 예측 모 델의 정확도를 비교할 때 새로운 특성을 발견하면 예측 정확도가 크게 향상되는 경우가 많습니다. 이때 예측 정확도를 확실하게 측정하려면 예측 모델을 만드는 데이터와 모델 의 정확도를 측정하는 데이터를 나누는 전처리가 필요합니다. 그렇지 않으면 예측 모델 의 정확한 정밀도를 측정할 수 없습니다. 이처럼 전처리는 후속 데이터 분석의 품질에 큰 영향을 끼치는 중요한 과정이지만 전문 서적은 거의 찾아볼 수 없습니다. 전처리 자체가 지루하고 처리 결과를 제대로 알기 어

007


렵다는 점도 원인 중 하나겠지만, 가장 큰 이유는 하나로 묶어 정리하기 어려운 기술이 기 때문입니다. 전처리는 통계학이나 머신러닝처럼 학문으로 정리된 지식은 거의 없으며, 대부분 현장 에서의 끊임없는 응용의 결과물로 나타납니다. 이러한 전처리를 익히려면 전처리를 구 현할 프로그래밍을 알아야 하고, 분석 기반의 지식을 비롯해 필요한 전처리를 판단하기 위한 통계학이나 머신러닝에 대한 지식이 필요한데 이를 한 권의 책에서 모두 설명하기 어렵습니다. 그렇기 때문에 전처리에 대한 단편적인 설명은 있지만, 제대로 정리된 서적 은 거의 없습니다. 하지만 이 책은 데이터 분석에 관한 생생한 경험에 기반을 두어 실용적인 전처리를 정리 했습니다. 또한 분석 기반, 프로그래밍, 통계학, 머신러닝에 관한 충분한 지식을 전처리 와 함께 설명하므로 해당 분야를 잘 모르는 독자들도 전처리를 구현하는 데 필요한 지식 을 얻을 수 있을 것입니다. 이 책의 대상 데이터는 ‘수치’, ‘문자’, ‘논릿값’이며 (이미지, 음성, 동영상 등의) 멀티미 디어 데이터는 다루지 않습니다. 문자 코드 통일 등의 클렌징cleansing1 처리에 대해서도 설명하지 않습니다.

대상 독자 간단한 프로그래밍을 할 수 있는 독자라면 충분히 이해할 수 있도록 구성했습니다. 프로 그래밍 언어를 전혀 모르는 초보자라면 입문서와 함께 이 책을 읽어나가길 권합니다. 그 러나 전처리의 흐름을 훑어보고 싶은 정도라면 프로그래밍의 세세한 부분을 몰라도 괜 찮습니다. 주요 대상 독자는 신입 데이터 과학자이며, 데이터 분석 업무를 익히고 싶은 시스템 엔

1 클렌징 처리를 전처리의 한 종류로 취급하기도 하지만, 이 책에서는 클렌징 처리와 전처리를 다른 것으로 구분합니다. 이 책은 클렌징 처리를 상정 외 데이터의 부족한 부분을 처리하는 공정으로 다룹니다. 매우 어 려운 일이긴 하지만, 데이터 처리가 완벽하다면 클렌징 처리는 필요하지 않습니다.

008


지니어에게도 강력히 추천합니다. 신입 데이터 과학자라면 이 책을 통해서 지루하지만 중요한, 전처리의 종류나 필요한 최소한의 프로그래밍 등의 지식 등을 익힐 수 있기를 바랍니다. 데이터 분석이 흥미로운 엔지니어라면 자신의 분야에서 활용할 수 있는 데이 터에 대한 전처리부터 도전하길 바랍니다. 이 책은 데이터 분석의 전처리 방법을 익힘과 동시에 전처리를 구현하는 코딩 기술을 배 울 수 있도록 내용을 구성했습니다. 데이터 과학자라면 시스템을 이해하고, 계산 처리를 적절하게 구현할 수 있어야 하기 때문입니다. 계산 처리에 드는 비용에 관한 감각이 없 는 데이터 과학자가 얼마나 위험한지는 다음의 사례를 보면 이해할 수 있습니다. ●●

●●

연간 이익 1천만 원 상당의 정확도를 위해 데이터 분석 기반 강화에 연간 1억 원을 사용했다. 복잡한 고도의 머신러닝 모델을 사용했기에 계산 시간에 120분이 필요해서 120분 내외의 데이터를 이 용한 예측 시스템으로 구성했다.

●●

그런데 계산 시간이 5분 정도인 단순한 모델로 구성하고 5분 내외의 데이터를 이용한 예측 시스템으로 교체했더니 정확도가 크게 높아지고 시스템 비용이 절약되었다.

어떻습니까? 믿기 어렵겠지만 실제로 현장에서 일어나는 일입니다. 이러한 문제를 검증 단계에서 피할 수 있게 해주는 시스템 개발 및 데이터 분석에 대한 지식 모두를 가진 데 이터 과학자가 데이터 분석 현장에는 반드시 필요합니다.

이 책의 구성 이 책은 다음과 같은 네 개의 파트로 구성했습니다. ●●

1부_ 전처리 입문

●●

2부_ 데이터 구조 전처리

●●

3부_ 데이터 내용 전처리

●●

4부_ 실전 전처리

1부에서는 데이터 분석에서 전처리의 역할, 전처리의 종류나 전처리를 구현할 프로그래 밍 언어의 분류에 관해서 설명합니다.

009


2부와 3부는 이 책의 핵심 내용인 전처리에 대한 구체적인 기술에 관해 알아봅니다. 특 히 다음 세 가지 요소를 통해 전처리를 설명합니다. ➊ 전처리 패턴과 효과 ➋ 예제와 SQL, R, 파이썬의 좋은(Awsome) 혹은 나쁜(Not Awsome) 해답 코드 ➌ SQL, R, 파이썬의 코드 작성 팁

먼저 각 절에서 문제를 하나씩 제시합니다. 해당 문제를 풀기 위한 프로그래밍 언어를 선택한 뒤 Awesome한 코드와 Not Awesome한 코드를 함께 보여줍니다(실제 각 코 드의 제목도 해당 키워드로 구분해 표기했습니다). Not Awesome한 코드는 코드 자 체가 나쁠 때도 있지만, 프로그래밍 언어에 따라 부득이한 처리일 때도 있고 패키지나 라이브러리를 사용하는 편이 나을 때도 있습니다. Not Awesome한 코드를 어떻게

Awesome한 코드로 바꿀 수 있을지를 고민하며 읽으면 좋겠습니다. 또한 각 코드의 핵 심 내용은 본문에서 포인트라는 키워드를 붙여 정리했습니다. 마지막으로 4부에서는 2부와 3부에서 배운 기술의 사용 방법을 예제를 통해 익혀봅니다.

구현 환경 이 책은 각 전처리에 대해 SQL과 R, 파이썬이라는 세 가지 언어로 구현 방법을 설명합 니다. 그 과정에서 각 언어의 특징을 익히고, 전처리 문제별로 적합한지 아닌지를 배울 수 있도록 구성했습니다. 2019년 10월 현재 SQL은 Redshift (이후 이 책에서 SQL은

RedshiftSQL을 의미합니다), 파이썬 버전은 3.7.4, R은 3.6.1 버전 기준으로 환경을 구성하고 예제 소스의 동작을 확인했습니다. 각 언어의 설치 방법은 부록에서 간단히 다룹니다. 부록에서는 맥 OS 에서의 동작 을 기준으로 설명하며, 윈도우 버전도 내용은 크게 다르지 않으므로 부록을 참고해가 며 환경을 구성할 수 있을 것입니다.2 이와 관련한 더 자세한 내용은 추후 역자 블로그

2 역자주_ 11장의 형태소 분석은 원서가 일어 기준이므로 한국 실정에 맞게 소스 코드 및 데이터 파일을 수정 했습니다. 앞에 명시한 버전에서의 동작을 확인했으며, 원서에서 사용하는 라이브러리나 로직의 흐름은 최 대한 유지했습니다.

010


(https://junyun0516.github.io/ )에 따로 업데이트할 예정입니다. 이 책의 샘플 코드는 한빛미디어 홈페이지( http://hanbit.co.kr/src/10224 )에 서 내려받을 수 있습니다. 각 예제마다 함께 기술한 폴더 경로는 장(절)의 샘플 코드가 있는 위치를 나타냅니다. 다음에 나열한 폴더 아래에는 예제와 그에 해당하는 파일이 있 습니다. 또한 이 책에 게재된 코드의 오른쪽 상단에 파일명을 표기했습니다. 01장 ▶ load_data

02장 ▶ 002_selection

03장 ▶ 003_aggregation

04장 ▶ 004_join

05장 ▶ 005_split

06장 ▶ 006_generate

07장 ▶ 007_spread

08장 ▶ 008_number

09장 ▶ 009_category

10장 ▶ 010_datetime

11장 ▶ 011_character

12장 ▶ 012_gis

13장 ▶ 013_problem

011


목차

지은이 옮긴이 소개 ..............................................................................

004

옮긴이의 글 ......................................................................................... 005 지은이의 글 ......................................................................................... 006 들어가며 . ........................................................................................... 007

Part 1 전처리 입문 ................................................................................

021

1장 전처리 개요 .......................................................................................

022

1.1 데이터 ............................................................................................... 022 1.1.1 데이터 레코드 ............................................................................. 022 1.1.2 자료형 ....................................................................................... 024

1.2 전처리의 역할 .................................................................................... 025 1.2.1 머신러닝 .................................................................................... 025 1.2.2 지도학습과 비지도학습 ................................................................. 025 1.2.3 데이터 분석을 위한 전처리 ............................................................ 027

1.3 전처리의 흐름 .................................................................................... 029 1.3.1 데이터 구조 대상의 전처리 ............................................................ 029 1.3.2 데이터 내용 대상의 전처리 ............................................................ 029 1.3.3 전처리 순서 ................................................................................ 030

1.4 세 가지 프로그래밍 언어 ...................................................................... 031 1.4.1 적절한 프로그래밍 언어 사용하기 ................................................... 032

1.5 패키지/라이브러리 .............................................................................. 032 1.5.1 분석에 이용하는 패키지/라이브러리 ................................................ 033

012


1.6 데이터셋 ............................................................................................ 034 1.6.1 호텔 예약 레코드 ......................................................................... 035 1.6.2 공장 제조 레코드 ......................................................................... 036 1.6.3 월별 지표 레코드 ......................................................................... 037 1.6.4 문장 데이터셋 ............................................................................. 037

1.7 데이터 읽기 ........................................................................................ 038 1.7.1 SQL로 데이터 읽기 ...................................................................... 038 1.7.2 R로 데이터 읽기 .......................................................................... 041 1.7.3 파이썬으로 데이터 읽기 ................................................................ 041

Part 2 데이터 구조 전처리 ..............................................................

043

2장 추출 .....................................................................................................

044

2.1 데이터 열을 지정한 추출 ..................................................................... 044 Q1

2.2 조건에 따른 데이터 행 추출 .................................................................. 051 Q1 Q2

조건에 따른 데이터 행 추출 ............................................................... 053 인덱스를 간접적으로 이용한 데이터 행 추출 ......................................... 059

2.3 데이터 값을 고려하지 않는 샘플링 ........................................................ 061 Q1

데이터 열 추출 ................................................................................ 045

랜덤 샘플링 .................................................................................... 061

2.4 집약 ID에 기반한 샘플링 ...................................................................... 065 Q1

ID별로 샘플링하기 ........................................................................... 067

013


목차

3장 집약 .....................................................................................................

3.1 데이터와 종류의 개수 산출 ................................................................... 072 Q1

Q1

102

4.1 마스터 테이블에서 정보 얻기 ................................................................ 102 마스터 테이블 결합 .......................................................................... 103

4.2 조건에 따라 결합할 마스터 테이블 변경하기 .......................................... 111 Q1

014

시간 데이터에 번호 부여 ................................................................... 094 랭킹 .............................................................................................. 097

4장 결합 .....................................................................................................

Q1

최빈값 ........................................................................................... 089

3.6 순위 계산 ........................................................................................... 093 Q2

084

분산값과 표준편찻값 ........................................................................ 085

3.5 최빈값 계산 ........................................................................................ 088 Q1

대푯값 ........................................................................................... 081

3.4 분포 계산 .......................................................................................... Q1

합곗값 ........................................................................................... 077

3.3 최댓값, 최솟값, 대푯값 산출 ................................................................. 080 Q1

집계와 유니크 카운트 ....................................................................... 072

3.2 합곗값 계산 ........................................................................................ 077 Q1

071

마스터 테이블 변경 .......................................................................... 112


4.3 과거 데이터에서 정보 얻기 ................................................................... 120 Q1 Q2 Q3 Q4

145

5.1 모델 검증을 위한 데이터 레코드 분할 .................................................... 146 교차 검증 ....................................................................................... 147

5.2 모델 검증을 위한 시간 데이터 분할 ....................................................... 153 Q1

상호 결합 처리 ................................................................................ 139

5장 분할 .....................................................................................................

Q1

과거 n건의 평균값 ........................................................................... 129 과거 n일의 합곗값 ........................................................................... 133

4.4 상호 결합 ........................................................................................... 138 Q1

n건 전의 데이터 얻기 ....................................................................... 121 과거 n건의 합곗값 ........................................................................... 125

학습 및 검증을 위한 시간 데이터 준비 ................................................. 155

6장 생성 .....................................................................................................

160

6.1 언더샘플링으로 데이터 불균형 조정하기 ................................................ 161

6.2 오버샘플링으로 데이터 불균형 조정하기 ................................................ 162 Q1

오버샘플링 ..................................................................................... 164

015


목차

7장 전개 .....................................................................................................

7.1 가로 데이터로 변환 ............................................................................. 168 Q1

177

8장 수치형 .................................................................................................

178

8.1 수치형 데이터로 변환 .......................................................................... 178

정규화 ........................................................................................... 192

8.5 예욋값 제거 ........................................................................................ 194 Q1

016

수치형의 범주화 .............................................................................. 187

8.4 정규화 ............................................................................................... 190 Q1

대수화 ........................................................................................... 184

8.3 범주화를 이용한 비선형 변화 ................................................................ 186 Q1

다양한 수치형 데이터로 변환 ............................................................. 178

8.2 대수화를 이용한 비선형 변화 ................................................................ 182 Q1

희소 행렬 ....................................................................................... 173

Part 3 데이터 내용 전처리 ..............................................................

Q1

가로 데이터로 변환 .......................................................................... 169

7.2 희소 행렬로의 변환 ............................................................................. 172 Q1

168

표준편차 기준의 예욋값 제거 ............................................................. 195


8.6 주성분 분석을 이용한 차원 압축 . .......................................................... 197 Q1

8.7 수치의 보완 ........................................................................................ 202 Q1 Q2 Q3 Q4

더미 변수화 ................................................................................... 220

범줏값의 집약 ................................................................................. 223

9.4 범줏값의 조합 ..................................................................................... 227 범줏값의 조합 ................................................................................. 228

9.5 범주형의 수치화 .................................................................................. 230 Q1

범주형 변환 .................................................................................... 216

9.3 범줏값의 집약 ..................................................................................... 223

Q1

215

9.2 더미 변수화 ........................................................................................ 220

Q1

평균값 보완 .................................................................................... 209 PMM을 이용한 다중대입 .................................................................. 211

9.1 범주형으로 변환 .................................................................................. 215

Q1

결손 레코드 제거 ............................................................................. 204 정수 보완 ....................................................................................... 206

9장 범주형 .................................................................................................

Q1

주성분 분석을 이용한 차원 압축 ......................................................... 199

범주형의 수치화 .............................................................................. 231

9.6 범주형의 보완 ..................................................................................... 234 Q1

KNN을 이용한 보완 ......................................................................... 235

017


목차

10장 일시형 .................................................................................................

10.1 일시형과 날짜형으로 변환 .................................................................... 239 Q1

일시의 증감 처리 ............................................................................. 257

10.5 계절로 변환 ........................................................................................ 261 Q1

계절로 변환 .................................................................................... 261

10.6 시간대로 변환 .................................................................................... 266

10.7 평일과 휴일로 변환 ............................................................................. 266 Q1

휴일 플래그 부여 ............................................................................. 267

11장 문자형 .................................................................................................

269

11.1 형태소 분석을 이용한 분해 ................................................................... 270 Q1

명사와 동사 추출 ............................................................................. 271

11.2 단어의 집합 데이터로 변환 ................................................................... 273 Q1

018

일시 차의 계산 ................................................................................ 251

10.4 일시형의 증감 .................................................................................... 256 Q1

각 일시 요소 꺼내기 ......................................................................... 245

10.3 일시의 차이로 변환 ............................................................................. 250 Q1

일시형과 날짜형으로 변환 ................................................................. 240

10.2 연, 월, 일, 시각, 분, 초, 요일로 변환 ..................................................... 244 Q1

239

bag of words 만들기 ..................................................................... 275


11.3 TF-IDF로 단어의 중요도 조정 ............................................................ 278 Q1

12장 위치 정보형 .......................................................................................

293

13장 연습 문제 ...........................................................................................

294

13.1 집계 분석 전처리 ................................................................................. 294 집계 분석 준비 ................................................................................ 294

13.2 추천 전처리 ........................................................................................ 299 Q1

거리 계산 ....................................................................................... 287

Part 4 실천 전처리 ................................................................................

Q1

한국 측지계를 세계 측지계로 변환 ...................................................... 283

12.2 두 지점 간 거리와 방향 계산 ................................................................. 287 Q1

282

12.1 한국 측지계를 세계 측지계로 변환 ........................................................ 282 Q1

TF-IDF로 bag of words 작성 ......................................................... 279

추천을 위한 희소 행렬 작성 ............................................................... 299

13.3 예측 모델링 전처리 ............................................................................. 305 Q1

예측 모델링을 위한 전처리 ................................................................ 306

019


목차

부록 A 예제 환경 구성하기 ..............................................................

319

A.1 SQL 환경 준비하기 ............................................................................. 320

A.2 R 환경 준비하기 ................................................................................. 343

A.3 파이썬 환경 준비하기 ......................................................................... 352

찾아보기 . ........................................................................................... 362

020


Part

1

전처리 입문

전처리의 역할과 흐름, 전처리 대상 데이터, SQL/R/파이썬을 적절하게 사용하는 방법과 이 책에서 사용할 데이터셋data set에 대해 설명합니다.

021


1장

전처리 개요

1.1 데이터 이 책에서 다룰 데이터를 설명합니다.

1.1.1 데이터 레코드 데이터란 무엇일까요? IT 분야에서는 디지털 데이터를 의미하며 0과 1로 이루어진 2진 수로 표현합니다. 주요 데이터 타입은 크게 다음과 같이 나눌 수 있습니다. ●●

수치나 문자 등으로 구성된 데이터 레코드

●●

이미지, 음성, 동영상 등의 멀티미디어 데이터

●●

데이터 사이의 연결을 나타낸 그래프 데이터

데이터 레코드란 서로 다른 자료형의 값을 하나로 묶은 데이터 묶음입니다. [그림 1-1]과

같은 형식입니다. 그림의 행row에 해당하는 실선 부분이 레코드 하나입니다. 한 단위 안 에 다양한 형type의 데이터가 모인 것으로, 그림에서는 하나의 예약에 관한 다양한 데이 터가 묶였습니다. 반대로 열column에 해당하는 점선 부분은 같은 자료형이 하나로 묶였습 니다.

022

1부 전처리 입문


열 reserve_id

hotel _id

customer _id

reserve _datatime

checkin _date

checkin_time

checkout _date

r1

h_2051

c_1

2016/6/21 7:41

2016/7/16

12:30:00

2016/7/20

people_num

1

total _price

35200

r2

h_1767

c_2

2016/3/1 5:31

2016/10/13

10:30:00

2016/10/15

1

84400

r3

h_1446

c_3

2016/3/6 22:51

2016/4/1

9:30:00

2016/4/5

3

100800

r4

h_785

c_4

2016/5/4 16:46

2016/10/14

10:00:00

2016/10/17

1

54800

r5

h_2760

c_5

2016/5/22 12:47

2016/6/9

11:30:00

2016/6/11

5

131000

그림 1-1 데이터 레코드의 예

지금까지 데이터 분석의 대상은 대부분 데이터 레코드였습니다. 하지만 딥러닝deep learning 의 등장으로 다루기 어려웠던 멀티미디어 데이터multimedia data도 데이터 분석에 활용하기 시 작했습니다. 기존에 사람이 담당했던 전처리를 딥러닝을 통해 데이터에서 자동으로 구 현하고, 적은 비용으로 정밀한 모델을 이용할 수 있기 때문입니다. 하지만 딥러닝으로 전처리를 자동화하려면 먼저 대량의 데이터를 준비해야 합니다. 실제로 데이터를 충분 히 준비하지 못하면1 딥러닝 적용이 어려울 수도 있습니다. 또한 멀티미디어 데이터는 데이터 레코드보다 데이터의 크기가 커 계산에 드는 비용이 높아집니다. 이런 이유로 아 직은 여러 조직에서 멀티미디어 데이터보다 데이터 레코드를 우선시합니다. 그래프 데이터graph data는 소셜 서비스가 발전하면서 한때 많은 주목을 받기도 했습니다. 하

지만 인플루언서influencer 정보를 추출하는 등의 일부 상황을 제외하고는 사용할 경우가 적어 아직 활용도가 높지는 않습니다. 이와 같은 이유로 데이터 레코드는 여전히 데이터 분석의 주역입니다. 물론 데이터 레코 드에도 딥러닝을 적용할 수 있기 때문에 일부 사람들은 앞으로 데이터 레코드의 전처리 가 불필요해질 것이라 말하기도 합니다. 하지만 데이터 레코드의 경우, 딥러닝의 주요 목적인 예측 모델의 구축보다는 데이터 분석 자체에 대한 수요가 많아 데이터 레코드의 전처리가 사라질 일은 당분간 없을 것입니다. 또한 멀티미디어 데이터처럼 데이터 레코 드도 딥러닝으로 전처리를 자동화하려면 충분한 데이터가 필요한데 이를 확보하기 어렵 습니다. 게다가 사람의 경험이나 해당 분야에 대한 지식을 기반으로 한 전처리의 경우,

1 대량의 데이터가 필요한 문제를 해결하기 위해서 전이학습(transfer learning)과 같이 모델을 재이용하거나, 적은 데이터를 활용해 효율적으로 학습하는 방법 등이 연구되고 있습니다.

1장 전처리 개요

023


딥러닝을 활용한 예측 모델보다 데이터 레코드를 활용한 전처리의 정확도가 더 높은 경 우가 많습니다. 따라서 데이터 레코드를 활용한 전처리는 여전히 데이터 분석에서 중요한 기술입니다. 이 책에서는 데이터 레코드를 대상으로 한 전처리를 설명합니다.

1.1.2 자료형 자료형이란 문자열이나 수치 등의 데이터 타입을 말합니다. 데이터 타입에는 다양한 종

류가 있으며 표기가 같아도 실제로는 다른 자료형인 경우도 있습니다. 예를 들어 ‘성별’ 이라는 열에 ‘남성’이라는 데이터가 있다고 생각해봅시다. 이 열의 자료형이 문자열이라 면 남성이라는 문자열은 바이너리 데이터binary data로 저장됩니다. 하지만 해당 열의 자료형이 범주형category이라면 데이터의 저장 방식이 크게 달라집니다. 범주형 데이터는 ‘데이터가 취할 수 있는 값의 패턴을 저장하는 마스터 데이터master data (하 나의 열에서 공유)’와 ‘데이터의 값이 마스터 데이터의 어느 데이터에 해당하는지를 나 타내는 인덱스 데이터index data (데이터마다 지정)’로 나뉘어 저장됩니다. 성별을 예로 들면 ‘0=남성, 1=여성’인 마스터 데이터를 열로 저장하고, 데이터의 값으로 남성을 가리키는 인덱스 번호 0을 수치로 저장합니다. 이처럼 겉보기엔 같아 보여도 실제 자료형은 다를 수 있습니다. 데이터 레코드를 대상으로 한 전처리는 행과 열의 개념이 정말 중요합니다. 행과 열의 전처리 내용이 크게 달라지기 때문입니다. 행 단위의 전처리는 서로 다른 자료형을 하나 로 묶어서 처리하고, 열 단위의 전처리는 특정 자료형에 대해 처리합니다. 이에 관해서 는 1.3절에서도 설명하겠지만 열 단위의 전처리는 2장에서, 행 단위의 전처리는 3장에 서 더 자세히 설명합니다.

024

1부 전처리 입문


1.2 전처리의 역할 전처리라는 단어는 어떠한 처리에 ‘앞서 준비’한다는 의미를 포함합니다. 데이터 분석에 서 전처리란 데이터 분석을 준비하기 위한 처리입니다. 구체적으로 어떠한 데이터 분석 을 준비하는 것일까요? 데이터 분석 대상은 다음과 같이 크게 세 종류로 나뉩니다. ➊ 지표, 표, 그래프 작성 ➋ 지도학습 ➌ 비지도학습

이들을 설명하기에 앞서 머신러닝에 대해 간단하게 살펴보겠습니다.

1.2.1 머신러닝 머신러닝machine learning이란 데이터를 입력해 알고리즘에 따라 분석하고 규칙, 지식 표현,

판단 기준 등을 추출하는 작업을 말합니다. 구체적으로는 예측 모델이나 입력 데이터의 분류(클러스터링clustering ) 기준 등을 출력할 수 있습니다. 이렇게 출력된 모델을 이용해 미지의 데이터를 예측하거나 주어진 데이터를 분류할 수 있습니다. 머신러닝 방법은 다 중회귀분석 모델multiple regression analysis, 결정 트리decision tree, k-평균 알고리즘k-means algorithm, 딥러닝 등 다양합니다.

1.2.2 지도학습과 비지도학습 지도학습supervised learning과 비지도학습unsupervised learning은 각각 지도 데이터가 있는/없는 머신

러닝을 말합니다. 이때 지도 데이터는 학습 데이터 또는 훈련 데이터라고도 합니다(이 책 에서는 학습 데이터라고 하겠습니다). 학습 데이터는 머신러닝의 모델 훈련에 이용하고, 훈련된 모델에 대해 새로운 데이터를 입력함으로써 훈련 결과에 따른 예상을 출력할 수 있습니다. 이 새로운 데이터로 모델의 정확도를 예측할 때는 테스트 데이터라고 합니다. 반대로 머신러닝 모델을 운용할 때 입력하는 데이터는 일반적인 이름이 없지만 이 책에 서는 적용 데이터라고 하겠습니다.

1장 전처리 개요

025


다음 [그림 1-2]에서 지도학습과 비지도학습을 도식화했습니다.

비지도학습 학습 데이터 설명 변수

입력

비지도학습 모델 학습 전

출력

입력

비지도학습 모델 학습 후

출력

학습

지도학습 모델 학습 전

입력

지도학습 모델 학습 후

적용 데이터 설명 변수

지도학습

학습 데이터 설명 변수

예측 대상

테스트 데이터 설명 변수

예측

적용 결과

적용 결과

적용 결과 비교

테스트 데이터 적용 데이터 설명 변수

입력

지도학습 모델 학습 후

예측

예측 대상 예측 결과

그림 1-2 지도학습과 비지도학습

지도학습 모델에서 학습 데이터와 적용 데이터의 차이는 예측 대상의 답을 갖는지 아닌 지의 여부입니다. 학습 데이터가 머신러닝 모델을 훈련시키려면 답을 알려줘야 하지만, 적용 데이터는 답을 예측하고자 입력하는 것이므로 애초에 답을 갖지 않습니다. 테스트 데이터도 학습 데이터와 마찬가지로 답을 가지고는 있지만, 적용 데이터처럼 머신러닝 모델에 입력하지 않고 테스트를 위해서만 사용합니다. 한편 비지도학습 모델의 경우 예 측 대상이 없어 학습 데이터와 적용 데이터 간 차이가 없습니다. 여기서 머신러닝 모델 의 입력값으로 선택된 열을 설명 변수 또는 특성feature이라고 합니다. 앞서 설명한 것처럼 비지도학습은 학습 데이터를 입력해 새로운 데이터를 출력합니다. 예를 들어 클러스터링(머신러닝으로 데이터를 그룹화하는 방법)과 같은 비지도학습은 입력된 학습 데이터의 값에서 데이터 간 거리를 계산하고, 그 거리에 따라 데이터를 분 류한 뒤 최종적으로 입력된 각 데이터의 그룹 번호를 출력합니다. 학습 데이터와 같은

026

1부 전처리 입문


기준의 변환을 적용 데이터에 반영하고 싶다면, 학습이 끝난 비지도학습 모델에 적용 데 이터를 입력하면 됩니다. 지도학습은 학습 데이터로 머신러닝 모델을 훈련시키고, 학습이 끝난 지도학습 모델에 적용 데이터를 입력함으로써 적용 데이터에 대응하는 예측 결과를 출력합니다. 예를 들 면 다중회귀 모델과 같은 지도학습 모델은 학습 데이터에서 예측하려는 1차 함수의 계 수를 학습하고, 적용 데이터를 입력한 뒤, 입력값에 1차 함수를 적용해 적용 데이터별 예측값을 출력합니다.

1.2.3 데이터 분석을 위한 전처리 앞서 데이터 분석 대상 세 가지를 언급했습니다. 지금부터 그 준비에 필요한 각 전처리 과정의 목적과 내용을 간단하게 살펴보겠습니다. 지표, 표, 그래프 작성용 전처리

지표의 계산, 표나 그래프로 쉽게 변환할 수 있는 데이터를 준비하기 위한 전처리 과정 입니다. 필요한 열이 모두 있고, 다루기 쉬운 단위로 집약된 행이 필요한 범위만큼 존재 하는 데이터를 작성합니다. 예를 들어 많은 가게를 운영하는 회사라면 관리 중인 각 지 점의 월평균 매출이나 최대 매출을 알고 싶을 겁니다. 이러한 집계 분석의 전처리로 가 게마다 월 매출을 기록해두면 알고 싶은 정보를 쉽게 얻을 수 있습니다. 또한 매상에 관 한 월별, 연령별 손님 수 등을 지표로 준비해두면 매상과 지표의 관계성을 쉽게 집계할 수 있습니다. 지도학습용 전처리

지도학습 모델이 이용할 학습 데이터, 테스트 데이터, 적용 데이터 세 종류를 준비하는 것이 목적입니다. 학습 데이터와 테스트 데이터는 적용 데이터에 예측 대상의 데이터를 추가하면 됩니다. 또한 학습 데이터와 테스트 데이터는 본질적으로 같은 데이터이고 준 비한 데이터를 분할해 학습 데이터와 테스트 데이터로 사용할 수 있습니다(데이터 분할 에 대해서는 5장에서 자세히 다룹니다).

1장 전처리 개요

027


이 과정 역시 머신러닝 모델의 종류에 따라 머신러닝 모델이 다루기 쉬운 데이터로 변환 하는 전처리가 필요합니다. 예를 들면 입력값이 성별 및 연령이고, 출력값이 캠페인 반 응 예측인 로지스틱 회귀logistic regression 모델이 있다고 가정합시다. 로지스틱 회귀 모델이란 로지트 변환을 적용한 0/1 플래그에 대한 1차 함수의 선형 모델을 말합니다. 이 로지스 틱 회귀 모델에 성별과 연령을 입력값으로 선택하면 ‘연령이 높을수록 반응한다’라든가 ‘여성이 더 반응한다’라는 식의 경향은 표현될 수 있습니다. 하지만 ‘연령이 30대에 가까 운 사람일수록 반응한다’라든가 ‘30대 여성이 특별히 더 잘 반응한다’와 같은 경향은 표 현되지 않습니다. 이 문제를 해결하기 위해서 연령을 범주형으로 변환하는 전처리(8.2 절)나 연령과 성별을 조합한 새로운 범주형의 값으로 변환하는 전처리(9.4절)가 필요 합니다. 이와 같이 전처리는 크게 세 가지 목적이 있고 이후 이어지는 처리에 따라 준비해야 할 데이터가 다르므로 그에 따른 전처리 과정도 달라집니다. 따라서 먼저 데이터 분석의 목 적을 명확하게 하고, 그 목적을 달성하기 위한 분석이 앞서 설명한 세 가지 중 어디에 해 당하는가를 판단해야 합니다. 확인하고 싶은 집계 내용이나 이용할 머신러닝 모델의 특 성을 생각하면 어떤 전처리가 필요한지 가늠할 수 있습니다. 그리고 이러한 전처리 중에 서도 기본이 되는 전처리가 있으며, 대부분 전처리는 기본이 되는 전처리를 조합해 구현 할 수 있습니다. 비지도학습용 전처리

비지도학습 모델이 이용할 설명 변수를 가진 데이터를 준비하는 전처리 과정입니다. 이 과정 역시 충분한 열과 행이 필요합니다. 뿐만 아니라 머신러닝 모델의 종류에 따라 다 루기 쉬운 자료형으로 변환해야 합니다. 예를 들어 성별 열을 문자열에서 범주형으로 변 환하는 것으로 머신러닝 모델은 성별이 남성과 여성뿐이라는 것을 이해할 수 있습니다. 또한 클러스터링은 데이터 간 거리를 계산해야 하는데, 이용하는 열에 따라 수치의 크 기가 크게 다르면 특정 열의 값이 결과에 과도한 영향을 미칩니다. 이 문제를 해결하려 면 열의 값의 스케일을 갖추는 전처리 작업인 ‘정규화’가 필요합니다(정규화에 대해서는

8.3절에서 자세히 다룹니다).

028

1부 전처리 입문


1.3 전처리의 흐름 전처리의 흐름에 관해 설명하겠습니다. 데이터의 무엇을 대상으로 변환하는가에 따라 전처리를 다음과 같이 두 종류로 분류할 수 있습니다. ●●

데이터 구조 대상의 전처리

●●

데이터 내용 대상의 전처리

1.3.1 데이터 구조 대상의 전처리 데이터 구조 대상의 전처리는 여러 행에 걸쳐 데이터 전체를 아우르는 처리입니다. 대부 분 많은 양의 데이터를 다루며, 데이터 전처리 과정 중에서도 비교적 빠른 단계에서 구 현됩니다. 특정 데이터를 뽑아내기도 하고(추출), 데이터끼리 결합하거나 특정 규칙에 따라 여러 행을 하나의 행으로 묶기도 합니다. 구체적인 예는 다음과 같습니다. ●●

랜덤 샘플링으로 행을 추출(2.3절)

●●

매출 레코드와 상품 마스터를 상품 ID와 결합해 상품 정보를 첨부한 매출 레코드로 생성(4장)

●●

지도학습 모델을 위한 학습 데이터와 테스트 데이터를 분할(5.1절)

●●

캠페인에 반응하는 데이터가 적을 때 업 샘플링으로 데이터 늘리기(6.2절)

1.3.2 데이터 내용 대상의 전처리 데이터 내용 대상의 전처리는 데이터 행에 대한 처리입니다. 데이터 구조 대상의 전처리 와 달리 행 단위로 독립적인 처리가 가능한 소규모 데이터를 다룹니다. 따라서 데이터 전처리 과정 중 후반에 주로 실행하며, 조건을 변경하며 반복 검증하는 일이 많습니다. 일별 데이터를 월별 데이터로 변환하거나 숫자 데이터의 열을 조합해 새로운 숫자 열을 생성합니다. 구체적인 예는 다음과 같습니다. ●●

연령을 나타내는 수치를 열 개의 범주형 데이터(연대를 표시)로 변환(8.2절)

●●

날짜 데이터를 요일 데이터로 변환(10.2절)

●●

두 지점의 경도/위도에서 각 지점의 거리를 계산(12.2절)

1장 전처리 개요

029


1.3.3 전처리 순서 처리 대상이 다른 두 가지 전처리를 토대로 전처리의 대략적인 순서를 설명하겠습니다. 앞서 설명한 것처럼 필요한 전처리는 뒤에 이어지는 분석 내용에 따라 크게 달라집니다. 모든 경우에 적용되는 것은 아니지만 전형적인 패턴은 존재합니다. [그림 1-3]에 전처 리의 전형적인 패턴과 그 순서를 표시했습니다.

데이터 구조 대상의 전처리 데이터 레코드

대상 데이터 추출

마스터 데이터 결합

마스터 데이터

데이터 집약 데이터 내용 대상의 전처리 데이터 내용 변환

집계나 BI 입력 정보에 이용 비지도학습 모델에 이용

머신러닝 모델을 위한 변환 데이터 구조 대상의 전처리 학습 데이터와 테스트 데이터 분할

지도학습 모델에 이용

그림 1-3 전처리의 전형적인 패턴

전형적인 패턴에서는 우선 대상 데이터를 추출해 데이터양을 줄입니다. 이때 마스터 데 이터를 결합하거나 데이터 내용의 변환을 추출하기 전에 실행하면 실제로 이용하지 않 는 데이터에 대해서도 전처리를 적용하게 되므로 불필요한 계산 비용이 커집니다. 다만 마스터 데이터가 가진 데이터를 결합한 후에 값의 조건이나 크기에 따라 추출을 나중으 로 미루기도 합니다. 추출 후에는 결합 및 집약하여 분석에 필요한 데이터를 갖춥니다. 그 후 데이터 내용 대상의 전처리로 진행합니다.

030

1부 전처리 입문



Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.