본문 바로가기
Growth

데이터 사이언티스트 실전 노트

by Diligejy 2022. 7. 23.

 

p.vi

"Everything that has a beginning has an end, Neo"

 

- 매트릭스에서 오라클이 네오에게 한 말

 

p.9

물론 회사에서 사람을 고용할 때 경영, 통계 전공자를 우대할 수 있다. 하지만, 데이터 분석 능력이 비슷한 두 사람이 있다고 가정했을 때, 한 사람은 산업에 대한 이해와 관심이 높고 다른 사람은 그렇지 않다면 당연히 전자의 사람을 더 원할 것이다. 같은 데이터를 보더라도 산업의 흐름을 이해하는 사람은 어떤 분석이 필요한지에 대한 방향성을 알기 때문이다. 특히 사회와 산업의 변화가 빠른 요즘 같은 시대에 전공자/비전공자의 구분만이 취업 여부를 결정짓는 잣대가 될 수는 없다. 그러므로 '비전공자도 취업할 수 있을까요?'와 같은 질문보다는 내 관심 산업 분야는 무엇이고 데이터 분석력을 어떻게 키울 것인가?를 더 고민해야 한다.

 

p.17

이제는 각 부서가 데이터를 따로 관리하는 것이 아니라, 조직 내의 모든 종류의 데이터를 데이터 레이크(Data Lake)라는 대규모 데이터 저장이 가능한 곳에 보관하는 추세로 변하고 있다. 만약 조직이 큰 경우, 혹은 데이터 사이언티스트가 관리하는 예측 모델이 여러 개인 경우 데이터 사이언티스트가 관리하는 데이터만 따로 모아 데이터 레이크를 만들기도 한다.

 

p.22

매주 새롭게 얻은 데이터로 기존 모델을 사용해 예측하고, 매달 이제까지 모인 데이터를 취합해 예측 모델을 갱신해야 하므로 상황별로 실행해야 할 코드가 달라질 것이다. 그래서 이런 경우에는 통합 서비스 중 하나인 AWS Step Functions을 사용할 수 있다. 이 서비스는 AWS 람다 및 AWS 여러 서비스를 차례로 배열해 자동으로 실행하고 제한 시간 내 응답이 없으면 실패한 작업을 다시 시도하기도 한다. AWS Step Functions 안에 데이터 처리 단계를 거쳐 예측 모델을 갱신해야 할지, 기존 모델을 사용해 예상 매출을 계산할지 상황별로 실행해야 할 워크플로를 작성해야 한다.

 

p.27

직렬화란 파이썬의 객체를 일련의 바이트 스트림으로 변환하는 것을 말한다. 바이트들이 다시 파이썬 객체로 메모리상에 복원하는 것을 역직렬화(Deserialization)라 한다. 이 작업은 피클(Pickle), JSON 등 포맷 변환으로 이뤄진다. 페더(Feather) 역시 직렬화된 데이터 포맷이지만 아파치 애로우(Apache Arrow; In-memory 컬럼 기반 데이터 포맷) 테이블을 저장하기 위한 경량 형식이며, 프로그래밍 언어 파이썬과 R에서 모두 사용 가능하다.

 

p.45~46

 

체크리스트로 보는 나는 무엇을 키워야 할까

항목 세부 항목 체크
지식
기술
데이터 탐색을 위한 기본 통계 지식과 프로그래밍 언어를 통한 구현 능력  
표본 추출에 대한 개념 및 표본 추출 방법  
각종 분포 이해 (각 분포의 모수는 무엇인지, 어떤 상황과 연결할 수 있는지 등)  
부트스트랩 개념 및 활용 방법  
불확실성 개념  
신뢰 구간, 예측 구간  
통계 실험   
가설검정, A/B 테스팅 - 개념, 방법, 활용 예시  
차원 축소 종류 및 개념 - 왜 중요하고 어떤 방법이 있는가  
분산 분석  
베이지안 통계  
시계열  
회귀 모델  
분류 모델  
지도/비지도 학습  
머신러닝 기본 알고리즘  
예측 모델 성능 평가 종류  
경험 지원하는 회사의 산업 데이터를 얼마나 알고 있는가 & 도움될 만한 데이터가 무엇이 있는가  
데이터 분석 경험 - 어떤 방법을 통해 어떤 인사이트를 얻었는가 & 그래프를 통해 분석 결과를 나타내 본 적이 있는가  
용량이 큰 데이터를 다뤄본 적이 있는가  
불균형 데이터를 다뤄본 적이 있는가  
예측 모델을 만든 후 모델 성능을 계산한 경험이 있는가 & 모델 성능을 개선할 방법을 고민해본 적이 있는가  
모델링 중 피처 선택에 관한 경험을 한 적이 있는가  
최근 읽어 보았던 데이터 과학에 관련된 논문이 있는가  
문제 해결 경험이 있는가 - 문제는 무엇이고 어떤 방법을 시도해서 해결했는가  
분석이나 모델링 과정 중 실수했던 경험이 있는가 - 무엇을 실수했고 어떻게 발견했는가  
개인 프로젝트 경험이 있는가 - 주제 선정의 이유, 데이터 출처, 문제점/힘들었던 점 유무, 결괏값 등  

 

p.49

상황 2-1

웹사이트 신규 가입자에 대한 데이터가 매일 데이터베이스에 저장된다. 그중에서 주요 지역별 신규 가입자 수와 이들이 가입한 첫날 자사의 주력 제품인 A, B, C를 구매한 인원 수만 다시 데이터베이스에 저장하고, 데이터 시각화 툴을 사용해 그 결괏값을 매일 업데이트하고자 한다.

이 업무를 하기 위해, 데이터베이스에서 불러오는 인풋 데이터는 어떤 형식이고, 계산 과정을 거쳐 시각화 툴을 사용하기 위한 아웃풋 데이터는 어떤 형식이 좋을까?

 

p.59

관계형 데이터베이스에 데이터를 저장하는 상황은, 미리 정해진 스키마에 맞는 데이터만 저장될 때 유용하지만, 업무방향이 바뀌면 그때마다 스키마를 다시 설정해야 하는 번거로움이 발생한다. 뿐만 아니라 데이터베이스에서 필요한 데이터를 추출할 경우, 데이터 크기가 커질수록 작업 시간도 오래 걸린다는 단점이 있다.

 

그렇다면 [신규 가입자 현황]을 반정형 데이터로 저장한다면 어떨까? 데이터 테이블 형식이 아닌 키와 밸류로 아웃풋을 저장하면 4, 5번처럼 제품이 중간이 추가되거나 빠지더라도 전혀 문제되지 않는다. 데이터를 저장할 때마다, 내가 원하는 키와 밸류를 저장할 수 있기 때문이다. 

 

<2020년 3월 31일 아웃풋 데이터>
{
  날짜 : "2020-03-31",
  신규가입자_수 : 170,
  서울 : 81,
  경기 : 67,
  부산 : 12,
  제주 : 8,
  강원 : 2,
  구매자_수 : 10,
  제품_A : 8,
  제품_B : 4,
  제품_C : 10,
  제품_K : 12
}

 

<2020년 4월 1일 아웃풋 데이터>
{
  날짜: "2020-04-01",
  신규가입자_수 : 180,
  서울 : 75,
  경기 : 70,
  부산 : 20,
  제주 : 2,
  충남 : 12,
  세종 : 1,
  구매자_수 : 10,
  제품_A : 10,
  제품_B : 11,
  제품_C : 8,
  제품_J : 20
}

 

p.61

데이터를 처음 받으면 무엇부터 확인할까? 물론 사람마다 다를 수 있지만, 필자는 보통 데이터 크기를 먼저 확인한다. 데이터 크기를 확인하는 것은 단순히 몇 개의 행과 열로 된 데이터인지 확인하는 것이 아니다. 다음과 같은 상황을 생각하며 데이터 크기를 늘 확인한다.

 

데이터베이스에서 데이터를 불러오거나 저장할 때 혹은 클라이언트로부터 데이터를 받을 때 

 

프로그래밍 언어로 문제없이 데이터를 잘 읽었다 할지라도 이 데이터가 내가 읽어야 할 데이터인지 확인하는 것이 중요하다. 또한, 사용 목적에 맞게 잘 가공된 데이터를 데이터베이스에 저장하는 경우도 마찬가지다. 스크립트가 잘 작동한다 하더라도 내가 인지하지 못한 부분에서 오류가 생길 수 있으므로 데이터 크기를 늘 기억해서 모든 데이터가 잘 저장됐는지 확인하는 자세가 필요하다. 또한, 데이터베이스에는 하나의 데이터만 있는 것이 아니라 데이터 파일들이 많이 있기 때문에 팀원 혹은 클라이언트 간의 커뮤니케이션 과정에서 잘못된 파일을 주고받는 경우가 생길 수 있다. 그래서 내가 파일을 받거나 보낼 때 그 데이터 파일이 맞는지 서로 확인할 수 있도록 데이터 크기를 같이 명시해주는 것이 좋다.

 

p.71

행마다 값을 확인해야 하므로 for문을 통해 조건에 대한 if문을 사용하는 대신, 빠른 계산 속도의 넘파이 함수, np.where()를 이용하면 된다. np.where() 함수는 배열의 요소를 검색해 그 위치 값인 인덱스를 반환한다. 이렇게 배열 요소를 검색할 때 조건문을 사용할 수 있는데, 조건을 만족하면 True를 만족하지 않으면 False를 반환한다. True(참)일 때, 혹은 False(거짓)일 때 불리언 대신 다른 값을 지정할 수 있으며, 다른 예시는 .loc(), .apply(), np.where() 속도 비교를 확인해보자.

 

p.78

np.nan은 실수(Float)라는 클래스(Class)에 속하고, None은 NoneType 클래스에 속한다.

 

p.88

하나의 프로그래밍 언어에서 업무를 시작하고 끝을 맺는 경우, 일관성 있게 결측치를 표현하면 될 것이다. 하지만, 데이터를 데이터베이스에 저장해야 할 때는 상황이 다르다. Postgres, MySQL과 같은 데이터베이스는 np.nan을 인식하지 못하므로 np.nan 대신 None값으로 결측치를 바꿔줘야 하기 때문이다.

 

p.88

.replace() 구문에서는 특정한 값이 지정되지 않은 경우 이전 행의 값으로 채워지는데 None이 어떤 특정한 값이 아니기 때문에 바뀌지 않은 결과가 나온 것이다.

 

p.103~104

외부로부터 데이터를 주기적으로 받아 데이터베이스에 저장해야 할 경우 어떤 과정을 거쳐서 최소한의 업무를 할 수 있을까?

 

최초 업무와 차후 과정 이렇게 두 가지로 나눌 수 있다.

 

먼저, 외부 데이터를 처음 받았다면 데이터를 이해하는 과정이 필요하다. 이 데이터가 어떤 데이터이고, 어떻게 활용할 수 있는지 등을 파악한 후 가공(혹은 클리닝) 과정을 거친다. 그 후, 내부 데이터베이스에 이 데이터를 저장하기 위해서 스키마를 생성해야 하는데, 내부 데이터와 관계를 나타낼 수 있는 식별키를 만들도록 하고, 그게 불가능하다면 식별키의 조건에 맞는 열(키)을 찾도록 한다. 그리고 각 열이 가질 수 있는 값이 유일(Unique)한지, 결측치(Nullable)가 있어도 되는지, 어떤 데이터 타입을 가져야 하는지에 대한 스키마를 설정한다. 이때 주의해야 할 점은, 추후에 데이터를 받는 경우 각 열에 예상 가능한 값을 미리 파악해야 한다는 것이다. 이렇게 스키마를 설정한 후 내부 데이터베이스에 가공된 외부 데이터를 저장한다.

 

만약 이 작업을 외부 데이터를 받을 때마다 해야 한다면 굉장히 비효율적이다. 그렇기 때문에 클라우드 서비스를 이용하여, 외부 데이터를 받았을 때 자동으로 데이터를 가공해서 미리 지정한 스키마에 따라 가공된 외부 데이터가 내부 데이터베이스로 저장되게 한다.

 

p.114

데이터를 결합할 때, 이 세가지를 유의해야 한다.

 

- 데이터를 충분히 정리했는지

- 키에서 중복된 값이 있는지, 있다면 그 값이 꼭 있어야 하는지

- 데이터 결합 후, 내가 생각했던 데이터 크기가 맞는지

 

p.143

데이터 처리에도 여러 가지가 있지만 그중 클리닝(Cleaning) 부분에서 결측치를 발견했다. 이 경우 A와 B라는 데이터 사이언티스트의 업무 자세를 보자.

 

데이터 사이언티스트 A

- 피처 엔지니어링과 모델링 단계에서 결측치가 있어도 머신러닝 알고리즘을 사용하는 데 큰 문제가 없으므로 결측치를 그대로 두기로 결정했다.

 

데이터 사이언티스트 B

- 왜 결측치가 있는지 그 이유부터 살펴봤다. 이 피처에만 결측치가 있는지, 이 피처와 연관된 다른 피처 역시 결측치가 있는지, 아니면 다른 피처와 비교해 특정 그룹에서만 결측치가 나타나는지 그 현상을 살펴보았다.

- 결측치가 무작위로 발견되어서 데이터 자체엔 문제가 없음을 파악한 뒤, 결측치를 다룰 방법과 그 방법을 사용하는 이유를 살펴보았다. 식별키를 이용해 내부 데이터와 합쳐 이 결측치를 채울 수 있는지도 시도해 보았다. 이 피처의 평균값과 중앙값도 살펴보고 분산도 계산해서 결측치가 가질 수 있는 예상 값도 생각해 보았다. 결측치가 많지 않고, 결측치 자체로도 충분한 정보가 될 수 있으므로 결측치가 있는 행을 지우지 않고 다음 단계로 넘어가기로 했다. 그리고 이 상황을 간단히 노트에 정리했다.

 

p.147

전공책에 수식이 많은데 전체 내용을 이해하는 것도 중요하지만 수식 자체를 정확히 이해하는 것이 무엇보다 중요하다. 게다가 수식으로 적혀 있는 것에 감사하게 생각해야 한다. 통계라는 학문이 정립되는 과정에서, 학자들이 모집단/표본이란 개념을 이해하고 이론을 만들고 증명하는 과정에서, 매번 긴 설명 없이 간단하게 설명할 수 있도록 수식을 만든 것이 얼마나 대단한 일인가? 우리는 그저 이 수식을 이해하고 수식이 갖는 장점을 사용하기만 하면 된다.

 

p.149

통계학에서 확률(probability)을 어떻게 정의하고 사용하느냐에 따라 크게 빈도주의 접근방법(Frequentist Philosophy)과 베이지안 접근방법(Bayesian Philosophy)으로 나뉜다. 빈도론에서 바라본 확률은 표본을 구하는 과정에서 전체 일어날 수 있는 사건 중 특정 사건이 일어날 비율로 이해한 반면, 베이지안은 확률을 지식의 정도 혹은 불확실성의 정도로 바라보며, 실험을 통해 이 확률을 보정(Update)하는 과정을 거친다. Modern Epidemiology (Kenneth J. Rothman 저) 책에 따르면, 두 흐름은 모수를 구하는 과정이 다를 뿐, 그 시작점은 모수가 고정된 값을 가질 수 있다는 관점에서 출발한다고 했다. 

 

p.152

모의실험이나 모집단 전체를 조사해 얻은 전수조사 데이터가 아니라면, 일상 업무에서 다루는 데이터는 표본을 말한다. 통계치를 계산하거나 혹은 모델을 세우는 업무에 집중하면 가장 중요한 가정을 잊곤 한다. 바로 표본에서 중요한 특징인 "표본은 모집단을 잘 반영해야 한다"라는 점이다. 그런데 주어진 데이터가 모집단을 잘 반영하지 않은 데이터라면, 이 데이터로 모델을 만든다 할지라도 모델 성능은 떨어질 수밖에 없다. 

 

물론 가지고 있는 데이터가 모집단을 제대로 반영했는지 확인하는 작업은 쉽지 않다. 데이터가 어떻게 취합되었고, 데이터 가공 과정에 문제는 없는지, 가지고 있는 데이터와 다른 데이터(공공 데이터, 다른 출처의 데이터 등)와 통계치를 비교해보는 등 여러 방법을 통해 표본이 타당한지 생각해보는 습관을 갖자.

 

p.154

물론 불확실성을 정확하게 수치화할 수 없더라도, 작업마다 어떤 종류의 불확실성이 있는지 알고 있는 것은 의미 있다. 간단한 예를 들어 보자. 내가 얻은 데이터, 믿을 만한 데이터일까? 과연 데이터를 얼마나 신뢰할 수 있을까? 단순히 "내가 받은 데이터니까 맞는 데이터겠지"라고 생각하고 업무를 진행하는 것과 "이 데이터를 어느 정도 신뢰할 수 있을까?"라고 생각하며 업무를 진행하는 것은 다르다. 우리가 얻은 데이터는 측정 과정에서 문제가 있을 수도 있고, 제대로 측정되었다 하더라도 진실의 값이 아닐 수 있으며, 실제와 가까운 측정값을 얻었더라도 데이터가 잘못 입력되었을 수도 있다. 데이터를 온전하게 믿어서는 안 되며, 데이터 크기가 커질수록, 미가공된 데이터일수록 미처 발견하지 못한 오류가 있을 수 있다는 것을 기억해야 한다. 따라서 여러 각도에서 데이터의 통계치를 구하거나 시각화함으로써 데이터의 오류를 발견하는 안목을 길러야 한다.

 

p.156~157

필자가 안타깝게도 이벤트에 당첨될 확률을 알지 못한다. 전체 생산된 커피 컵의 수와 당첨이 찍힌 커피 컵의 수를 알아야 이 확률을 계산할 수 있는데, 필자가 얻은 것은 고작 10개의 데이터뿐이다. 따라서 주어진 데이터로 이벤트에 당첨될 확률부터 추정해야, 이 추정된 확률을 가지고 첫 번째 커피를 구매했을 때 당첨이 될 확률 등을 계산할 수 있다. 이처럼 가능도는 주어진 데이터(관측 값)를 바탕으로, 해당 사건에서 모수(당첨 컵 확률)을 추정하거나, 어떤 경우의 수(커피 두 잔째 구매했을 때 당첨될 확률)를 얻을 가능성을 찾는 것을 의미한다.

 

두 번째 커피를 구매했을 때 당첨될 가능도를 계산하려면, 생산된 당첨 컵의 확률부터 알아야 한다. 왜냐하면 앞서 언급했듯이 당첨 확률이 높고 낮음에 따라 필자가 얻을 답변(관측 값) 역시 달라지는 확률변수이기 때문이다. 따라서 필자는 관측한 10개 데이터를 통해 이런 값을 얻을 만한 가장 높은 가능성이 있는 당첨 확률을 추정해야 한다. 간단히 말해 최대 가능도 추정은 관측된 데이터에서 모수(당첨 확률)를 추정하는 것을 의미한다. 따라서 관측한 데이터가 있어야 한다.

 

필자가 10개 데이터를 얻었다는 의미는 특정 확률로 발생한 사건 결과(이벤트 당첨 확률을 바탕으로 커피를 구매해서 당첨이 되는 사건)를 10개 모았다는 뜻이다. 전체 생산된 컵을 찾아 당첨된 컵과 아닌 컵을 구분해 당첨 확률을 계산할 수 있지만 불가능하기 때문에 관측한 데이터를 바탕으로 당첨 확률을 추정한다. 다시 말해 통계란 실제(모수)를 추정하기 위해 관측한 데이터를 이해하는 과정이라 볼 수 있다.

 

p.160

설명 통계 머신러닝
데이터 샘플(Sample)
관측치(Observation)
행(Row) 또는 열(Column)
인스턴스(Instance)
예측 대상, 변수 Y 종속변수(Dependent Variable)
반응변수(Response Variable)
라벨(Label)
타깃(Target)
변수 Y를 예측하기 위해 사용되는 다른 변수 X 독립변수(Independent Variable)
설명변수(Explanatory Variable)
예측변수(Predictor Variable)
피처/특징(Feature)
속성(Attribute)
입력(Input)
모델이 데이터를 학습하는 과정 모형 적합(Model fitting) 학습(Learning)
학습 결과물 혹은 식 매개변수(Parameters) 가중치(Weights, 선형 모델)
정답이 있는 데이터를 활용해서 데이터 학습 회귀(Regression)
분류(Classification)
지도학습(Supervised Learning)
정답이 없는 데이터를 비슷한 특징끼리 군집화 군집화(Clustering)
밀도추정(Density estimation)
비지도학습

 

p.161~162

먼저 'Parametric(모수적/모수의)'란 단어를 보자. 모집단이 특정 평균과 분산을 가진 정규분포를 가지고 있다고 가정한 후 모집단을 잘 대표할 표본을 추출했다. 그렇다면 이 표본을 가지고 통계치를 계산하면 모집단의 모수 평균, 분산을 추정할 수 있다. 다른 예로, 만약 모집단이 포아송(Poisson) 분포를 가진다고 가정해 보자. 여기서 포아송 분포는 특정 시간 혹은 구간에서 발생하는 사건의 모수는 평균 값인 람다(Lambda)인데, 관측한 데이터에서 람다만 추정하면 모집단을 이해할 수 있다. 따라서 우리가 데이터를 얻었을 때 어떤 분포를 가진 모집단에서 온 것인지 가정하면 거기에 맞는 모수의 정의와 개수를 알 수 있다는 장점이 있다. 따라서 관측한 데이터에서 우리가 필요한 모수만 추정하면 된다. 이처럼 통계학에서 모수적이란 의미는 여러 상황을 고려해야 한다. 모집단의 분포가 무엇인지, 표본을 구할 때 모집단을 대표할 만한 표본인지, 그래서 통계치가 모수를 반영하는지, 모델을 세웠을 때 이 추정치로 모수를 잘 추론할 수 있는지 모든 과정이 연관되어 있다.

 

우리가 얻은 데이터가 어떤 분포에서 왔는지 알 수 없는 경우도 있따. 그렇다고 모수가 없다는 것이 아니라 모수는 있지만, 모수가 몇 개인지 그리고 모수마다 어떤 의미를 갖는지 정확히 알 수 없다는 뜻이다. 따라서 모집단이 어떤 분포를 따르는지 가정하기 힘들다. 우리는 결국 표본, 즉 데이터만 관측할 수 있는 상황인데 데이터 수에 따라 때론 모수 개수가 많아지기도 한다.

 

p.163

커널은 저차원에서 선형 분리가 안되는 데이터를 고차원으로 연결시켜 주는 함수를 말하며 커널 함수를 통해 확률 밀도를 추정하거나, 커널 회귀식을 세우는 데 사용된다.

 

p.164

  모수적 모델 비모수적 모델
모수 모수 개수가 정해져 있음
모수마다 의미가 정확함
모수 개수가 정해져 있지 않음
데이터에 따라 모수가 늘어날 수도 있음
가정 가정 충족 필요 최소한의 가정 혹은 가정이 필요 없음
종류 - 회귀 모델 (Regression)
- 로지스틱 모델(Logistic Regression)
- 선형판별분석(Linear Discriminant Analysis)
- 나이브 베이즈(Naive Bayes)
- 커널밀도추정(Kernel Density Estimation)
- K-최근접이웃(K-Nearest Neighbors)
- 의사결정나무(Decision Tress)
- 랜덤포레스트(Random Forest)
- 서포트 벡터 머신(Support Vector Machine)

예측 모델을 만드는 작업에서 흔히 말하는 통계 모델, 머신러닝 모델 이렇게 구분하는 것보다 모수적 모델을 사용할지 아니면 비모수적 모델을 사용할지 구분해서 생각해보는 습관이 중요하다. 그래야 가정 조건을 만족했는지, 해당 모델을 사용했을 때 어떤 장단점이 있는지 알 수 있기 때문이다.

 

p.165

 

[클라이언트 A]

클라이언트 A는 100 기가바이트(GB)가 넘는 데이터를 주면서 특정 값을 예측하는 통계 모델을 만들어달라고 요청했다. 여러 변수 중 변수 P와 Q를 꼭 포함하고, 그 외 예측에 중요한 변수를 걸러낸 후, 이 변수가 예측 값에 어떤 영향을 미치는지 알고 싶어 한다. 

- 통계 모델이 모수적 모델인지 비모수적 모델인지 확인

- 모수적 모델을 사용할 경우, 가정 조건 확인 필요함

- 필요한 변수를 사용함으로써 어떤 변수가 중요한지 설명 가능하지만, 큰 용량의 데이터에서 적합하지 않을 수 있음

- 비모수적 모델을 사용할 경우, 예측 모델 해석력이 떨어짐.

 

[클라이언트 B]

클라이언트 B는 용량이 작은 데이터를 가지고 있지만, 여러 예측 모델 알고리즘 중 정확도가 가장 높은 모델을 사용하길 원한다. 특히 최근에 많이 사용되는 머신러닝 알고리즘에 관심이 많다. 

 

- 데이터 용량이 작을 경우, 훈련 데이터로 적합한 모델을 학습하는 능력이 떨어질 수 있으므로 데이터를 더 구할 수 있는지 확인 필요

- 모수적 모델과 비모수적 모델을 사용해 예측 성능 분석 비교

- 정확도에 크게 차이가 없고 데이터가 크지 않다면 모수를 추정할 수 있어 해석가능한 모수적 모델이 나올 수 있음.

 

p.167

어떤 실험/관찰에 있어서 예상 가능한 모든 결과의 집합을 표본 공간(Sample Space)이라 하는데, 분포는 이 표본 공간 범위와 관측된 데이터 간의 관계를 나타내는 함수다. 

댓글