brunch

You can make anything
by writing

C.S.Lewis

by 강한별 Jun 19. 2016

데이터 과학 입문

데이터과학 입문 - 


레이철 슈트 & 캐시 오닐 지음, 윤영민 외 옮김/한빛미디어

추천 대상 : 현업의 데이터 과학은 어떠한가? 각 모형을 사용할 때의 상황, 주의점 같은 것이 알고 싶은 입문자

추천 정도 : ★ ★ ★  ★ ★

추천 사유 : 데이터 과학자는 어떠해야 하는가에 대해서, 또는 실제 데이터와 코드를 제공하고 있어 실습해보는 데에도 도움이 된다. 현업에 종사하고 있는 데이터과학자들의 의견과 강의를 정리한 것이기 때문에 현업에서는 이렇게 하고 있구나를 파악하는 데에도 도움이 되었다. 개인적으로는 통계 관련 도서를 몇 권 본 다음에 이 책을 보는 게 나을 거라고 생각한다. 모형이 여러 가지 나오는데 설명이 아주 자세한 것은 아니기 때문이다. 나는 통계의 힘 1, 2권은 다 본 후에 이 책을 봤는데 통계의 힘에서 본 내용들이 좀 더 짧고 실습화로 제공된 느낌이었다.

개인적으로 이러한 형태의 책을 정리할 때마다 고민이 드는 건, 복잡한 수식과 설명을 모두 발췌하는 게 좋을지 아니면 원론적인 이야기만 하면 좋을지 선택하기가 어려웠다. 수식 입력은 시간이 많이 들고 내 입장에서 별로 달가운 일이 아니며, 축약해서 적어둔데도 독자 입장에서 이해하기가 어려울 것이라 생각이 들어 수학적 배경 부분의 발췌는 생략했다. 사서 읽어보세요! 




발췌


CHAPTER 1. 소개 : 데이터과학이란 무엇인가?

1.1 빅데이터와 데이터 과학 열풍

1.2 열풍을 넘어서

1.3 왜 지금?

1.3.1 데이터화

1.4 현재의 풍경(약간의 역사와 함께)

드루 콘웨이의 데이터과학 벤다이어그램

- 데이터 과학자의 스킬

1) 통계학(당신에게 익숙한 전통적인 방식)

2) 데이터 변환(파싱, 스크래핑, 그리고 포맷팅)

3) 시각화(그래프, 도구 등)

1.4.1 데이터 과학 직업들

1.5 데이터 과학 프로필

데이터 과학팀은 다양한 사람이 다양한 스킬(프로필)을 가지고 참여할 때가 가장 좋다. 왜냐하면 누구도 모든 면에서 잘할 수 없기 때문이다. '데이터 과학 팀'으로 규정하는 것이 더 낫지 않을까

1.6 사고 실험: 메타 정의

1.7 데이터과학자는 정말로 어떤 직업인가>

1.7.1 대학에서

1.7.2 산업에서


CHAPTER 2. 통계적 추론, 탐색적 데이터 분석과 데이터 과학 과정

2.1 빅데이터 시대의 통계적 사고

먼저 습득해야 할 기본적인 자질 : 통계학, 선형대수, 약간의 프로그래밍

부가적인 스킬 : 데이터 준비, 변화, 모형화, 코딩, 시각화, 커뮤니케이션

2.1.1 통계적 추론

데이터는 현실 세계의 과정이 남긴 흔적이며, 우리가 어떤 흔적을 습득하는가는 데이터 수집과 표본추출 방법에 의해 결정됨

새로운 아이디어를 찾아내고 수집된 데이터를 이해 가능한 모습으로 그리고 간결하게 요약할 수 있게끔 그 과정이 단순화되어야 함

2.1.2 모집단과 표본

2.1.3 빅데이터의 모집단과 표본

- 표본 추출은 공학적인 난제를 일부 해결한다 : 일반적인 분석 또는 추론 목표를 달성하기 위해 모든 데이터를 항상 저장할 필요는 없다. 반면 고객 서비스를 위해서는 그렇지 않다. 예를 들어 어떤 사용자를 위한 UI에 정확한 정보를 입력하기 위해서는 그에 관한 모든 정보를 가지고 있어야 함

- 편의 : 페이스북, 구글 또는 트위터의 모든 데이터에 접근한다고 하더라도 우리가 그 데이터로부터 발견한 어떠한 추론도 해당 사용자 집단 또는 어떤 특정한 날의 사용자들 이외의 다른 사람들에 대한 결론으로 확대하지는 말아야 함

- 새로운 유형의 데이터 :

1) 전통적인 데이터 : 숫자, 범주형, 혹은 이진 데이터

2) 텍스트 : 이메일, 트윗, 뉴욕타임즈 기사

3) 기록 : 사용자 수준 데이터, 시간 기록 사건 데이터 제이슨 형식의 로그 파일

4) 지리 기반 위치 데이터

5) 네트워크 데이터

6) 센서 데이터

7) 이미지

- 데이터 세트로부터 도출한 결론이 다음주 혹은 내년에도 유효할까? 이것은 아직 답이 없는 연구 문제에 해당한다

2.1.4 빅데이터는 커다란 가정을 의미할 수 있다

- N이 전체가 될 수 있을까?

빅데이터 시대에 직면한 가장 큰 문제 중 하나는 N = 전체라는 가정을 주장하는 것이다. 무엇보다도 그 가정은 접근성을 갖지 못한 사람들의 목소리를 배제하는 방법이다.

- 데이터는 객관적이지 않다

'N=전체'라는 가정이 문제가 되는 또 다른 상황은 데이터가 객관적이라는 인식으로 바뀔 때다. 데이터가 객관적이라거나 '데이터가 말해 준다' 라는 믿음은 잘못 된 것이므로, 그렇게 말하는 사람들을 주의하라

데이터는 스스로 말하지 않는다. 데이터는 단지 우리 사회에서 일어난 사건들의 정량적이며 수동적인 반향일 뿐이다

- n=1이라는 개념은 빅데이터에서 새로운 의미를 가진다. 우리는 한 명의 개인에 대해서 수많은 정보를 기록할 수 있다

2.1.5 모형화

- 모형이란 무엇인가?

사람들은 다양한 방식의 표현을 통해 세상을 이해하려고 한다. 통계학자와 데이터 과학자는 데이터의 형태와 구조를 표현하는 수학적 함수들을 가지고 데이터 생성 과정의 불확싱설과 무작위성을 포착함

모형이 건축적이든 생물학적이든 혹은 수학적이든, 그것은 하나의 특정한 렌즈를 통해 현실의 성격을 이해하고 표현하려는 시도

모형은 외재적인 디테일을 모두 제거하거나 추상한 인위적인 구성물임. 모형을 분석할 후 제거된 디테일에 항상 관심을 기울여야 함

- 통계적 모형화

모형의 저변에 있는 과정이라고 생각하는 것을 그림으로 나타내 보는 것이 좋다. 무엇이 가장 먼저 고려되어야 하는지, 무엇이 무엇에 영향을 주는지, 무엇이 무엇의 원인이 되는지, 그리고 그것에 대한 검증은 어떻게 할 것인지 등을 시각적으로 표현해 보는 것이다

모수는 그리스 문자로, 데이터는 라틴 문자로 표기하는 것이 관례

- 그런데 어떻게 모형을 만들 수 있을까?

직접 여러 번 해보기 전까지는 모형화가 상당히 불가사의하다. 최선의 방법은 단순하게 시작하고 점차 정교하게 만들어 가는 것이다. 데이터에 대한 감을 얻기 위해 여러분은 히스토그램을 그리고 산점도를 살펴볼 수 있다(보아야 한다). 그냥 무엇인가 적어보려고 노력하라. (중략) 이것이 어떤 의미라도 있는 것인가? 만약 의미가 없다면, 왜 그럴까? 어떻게 하면 더 의미 있게 만들 수 있을까? (중략) 만약 도움이 된다면 완전한 문장을 사용할 수도 있다. (중략) 그런 다음에 여러분이 사용한 단어들을 등식과 프로그램으로 나타내기 위해 시도한다

단순하게 시적하는 것이 항상 좋다

- 확률분포

확률분포는 통계적 모형의 토대. (중략 : 여러 분포에 대한 설명이 나옴) 두 개 이상의 확률변수를 묘사하기 위해 결합 분포라고 불리는 다변량 함수를 사용. (중략) y의 특정한 값이 주어질 때  x의 밀도함수인 조건부 분호 p(x|y)도 있다. 데이터를 다룰 때 조건을 주는 것은 부분집합화에 해당

- 모형 적합

모형 적합은 관찰된 데이터를 사용하여 모형의 모수를 추정하는 작업. 최대가능도 추정과 같은 최적화 방법과 알고리즘이 자주 적용됨

- 과적합

모형의 모수 추정을 위해 데이터 세트를 사용하지만, 모형이 표본 데이터 이상의 현실을 잘 포착해내지 못함을 뜻하는 용어

2.2 탐색적 데이터 분석

탐색적 데이터분석(EDA) : 모형을 만드는 첫 단계

EDA의 기본 도구 : 도표, 그래프, 요약통계. (상자 도표를 사용하여) 모든 변수의 분포를 도표화하고, 시계열 데이터를 도표화하며 변수를 변환하고 산점도 행렬을 이용하여 변수들의 대응관계를 파악하여 모든 변수의 요약 통계를 생성하는 등 데이터를 체계적으로 둘러보는 하나의 방법. 기본적으로 EDA는 변수들의 평균, 최솟값, 최댓값, 사분위수 등의 계산 그리고 이상값의 발견을 뜻함. 도구이면서 사고방식이기도 함

2.2.1 탐색적 데이터 분석의 철학

데이터를 다루는 사람이라면 누구나 EDA를 해야 한다. 데이터에 관한 직관을 얻기 위해, 분포들 사이를 비교하기 위해, 데이터의 온전성 검사(sanity checking:데이터가 당신이 기대하는 척도와 형태로 되어 있는가)를 하기 위해, 결측 데이터나 이상값을 찾아내기 위해 그리고 데이터를 요약하기 위해 EDA가 필요

(중략)EDA는 연구의 초기단계에서 이루어지고, 데이터 시각화는 분석 결과를 커뮤니케이션하기 위해 연구의 마지막 단계에서 행해짐. (중략) 데이터의 도표화와 비교는 분석을 아주 많이 진전시켜 주기도 하며, 데이터를 손에 넣자마자 선형회귀를 행하는 것보다는 항상 훨씬 낫다

2.2.2 연습문제 : EDA

- 코딩에 대해 : 프로그래머가 되기 위한 첫번째 요건은 일에 대한 열정. 즉, 인간의 사고와 컴퓨터가 이해할 수 있는 것 사이, 다시 말해 인간의 욕망과 컴퓨터가 그것을 충족시키는 방법 사이에 놓인 신비적인 공간을 탐구하려는 깊은 욕구다. 두번째는 실패에 대한 높은 관용이다. 여러분은 항상 실패를 꺼려하지 않아야 한다.그리고 작동하는 것을 발견할 때까지 여러분은 그 과정을 계속 반복해야 한다

2.3 데이터 과학 과정

데이터 과학 과정

정제된 데이터가 갖춰지면 우리는 어떤 종류의 EDA를 수행해야 한다. ED를 하는 동안 중복값, 결측값, 터무니 없는 이상값, 실제로 로그인되지 않았거나 부정확하게 로그인 된 데이터 때문에 데이터가 제대로 정제되어 있지 않음을 깨닫게 될 수도 있다. (중략) 모형을 설계한다. 어떤 모형을 선택하는가는 우리가 해결하고자 하는 문제의 유형에 달려 있다. (중략) 우리는 결과를 해석하고 시각화하며, 보고하거나 의견을 나눌 수 있다. (중략) 우리의 목적은 스팸 분류기, 검색 순위 알고리즘, 추천 시스템과 같은 '데이터 상품'을 개발하거나 프로토타입을 만드는 것이 될 수도 있다. 데이터과학을 특별한 것으로 만들고, 통계학과 구분될 수 있게 하는 열쇠는, 이 데이터 상품이 현실 세계로 돌아와 통합되고, 사용자와 상호작용하며, 더 많은 데이터를 생성하여 피드백 루프를 창출하는 게 있다. (중략) 여러분의 모형은 단지 미래를 예측하는 것이 아니라 미래를 일으킨다

2.3.1 이 과정에서 데이터 과학자의 역할

어떤 데이터를 수집하고 또 그것을 왜 해야 하는지 결정해야 한다. 그 사람은 문제와 가설을 제시하고 어떻게 문제를 풀어갈 것인지에 대해 계획을 세워야 한다

- 과학적 방법과의 연계 : 

질문하라

배경 연구를 하라

가설을 설정하라

실험으로 가설을 검증하라

데이터를 분석하고 결론을 이끌어내라

결과를 전달하라

데이터 과학자는 이 과정의 모든 부분에 관여

2.4 사고 실험:여러분은 혼돈을 어떻게 시뮬레이션할 것인가?

단어의 의미를 모르는 것은 결코 잘못이 아니지만, 묻지 않는 것은 잘못이다!

2.5 사례 연구:리얼 다이렉트

2.5.1 리얼다이렉트는 어떻게 돈을 버는가?

2.5.2 연습문제: 리얼다이렉트의 데이터 전략

1. 구매자와 판매자가 현재의 웹사이트를 어떻게 돌아다니는지, 그리고 웹사이트가 어떻게 구성/조직되어 있는지 분석하라. 현재의 비지니스 모형을 이해하고, 리얼다이렉트 사용자-행동 데이터분석이 의사결정과 상품개발에 어떻게 활용될 수 있는지 생각해보라. 여러분이 생각할 때 데이터로 답할 수 있는 연구문제들의 리스트를 찾아보라

- 여러분은 공학자에게 어떤 데이터를 로그하도록 추천하겠는가? 여러분이 생각하는 이상적인 데이터 세트는 어떤 모습인가?

- 상품 사용을 보고하고 모니터링 하기 위해 데이터가 어떻게 활용되어야 하는가?

- 데이터가 어떻게 상품/웹사이트에 다시 반영될 수 있을까?

4. '데이터 과학자'가 되면 종종 데이터과학자가 아닌 사람들과  커뮤니케이션 해야 한다. 그렇기 때문에 데이터에 관한 필요한 정보를 얻기 위해 여러분은 커뮤니케이션 전략을 갖는 것이 바람직하다.

5. 여러분은 대부분 도메인의 '영역 전문가'가 아니다. (중략) 질문하는 습관을 길러라


CHAPTER 3. 알고리즘

알고리즘 : 어떤 과업을 달성하기 위한 단계나 법칙을 모은 절차. 정렬, 탐색, 그래프 기반 계산 문제 등.효율성과 계산 시간 측면에서 '가장 좋아야' 할 필요가 있는데, 특히 대용량의 데이터를 다루고 고객에게직접 제공하는 제품을 만들 경우에 중요

- 데이터 과학의 세 가지 알고리즘

1. 정렬, 맵리듀스, 프리젤 같은 데이터 변환, 사전 준비, 처리 알고리즘, 이들 알고리즘은 데이터 공학이라고도 할 수 있음

2. 확률적 경사감소법, 뉴턴의 방법, 최소제곱법 등과 같이 모수 추정을 위한 최적화 알고리즘

3. 기계학습 알고리즘

3.1 기계학습 알고리즘

예측, 분류, 군집화에 사용됨

기계학습 연구자와 통계학자들 간의 차이가 있으나 데이터 과학자는 두 접근 방법 모두 사용할 수 있으며 또 사용할 수 있어야 함

- 모수의 해석

통계학자는 선형 회귀 모형에서 모수들이 현실적인 의미를 가지고 있다고 생각하며, 그래서 이들 모수 각각에 해당하는 현실 세계에서의 현상들을 설명하거나 의미를 찾고자 함. 반면 소프트웨어공학자나 컴퓨터 과학자는 선형 회귀 알고리즘을 상품으로 만들기 위해 프로그램으로 코딩하는 것에 관심을 두는데, 이 예측적 모형화는 이른바 블랙박스 알고리즘이며 모수들의 해석에는 집중하지 않고 설사 그렇다고 해도 예측력을 최적화하기 위해 미세조정을 하는 경우에 한해서다

- 신뢰구간

소프트웨어 공학자들은 불확실성에 대해서는 걱정하지 않음. 그냥 만들 뿐이다. 그저 되풀이해서 만들어보는 것이 기본 철학이다. 뭔가가 잘못되었으면 고치면 된다

3.2 세 가지 기본 알고리즘

분류와 예측으로 나뉨

데이터과학자가 직면하는 어려운 점은 풀고자 하는 문제의 내용과 그 밑에 깔려 있는 가정들에 따라 어떤 해법을 사용할 것인지 알아내는 것

(중략) 처음에 이들 방법을 따로 따로 들으면 배우는 학생의 입장에서는 현실 문제에서 '내가 풀고자 하는 이 문제에 이 알고리즘이 맞는 것인가?' 라는 고민을 하게 됨

(중략) 문제의 내용과 속성을 이해하려고 해야 한다

(중략) 확신이 서지 않는다면 다른 사람과 논의해보는 것도 좋다

3.2.1 선형 회귀

가장 대표적인 통계 기법. 두 개의 변수 혹은 속성 간에 수학적인 관계를 표현하고자 할 때 사용하는 가장 기초적인 것. 이 방법을 적용할 때는 하나의 결과변수(반응 변수, 종속 변수, 분류명 등)와 하나의 예측 변수(독립변수, 설명변수, 특징 등) 또는 하나의 변수와 다른 여러 변수 간에 선형 관계가 있단는 가정을 사용함. 관계를 선형구조로 모형화하는 것


왜 선형 모형을 만들려고 하는가? 미래의 결과를 예측하기 위해 이 같은 관계를 사용하거나, 어떤 상황을 파악하기 위해 관계를 이해하거나 설명하려고 하기 때문


- 뭔가를 쓰면서 시작하자

모형에서 얻고자 하는 것 : 1) 추세 2) 변이

1) 추세 : 일단 실제로 관계가 존재하며 그 관계는 선형이라고 가정

-모형적합

선형 회귀의 기본 아이디어는 모든 점과 직선과의 거리를 최소로 하는 직선을 찾는 것

최소제곱추정법 : 선형 회귀는 근사화한 또는 예측한 값들과 관측된 값들 간의 수직 거리의 제곱합을 최소로 하는 직선을 찾음. 이는 예측 오차를 최소로 하기 위함

관계를 설명하거나 새 결과값에 대한 예측을 할 때 이 선형 모형을 실제로 사용할 것인가는 데이터 과학자가 결정할 일

- 최소제곱법의 확장

1. 오차에 대한 가정을 모형에 도입

2. 더 많은 예측변수를 추가

3. 예측변수를 변환


1. 오차에 대한 가정을 모형에 도입 : 모형에 이 변동성을 포함시키려면 모형에 ε를 더함. ε는 잡음, 오차항이라 하며 관측값과 실제 회귀직선 간의 차이를 나타내는 실제 오차이고 알 수 없는 값이며 예측할 수 있을 뿐이다. ε는 정규분포를 따른다고 가정한다(꼬리가 긴 분포의 경우, 선형 모형이 변수 y값의 일부만 설명할 수 있는 경우 오차항도 꼬리가 길어지는 경향이 있음. 금융 부문 모향에서 자주 발생)

관측 오차(=잔차) : 오차의 분산을 추정하려면 추정된 직선을 봤을 때 관측 데이터들이 이 직선으로부터 얼마나 멀리 떨어져 있는지를 봄. 관측값 자체, 실제 오차 ε의 추정값으로 간주해도 됨

평균 제곱 오차 : 관측값으로부터 예측값이 얼마나 떨어져 있는가를 나타냄

평가 척도 :  p값과 R-제곱값으로 추정값의 신뢰도를 평가

R-제곱값 : 평균제곱오차를 전체 오차로 나눈 것. 우리 모형에 의해 설명되지 않는 분산의 부분을 의미

p-값 : p-값이 작다면 귀무가설 하에 그러한 검정통계량의 값을 얻게 된 가능성이 매우 낮음

교차 검증 : 데이터를 80%는 훈련 데이터세트로, 20%는 검증세트로 나눔. 모형을 훈련 데이터 세트에 적합하고, 검증세트로 평균제곱오차를 검토한 후 훈련데이터세트의 것과 비교함. 이와 같은 비교를 여러 표본크기에 걸쳐 수행함. 두개의 평균제곱오차가 비슷하다면 그 모형은 일반화가 잘 되고 과적합의 위험도 없음. 강력히 추처하는 방법

- 오차항에 대한 기타 모형들

평균제곱오차는 이른바 손실함수의 한 예이며 선형회귀에서는 적합성을 측정하는 아주 좋은 척도이기 때문에 표준처럼 사용하고 있음

3.2.2 k-근접이웃(k-NN)

어떤 방법으로든 이미 분류되어 있거나 분류명을 붙인 많은 객체가 있을 때, 아직 분류되어 있지 않거나 분류명이 없는 객체에 자동으로 분류명을 붙이고자 할 때 사용하는 알고리즘

분류명이 부여되지 않은 것과 속성 측면에서 가장 유사한 것들을 찾아내서 그것들의 분류명을 보고 다수결에 의해 분류명을 부여한다

이를 자동화하기 위해 두 가지의 결정이 필요. 첫째 유사도, 또는 근접성을 어떻게 정의할 것인가? 주어진 항목과 분류명이 붙은 다른 모든 항목과의 유사한 정도를 알 수 있고, 그 중 가장 유사한 항목을 선택하며, 이들을 이웃이라고 하고 이들 이웃에게 '투표권'을 준다

- 신용 점수의 예

k-NN의 절차:

1. 유사도 또는 거리 척도 결정

2. 분류명이 있는 원래의 데이터들을 훈련데이터 세트와 검증 세트로 나눔

3, 평가척도를 선택함(오분류율)

4. k값을 변화시켜가며  k-NN을 여러 번 수행하고 매번 평가척도의 값을 계산

5. 평가 척도가 가장 좋을 때의  k값을 최적값으로 함

6. k값이 정해졌으면 이 훈련데이터세트를 사용해서 분류명을 예측하고자 하는 사람들로 구성된 검증세트를 만듬

- 유사도 또는 거리 척도

'근접성'과 유사도의 정의는 상황에 따라 다름. 변수가 동일한 단위라면 평면상의 유클리드 거리를 적용하면 됨

주의할 점 : 단위 문제는 아주 중요하며 이를 잘못 사용하면 모형이 매우 이상해짐. (중략) 결과적으로 변수의 단위, 즉 이 예제에서는 거리의 개념을 정의하는 방법이 결과에 엄청난 영향을 줄 수 있음. 이를 통계학에서는 '사전정보'라고 함

1) 코사인 유사도 : 두 개의 실숫값을 갖는 속성벡터 x와 y간에 사용될 수 있는 척도. 이 값이 1이면 '완전히 동일' '-1'이면 완전히 반대임. 나머지의 경우 이 둘 사이의 값을 가지며 0이면 서로 독립임을 의미. (정의가 중요하다고 하나 내가 수식을 입력할 줄 몰라 넣지 못함)

2) 지커드 거리 또는 유사도 : 두 집합 간의 유사도 표시

3) 마할라노비스 거리 : 두 개의 실수벡터 간에 사용되며 유클리드 거리에 비해 상관을 고려할 수 있고 단위와 무관하다는 장점이 있음

4) 해밍 거리 : 두 개의 문자열 또는 두 개의 단어 또는 같은 길이의 DNA 서열 간의 거리를 구함. 문자의 위치를 옮겨가면서 그 위치에 있는 문자들이 서로 같은지 보고 다르면 1씩 늘려나감

5) 맨해튼 거리 : 두 개의 k-차원 실수벡터 간의 거리. 격자 모양으로 되어 있는 맨해튼의 도심거리를 다니는 택시를 머릿속에 그려보면 됨

데이터 형태에 따라 사용할 수 있는 더 많은 거리척도가 있으며 어디서 시작해야 할지 확신이 서지 않을 때는 구글 검색을 하여 시작하라

- 훈련 데이터세트와 검증세트

검증단계를 위해서는 전체 데이터로부터 일부 데이터를 따로 떼어 둘 필요가 있음. 대개 무작위로 선택한 20% 정도의 데이터를 저장해둠

- 평가척도의 선택

민감도와 특이도로 상호보완해야 함

민감도 (참긍정률, 재현율): 환자를 환자라고 옳게 진단할 확률

특이도(참부정률, 거짓긍정률, 거짓부정률) : 정상인을 정상이라고 맞게 진단할 확률

정밀도 : 5장에서 다룸

정확도 : 전체 분류명의 숫자 중에서 옳게 분류된 분류명의 개수 비율

오분류율 : 1-정확도

오분류율을 최소로 하는 것은 정확도를 최대로 하는 것임

- 종합정리

-k의 선택

k는 어떻게 정할지는 여러분의 결정할 모수임. 추측을 잘 할 수 도 있도록 데이터에 대해 잘 이해하고 있어야 하며 여러 가지 다른 k값으로 시도해보고 평가척도의 값이 어떻게 달라지는지 검토해봄. 즉 k값을 바꾸어가면서 k-NN을 여러 번 수행하고 매번 평가척도를 점검

- 모형화 과정에서 가정은 무엇인가?

k-NN 알고리즘은 비모수적 접근 방법의 한 예

k-NN의 가정

1) 데이터 포인트 간의 거리 개념을 사용할 수 있는 특징공간 정의

2) 훈련데이터세트는 두 개 이상의 계급으로 분류하거나 분류명을 붙임

3) 이웃의 수 k를 선택

4) 관특된 특징과 분류명은 어떤 식으로든 연관성이 있다고 가정. 아닌 경우도 있겠지만 어쨌든 알고리즘이 얼마나 분류를 잘하는지는 평가척도를 가지고 판단. 특징을 몇 가지 추가함에 따라 평가 척도가 어떻게 달라지는지도 검토 가능. 그리고 실제로 활용되고 있는 특징은 어느 것인가, k값은 얼마가 좋은가 등을 조절할 것

3.2.3 k-평균값

비지도 학습. 알고리즘의 목표는 데이터를 군집화하면서 정답을 만들어 간다는 것. (중략) 목표는 사용자들을 세분하는 것. 충화, 집단, 군집 등 다양한 이름으로 불림. 모든 사용자의 유사점을 찾고 그들을 묶어주는 작업

- 2차원 버전

k-평균법 알고리즘은 d차원으ㅔ서의 군집화를 수행하는데, 여기서 d는 각 데이터 포인트의 특징의 개수임

1) 우선 d차원 공간에서 k개의 중심법(군집의 중심이 될 점)을 임의로 선택함. 데이터에 가까운 점으로 하되 서로 떨어져 있는 것으로 함

2) 각 데이터 포인트를 가장 가까운 중심점에 할당함

3) 중심점에 할당된 데이터 포인트(이 예에서는 사용자에 해당)들의 평균위치로 중심점을 이동

4) 할당작업에 변화가 없거나 거의 없을 때까지 앞선 두 단계를 반복함

알고리즘이 종료된 후 각 집단을 표현하는 자연스러운 방법이 있다면 이를 해석하는 것은 각자 알아서 할 일. 자연스러운 집단을 얻기까지 수차례 k를 조절할 필요가 있을 것


k-평균법의 문제

1) k값은 1''k'' n이고 n은 데이터 포인트의 전체 개수라는 상한값이 있기는 하지만 k값의 선택은 과학적이기보다는 분석자의 감에 많이 의지함

2) 수렴의 문제 : 예를 들어 알고리즘이 루프에 빠져서 두 개의 가능해 사이를 왔다 갔다 할 경우. 즉 단일해가 존재하지 않는 경우처럼 해가 존재하지 않을 수 있음

3) 해석의 문제 : 어떤 경우에는 정답이 전혀 도움되지 않을 수도 있음. 이게 제일 큰 문제임

k-평균법++는 초기 시드를 최적화함으로써 k-평균법에서의 수렴 문제를 피할 수 있게 함

3.3 연습문제: 기본적인 기계학습 알고리즘들


CHAPTER4. 스팸필터, 나이브베이즈, 경합

4.1 사고실험: 예제로 배우기

4.1.1 왜 선형 회귀는 스팸을 걸러내는 장치가 되지 못할까?

첫번째로 고려할 점은 목표는 이진(스팸이 아니면 0, 스팸이면 1)이라는 것이다. 선형ㅇ회귀로는 0 또는 1을 얻을 수 없다.

이렇게 목표를 정하고 시도해보아도 관측값에 비해 변수가 너무나 많기 때문에 잘 안 된다

4.1.2 k-근접이웃은 어떤가?

문제의 차원이 너무 크다. 진짜 근본적인 문제는 가장 가까운 이웃조차 실제로는 매우 멀다는 것이다(차원의 저주)

4.2 나이브베이즈

4.2.1 베이즈 법칙

4.2.2 개별 단어에 대한 스팸 필터

4.2.3 단어들을 결합한 스팸 필터: 나이브베이즈

어떤 이메일이 스팸이라는 것을 알 때 (또는 스팸이 아니라는 것을 알 때) 어떤 주어진 단어 벡터가 나타날 확률

단어들 중에는 틀림없이 함께 나타나는 경향이 있는 것들이 있으므로 각 단어가 서로 독립적이라고 할 수 없는 경우도 있지만 여기서는 이를 무시하기 때문에 '나이브' 라는 단어를 씀

곱 형태로 표현된 확률은 다음과 같이 양변에 로그를 취해서 합의 꼴로 바꾸는 것이 일반적

선형 회귀에서는 아주 큰 행렬의 역행렬을 구해서 계수들을 구하지만 나이브베이즈에서는 알고리즘으로 가중치들을 계산한다

즉, 수많은 이메일 중에서 스팸메일과 비스팸메일 안에 있는 단어들을 센다. 훈련데이터세트가 더 많아지면 단어개수를 더 세서 추가로 더해주기만 하면 필터의 성능을 높일 수 있음

4.3 좀 더 멋있게: 라플라스 평활

라플라스 평활 : 직관적인 추정 대신에 보다 정밀한 다음 식으로 대체하는 아이디어

4.4 나이브베이즈와 k-NN의 비교

평활을 위해 이 두 하이퍼모수의 값을 정하는 것은 데이터 과학자가 할 몫이며 미세조정을 하는 손잡이 역할을 함

나이브 베이즈는 선형 분류기지만 k-NN은 그렇지 않음

4.5 코드 예시

4.6 웹스크래핑: API와 기타 도구들

데이터과학자는 항상 어떤 데이터가 주어지면서 그것을 가지고 뭔가 알아내 달라는 요청만 받는 것은 아니다. 필요한 데이터를 어떻게 찾아낼 것인가 무엇이 문제인가, 해답은 무엇인가, 어떤 연구를 해야 하는가 등등을 밝혀야 하는 경우도 자주 있다. API를 활용하라. API는 데이터를 쉽고 표준 형태로 내려받을 수 있도록 만든 것. 이 경로를 통해 들어가면 종종 제이슨(JSON) 등과 같은 이상한 형식의 데이터를 받게 되는데, 이러한 표준화에는 표준화가 없다. 이를 해결하는 한 방법은 야후!의 YQL언어를 사용하는 것인데 SQL과 유사한 질의를 작성하면 다음과 같은 여러 사이트에서 많은 API와 상호작용할 수 있음

출력물은 표준적이며 파이썬으로 파싱만 한 번 하면 됨

API가 전혀 없는 데이터가 필요하다면 파이어버그 확장 같은 것을 사용할 수 있다. 어떠한 웹페이지도 '요소들을 검사'할 수 있으며 파이어버그를 이용하면 HTML 내부에 있는 필드를 꺼내올 수 있음

4.7 제이크의 연습문제: 기사분류를 위한 나이브베이즈

나이브베이즈를 응용하여 다중 클래스의 텍스틑를 분류하는 것

단어 존재 여부를 파악하는 간단한 베르누이 모형을 사용하여 뉴욕타임즈지의 어떤 기사의 주어진 텍스트로부터 그 기사가 어느 섹션에 속한 것인지 예측하는 분류기를 만들 것

이들 기사를 가지고 간단한 베르누이 나이브베이즈 모형을 훈현시키는 코드를 실행

코드를 만들 때는 각 기사의 제목과 내용을 읽어들이고 불필요한 문자(예를 들면 문장부호)는 제거하며 기사내용을 단어들로 쪼개고 제외단어 파일에 들어있는 제외단어들은 걸러내야 한다

4.7.1 뉴욕타임즈  API를 사용하기 위한 R코드 예


CHAPTER 5 로지스틱 회귀

5.1 사고 실험

데이터 과학자라면 약간의 운영상의 제약조건 하에서 그 비전을 수학적 모형으로 전환할 수 있어야 한다. 문제를 잘 정의해서 설명하고, 척도에 대해 논하며, 또한 최적화할 수 있어야 한다. 원래의 질문에 대해 실제로 대답을 했는지도 확신할 수 있어야 한다

인간의 문제를 데이터과학의 수학적 내용으로 번역하거나 그 반대로 되돌린다. 이 번역에는 항상 여러 가지 방법이 있다,, 여러 가지 모형, 여러 가지 관련 척도, 그리고 아마 여러 가지 최적화 방법 등. 그래서 데이터과학에서의 사이언스는 원시 데이터, 제약 조건,, 그리고 문제에 대한 설명 등이 주어졌을 때 미로 속을 찾아다니면서 최적의 선택을 찾아내는 방법이다. 모든 설계상의 선택은 가설 형태로 표현하며 이 가설의 타당성을 밝히거나 혹은 가설을 부정하기 위해 엄격한 검증과 실험을 수행한다.

기존에 사용된 것 중 가장 좋은 방법을 고수한다

모형에 대해 새로운 아이디어가 떠오르면 가장 좋은 두 개의 모형을 서로 비교하는 실험을 준비한다

(과적합이 아닌 한) 정리하고 반복한다

5.2 분류기

분류한 데이터 포인트를 유한 개의 분류명집합 또는 주어진 분류명이나 분류명에 속할 확률값에 사상하는 것

로지스틱 회귀, 의사결정나무, 랜덤 포리스트, 지지벡터기계와 신경망 등등이 있음

데이터와 현실의 분류문제, 그리고 제약조건이 주어졌을 때 다음을 결정해야 함

1) 어떤 분류기를 사용할 것인가

2) 어떤 최적화 방법을 택할 것인가

3) 어떤 손실함수를 최소화할 것인가

4) 데이터에서 어떤 특징들을 추출할 것인가

5) 어떤 척도를 사용할 것인가

5.2.1 실행시간

첫때는 모형을 업데이트 하는데 시간이 얼마나 걸리는가 하는 것, 둘째는 실데로 의사결정을 하기 위해 모형을 사용하는 데 시간이 얼마나 걸리는가 하는 것. 두번째 문제가 좀 더 중요하며 이를 실행시간이라 함

5.2.2 데이터과학자

사실 어떤 알고리즘에 대해 정통한 지식이 필요한 것은 그 알고리즘을 가장 적절하게 사용하기 위해서임

때로는 알고리즘이 데이터에 적절하도록 부분적으로 수정해야 할 경우도 있음. 알고리즘에ㅔ 완전히 익숙하지 않은 사람들이 흔히 저지르는 실수는 부분수정을 한다고 하면서 과적합을 하는 것

5.2.3 해석가능성

비즈니스를 위해 모형을 이해할 수 있어야 함

5.2.4 확장성

1) 학습시간 : 모형을 훈련시키는 데 시간이 얼마나 걸리나?

2) 평가시간 : 일단 모형이 완성되고 나서 새로운 사용자를 평가하는 데 시간이 얼마나 걸리나?

3) 모형의 저장공간 : 모형은 얼마나 많은 메모리를 사용하는가?


단순한 모형일수록 이해하기는 쉽지만 성능이 그만큼 좋지 못하다

어떤 알고리즘이 가장 좋은가는 문제에 따라 다르다

제약 조건에 따라서도 달라진다


5,3 M6D 로지스틱 회귀 사례 연구

1) 특징공학 : 어떤 특징을 사용할 것인지와 어떻게 사용할 것인지 밝히는 과제

2) 사용자수준에서의 구매전환 혜측 : 언제 누가 클릭할 것인지 예쌍하는 과제

3) 입찰 : 사용자에게 주어진 광고가 얼마나 가치가 있는 것인지 보여 주는 과제

5.3.1 클릭 모형

분류문제로 만들기 위해 예측하고자 하는 클래스를 정의할 필요가 있음

로지스틱 회귀에서의 출력물은 클릭을 할 확률

5.3.2 수학적 배경

로지스틱 회귀의 장점은 결과값이 0과 1 사이의 값

이것을 바로 확률값이라고 해석. 0과 1 사이로 한정되는 함수의 예로서 역로짓함수를 생각


(이후 챕터들은 생략)


CHAPER 16 차세대 데이터과학자, 교만, 그리고 윤리

16.1 지금까지 무엇을 학습했는가?

16.2 다시 한 번, 데이터 과학이란 무엇인가?

탐색적 데이터분석

탐색적 데이터분석과 보고를 위한 시각화

대시보드와 척도의 관리

비즈니스에 대한 영감의 발견

데이터 주도 의사결정

데이터공학/빅데이터(맵 리듀스, 하둡, 하이브, 피그)

데이터 수집

데이터 파이프라인 구축(로그 - 맵리듀스 - 데이터세트 - 다른 데이터와의 결합 - 맵리듀스 - 스크래프데이터 - 결합)

(존재하는 상품 용법을 설명하는 대신) 상품의 개발

해킹

특허 출원

수사 업무

미래 행동이나 성과 예측

프로그래밍(R, 파이썬, C, 자바 등)

조건 확률

최적화

알고리즘, 통계적 모형, 기계학습

스토리를 말하고 해석하기

좋은 질문하기

조사

연구

데이터로부터 추론하기

데이터 상품 개발

대규모 데이터 프로세싱, 변형, 분석 방법 도출

은전성 검사

데이터 직관

영역 전문가와의 협력(혹은 영역 전문가 되기)

실험의 설계 및 분석

데이터에서 상관을 발견하고 인과성 확립하기

16.3 차세대 데이터과학자란?

세상을 좀 더 좋게 만드는 문제 해결자, 그리고 질문제기자가 되기를 권하고 싶다

16.3.1 문제 해결자 되기

16.3.2 소프트한 기술의 배양

어떤 것에 통달한 사람들은 자신의 능력을 과소평가함. 실제적인 역량이 자기확신을 약화시키는지도 모른다

16.3.3 질문 제기자 되기

1) 중요한 단계들의 표준적인 절차에 익숙해지기

꼭 이런 방식이 되어야만 하는가? 어떻게 이것을 측정할 수 있을까? 적절한 알고리즘은 무엇이고 왜 그런가? 어떻게 결과를 평가할 것인가? 나는 정말로 이것을 수행할 능력을 갖고 있는가? 그렇지 않다면 그것을 어떻게 배울 수 있을까 누구와 협업할 것인가? 누구에게 물어볼 것인가? 그것이 현실 세계에 어떤 영향을 미칠까?

2) 다른 사람들에게 질문하는 데 익숙해져야 한다. 어떤 문제에 접근할 때 혹은 어떤 사람에게 의문을 제기할 대 여러분이 스마트하다고 가정하고 시작하라

16.4 윤리적인 데이터과학자 되기

16.5 경력에 관한 조언

1) 여러분은 무엇을 위해 최적화하고 있는가?

여러분의 목표는 무엇인가? 여러분은 무엇을 성취하려고 하는가? 여러분은 유명해지고 존경을 받는 데 관심이 있는가? 사회적으로 인정받고 싶은가?

2) 여러분은 어떤 제약 아래 놓여 있느가?




브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari