사카마키 류지.사토 요헤이 지음, 손정도 옮김/한빛미디어
추천 대상 : 요새 사람들이 R, R 거리는데 R은 대체 뭘 위해서 어떻게 쓰는 걸까... 생각했던 사람들
추천 정도 : ★ ★ ★ ★ ★
추천 사유 : 데이터 과학하면 흔히 R, 혹은 Python을 이야기 하는데 R을 어떻게 쓰는지 감이 안 왔던 사람(이 책을 읽기 전의 나)에게 좋은 책. 사례와 함께 실제 코드를 보여준다. 초반부에는 데이터 과학자의 유형이라든가 조직에서의 데이터 과학자의 역할, 필요한 서포트에 대해 알려주는데, 이 부분도 좋았다. 내가 감명 깊게 본 것은 '기획자나 개발자' 즉 유관 업무자와 커뮤니케이션을 하지 않으면 분석의 의미와 정확도가 떨어진다는 부분이었다. 분석은 데이터 과학자의 몫이라는 것은 잘못된 생각이라고 생각한다. 데이터 과학자는 탐정과 유사한 역할을 수행하는데(어떤 것이 문제인가? 어떻게 이를 해결할 것인가?) 유관 업무자들과 이야기 하지 않으면 증인 없이, 증거 없이 수사를 하는 것과 동일하다고 생각한다.
01 데이터 과학자라는 직업
1.1 데이터 과학자란?
로그 데이터를 직접 분석할 수 있는 사람, 즉 '코드를 작성할 수 있는 마케터'가 필요합니다. 요즘에는 코드를 작성할 수 있는 마케터를 데이터 과학자라고도 부름
1.2 데이터 과학자의 세 가지 타입
비지니스 영역에서 출발한 데이터 과학자 : 실제 유저들의 요구사항을 알기 위해 필요한 데이터를 발견하여 범위를 좁혀가는 능력이 탁월
통계학 쪽에서 출발한 데이터 과학자 : 데이터의 상태로부터 어떤 목적으로 어떤 결과를 내기 위해 어떤 데이터 분석 기법을 사용해야 하는지 쉽게 판단. 데이터 상태나 처리 목적에 따라 적절한 통계 기법을 선택
엔지니어링 쪽에서 출발한 데이터 과학자 : 복잡한 데이터를 분석하기 쉽도록 정도하거나 적절한 언어와 처리 구조를 선택할 떄 정확한 판단을 내리는 능력이 있음
02 비지니스에서의 데이터 분석 흐름
2.1 데이터 분석의 다섯가지 흐름
비지니스에서 데이터 분석의 목적 : 비지니스에서 발생한 여러가지 질문을 통계 해석이나 기계 학습 데이터 마이닝 등의 각종 방법론을 구사하여 해결하는 것
현실의 모습과 이상적인 모습을 정확하게 파악하여 둘의 차이를 이루는 요소에 대해 '문제 발견'을 실시
문제가 되는 요소는 복수일 경우가 많으므로 각각에 대해 어떻게 '데이터 수집과 가공'을 할지 검토한 후에 실시
데이터 분석에서는 분석 대상의 구조를 분해하여 각 요소가 지닌 영향력의 크기를 파악하고 요소 간의 비교를 통해 현실과 이상의 차이를 이루는 주 요인을 집어냄
해결책을 실행할 떄 노동 비용이나 금전적 비용등을 고려하여 '액션'을 제안하여 추진
2.2 현실의 모습과 이상적인 모습
이상적인 모습과 현실의 모습 사이에 차이가 있어야 문제라고 할 수 있음
2.3 문제 발견
현상을 가지고 기획자, 엔지니어, 서비스 운용자 등 비지니스 담당자와 제대로 의논하여 해결해야 할 문제를 찾아내는 것이 중요
이상적인 모습을 상상하며 현실의 모습과의 차이 인식하기 :
1) 크기 보기
2) 분해해서 보기
3) 비교해서 보기
1) 크기 보기 : 이상적인 모습과 현실의 모습의 차이에 대한 요인의 영향도. 최대한 많은 비즈니스 당사자와 분석자 사이에 '이상적인 모습'이 공유되지 않으면 비즈니스에서 가치가 떨어지는 분석 결과가 나오게 됨
2) 분해해서 보기 : MECE(Mutually Exclusive Collectively Exhaustive : 요소가 서로 준복되지 않고 빠짐없이 모으도록)에 주의할 것
MECE에 따라 분해할 때는 비즈니스로 조절할 수 있는 요소가 포함되도록 잘 분해하는 것이 중요
3) 비교해서 보기 : 문제가 있는 데이터와 없는 데이터를 비교해서 그 차이가 무엇에 의해 발생하는지 찾아내는 방법. 시계열, 유사 상품/서비스, 유저 속성에 따라 비교
2.4 데이터 수집과 가공
- 데이터 수집 :
문제를 검증하기 위해 어떤 데이터가 필요한가?
분석자가 사용할 수 있는 곳에 필요한 데이터가 보존되어 있는가?
분석자가 신청하면 필요한 데이터를 사용할 수 있는가?
필요한 데이터가 보존되어 있지 않을 경우, 새로 데이터를 취득할 수 있는가?
필요한 데이터가 보존되어 있지 않고 또한 새로 취득하기에는 시간이나 비용이 많이 들 경우, 그것을 대체할 수 있는 다른 데이터가 있는가?
효율적인 작업을 위해 먼저 가급적이면 이미 가지고 있는 데이터나 신청해서 바로 사용할 수 있는 데이터로 분석을 마칠 수 있을지 생각함
데이터 읽어 들이기 : 파일, 데이터 베이스, 하둡 등을 통해 읽어들이기
- 데이터 가공
데이터 결합
판정용 변수 작성 : yes/no 판정
이산화 변수 작성 : 정도의 차이에 따라 수치 부여
2.5 데이터 분석
문제의 종류에 따라 의사결정지원과 자동화, 최적화의 두 가지로 나눔
1) 의사 결정 지원 : 문제 해결을 위한 행동을 사람이 결정하고 실행할 수 있도록 지원하는 것이 주목적. 고도로 복잡한 모델보다는 단순하고 이해하기 쉬운 모델이 효과적이며 단순 집계 혹은 크로스 집계가 유효한 경우가 많음
비지니스 당사자가 의사소통을 원활히 할 수 있도록 단순하고 이해하기 쉬운 데이터 분석을 기본으로 함
예측 모델을 구축할 떄도 있음. 예측 모델은 어떤 요인이 결과에 어떻게 영향을 끼치는지 인과관계를 명확히 할 수 있게 해주기 때문
2) 자동화, 최적화 : 문제 해결을 위한 행동을 컴퓨터에 실행시키기 위한 알고리즘을 구축하는 것이 주목적. 알고리즘의 계산량과 정확도가 중요시됨
자동화, 최적화의 목적으로는 먼저 '의사 결정 지원에 도움이 되는 통계해석'에서 주로 다루는 '무엇이 매상을 올리는 데 유효했는가?' 등의 상세한 분석을 들 수 있음
2.6 액션
데이터 분석 후에 자주 접하는 과제는 이러한 기대 수치를 구체화해서 액션 실행 시 리스크를 최소화하는 데 있음
계산 결과에서 얼마만큼 오차가 발생할 수 있는지도 함께 제시하는 것이 중요
2.7 정리
현실의 모습과 이상적인 모습의 개념에 대해서는 데이터 분석자보다 비지니스 기획, 개발, 운용 등을 담당하는 멤버, 즉 데이터 분석을 의뢰하는 자가 생각하는 것이 데이터 분석을 잘 수행하기 위해 적절하다고 할 수 있음
즉, 이상적인 모습을 의뢰자와 분석자가 반드시 공유하고 실제 액션을 향해 데이터 분석을 실행하는 것이 비지니스 데이터 분석에서 무엇보다 중요하고, 이 부분을 잘하는 것이 수월하게 효과를 높이는 방법론이라고 할 수 있음
(Chapter 03부터는 사례와 함께 데이터 분석 코드를 제공. 코드에 관한 발췌는 별도로 하지 않음)
03 왜 매상이 감소하고 있는가?
- 데이터 분석할 수 있도록 데이터를 정돈하는 가공 작업을 '전처리'라고 함
- 분석 기법 중에는 데이터의 노이즈에 약한 것이 있음. 그런 기법을 이용할 경우에는 그 기법에서 노이즈로 분류될 법한 데이터를 삭제하기 위한 가공 작업 필요
- 비즈니스의 데이터 분석에서 중요한 것은 데이터를 분석하기 전에 관계 부서와 가급적 많은 질의 응답을 해서 사실을 파악하는 것
04 어떤 속성의 고객들이 떠나고 있는가?
- 데이터 분석 담당자는 그들에게 어떤 과제가 주어지더라도 일단 비즈니스상에서 문제로 인식된 현상과 이상적인 모습을 정리하는 데 초점을 맞출 필요가 있음
- 문제 발견 단계에서는 항상 크고 넓은 시점으로 모든 가능성을 염두에 두는 것이 중요
- 탐색형 데이터 분석 : 사전에 원인을 짐작하기 어려운 상황에서 출발하여 그 원인을 데이터 분석을 통해 탐색해나가는 방법
- 문제의 요인을 탐색하는 분석에서는 어떤 상태의 데이터(결과 데이터)와 유저 속성정보(원인 데이터)를 연관시켜서 특정 속성(원인)이 어떠한 상태(결과)를 야기하는 것이 아닌지 검토하는 방식이 많음
1) 세그먼크 분석 실시하기(세그먼트 크로스 집계 하기)
2) 밝혀진 세그먼트 가시화하기
05 어느 쪽의 배너 광고가 반응이 더 좋은가?
- A/B의 구분은 임의적이어야 함
A와 B를 구분할 떄는 두 그룹 간에 '남녀'와 같은 명확한 차이가 나타나지 않도록 임의로 나눌 필요가 있음. 가장 단순한 방법은 유저 ID를 어떤 숫자로 나눈 나머지로 분류하는 방법
- A/B 테스트를 동시에 여러 개 실시할 때의 함정
실제로는 의도치 않게 다른 테스트를 실시 중인 유저 비율을 다르게 나타난 경우
다른 테스트를 실시 중인 유저가 포함되지 않도록 그룹을 나눌 수 있는지 사전에 검토하면 테스트를 올바르게 수행할 가능성이 높아짐
- 통계적 가설검정은 커트라인
사람 수가 많은 경우에는 대부분 통계적으로 유의한 차이가 있다 라는 결과가 됨
가설 검정은 커트라인으로 실시하는 것임. 적어도 가설 검정에서는 의미가 있는 차이가 나타났으므로 이제 이게 비즈니스 상엣 의미가 있는 차이인지 검토하자 라는 식으로 사용해야 함
- A와 B의 클릭률에 통계적으로 차이가 있는지 파악하기
p값이 0에 가까우면 가까울수록 차이가 있다는 것을 나타내고, 일반적으로 0.05보다 작은 값이면 '통계적으로 차이가 있다'고 여김
- A와 B의 클릭률의 시계열 추이 시각화하기
혹시 어떤 특정 시점에만 차이가 크게 나타난다고 하면 전혀 다른 요인일 가능성이 있음
06 집객효과가 가장 큰 광고의 조합은 무엇인가?
- 중회귀모델 분석 기법
회귀분석(중회귀분석) : 크로스집계의 확장판. 비즈니스에서는 항상 비용을 고려하고 결과를 예측해서 액션을 취하는 것이 일반적임. 즉, 리턴을 상정하고 행동 비용을 투입하게 됨. 이때 도움이 되는 분석 기법
회귀 분석을 실시해서 관계성을 모델화한 그래프를 직선으로 나타내면 목적 변수 = β x 설명변수 + α 으로 표현되며, 여기서 β와 α의 값을 추정하는 것이 회귀 분석
회귀분석의 결과로 알 수 있는 것 : 원인으로 여겼던 데이터가 결과로 여겼던 데이터에 정말 영향을 끼쳤는가? 만일 영향을 끼쳤다고 하면 그들 사이에는 어떤 관계가 있는가?
결정 계수가 1에 가까워질수록 모델이 주어진 자료에 적합함을 의미함
어디까지나 이 회귀식은 이번에 얻은 데이터만으로 산출한 것임을 잊지 말아야 함. 데이터의 범위를 넘어선 값이 회귀식이 들어낮지 않는 일은 흔히 있을 수 있음
회귀 분석의 결과 해석 :
1) Residuals : 잔차(예측값과 측정값의 차이)분포를 사분위수로 표현한 것. 데이터의 치우침이 있는지 확인
2) Coefficients : 추정된 절편과 기울기에 관한 개요. 각 행은 추정값, 표준 오차, t값, p값 순으로 나열됨. 기울기가 얼마나 변동하는지, 통계적 유의성이 있는지 알 수 있음
3) Multiple R-squard, Adjusted R-sqared : 결정계수와 자유도 조정 결정 계수. 결정 계수는 1에 가까워질수록 모델이 주어진 데이터에 적합함을 뜻함
07 과거의 행동으로부터 현재의 행동을 예측할 수 있는가?
- 어떤 모델을 사용할 것인가?
가지고 있는 데이터에 정답이 포함되어 있지 않은 경우, 단순한 방법으로 재빨리 결과를 뽑아보는 편이 좋음
로지스틱 회귀 분석 : 목적 변수가 구매하기/구매하지 않기와 같이 두 가지 값을 가질 떄 사용하는 회귀모델. 신속하게 데이터의 경향을 파악하기에 적함함
0/1과 같은 데이터에 대해서는 그 값 자체가 아니라, 1의 비율로 다루는 것이 적절
- 로지스틱 회귀분석으로 모델 작성
AIC(아카이케 정보 척도) : 변수를 선택하는 방법은 이미 여러 가지가 알려져 있는데, 일반적으로 사용하는 지표임
08 어떤 고객층을 타깃으로 정할 것인가?
기존 유저를 위한 대책을 실시하기 위해서는 기존 유저가 어떤 유저들인지 이해하는 것이 매우 중요
유저 세그먼케이션은 단순히 유저를 분류하는 것으로 끝나는 것이 아니라, 이후에 구체적인 대책을 세울 수 있도록 분류해야 함
→ 평소에 주로 취하는 행동으로 그 유저의 기호나 성향을 이해할 수 있지 않을까?
각 세그먼트의 KPI를 조사해서, KPI가 높은 세그먼트와 낮은 세그먼트의 행동에 어떤 차이가 있는지 알 수 있음
k-means 알고리즘 : 클러스트링의 일종
1) k개 클러스터 중심의 초깃값을 정함
2) 각 데이터와 1)에서 정한 k개 클러스터 중심과의 거리를 구해서 가장 가까운 클러스터로 분류
3) 클러스터 중심을 다시 구함
4) 클러스터 중심이 변하지 않을 떄까지 2)와 3)을 반복함
행동로그는 모든 행동에 대해 존재하기 떄문에 서로 영향을 끼치기도 하고 행동에 따라서는 거의 0인 유저가 많아지는 등 통계 교과서에 쓰이는 말끔한 데이터와는 거리가 멈. 그래서 우선 대부분의 ㅏㅄ이 0인 변수와 상관이 높은 변수를 제외함
- 클러스터를 몇 개로 나눌 것인가?
클러스터 숫자는 분석자가 지정하는 것임. 3~6개에서 정하게 됨. 클러스터수의 범위가 정해지면 범위 내의 모든 숫자에 대해 클러스터링을 실행하고 그중에서 가장 좋아보이는 결과를 사용하기로 함
클러스터링이 완료되면 레이더 차트로 세그먼트를 시각화
09 어떤 행동을 취한 고객들이 계속해서 이용하는가
분석하고자 하는 행동의 사전적 정의를 할 것. 애매한 단어를 구체적인 행동이나 기능으로 분해함으로써 구체적인 분석이나 대책을 위한 논의를 할 수 있게 됨
- 소셜 액션을 정량화하기
어떻게든 숫자로 표현하는 방법을 찾아봄
- 클러스터를 설명변수로 사용하기
새로운 설명변수를 사용해서 결정트리 분석을 실행하면 정착률에 가장 큰 영향을 끼친 소셜액션과 분석축의 조합을 찾아낼 수 있음
주성분 분석은 설명변수끼리 독립적이지 않을 때 족립성분으로 변화하거나 혹은 설명변수가 너무 많을 떄 차원수를 축소하는 등 보조적인 쓰임새가 많은 분석 기법
10 보다 즐거운 팀을 구성하기 위해서는?
여러 가지 기획을 논의한 후, 실시한 기획에 대해서는 데이터 검증을 통해 그 기획이 좋았는지 나빴는지 판단하는 식으로 양호한 비즈니스 검증(PDCA) 사이클을 식시할 수 있게 됨
- 해결해야 하는 포인트를 정의하기
ex. 팀플레이의 즐거움을 정의하기 위해 기획팀과 회의를 거쳐 공통된 정의를 내림
- 예측 모델 작성 순서
규칙성과 유사성의 검증 : 다음과 같은 조건을 충족해야 예측 모델이 잘 구축됨.
데이터 행렬의 열방향에는 규칙성이, 해 방향에는 유사성이 존재해야 함
1) 데이터에서 규칙성을 찾을 수 있을 것
2) 데이터에서 유사성을 찾을 수 있을 것
예측 모델을 작성할 때 가장 먼저 해야 할 일은 데이터에 규칙성과 유사성이 존재하는지 검증하는 것
데이터를 검증해서 규칙성과 유사성이 없다고 판단되면 모델 구축을 포기하든가, 데이터를 요약해서 규칙성과 유사성을 어떻게든 도출할 필요가 있음. 데이터를 요약한다는 것은 예를 들어 1일 단위로 데이터를 집계한다거나 혹은 심야에 반드시 게임을 이용하는 유저 등 특정한 조건을 가지고 데이터를 선별해서 규칙성과 유사성을 찾아내는 것을 말함
노이즈 제거 : 예측 모델을 구축할 때는 어떤 값을 경계선으로 해서 노이즈를 정의할지 서비스 기획자에게 반드시 확인해야 할 필요가 있음. 유저가 의도하지 않은 동작으로 인해 쌓인 로그가 포함되어 있으면 좋은 예측모델을 구축하기 어려워짐
- 데이터의 규칙성과 유사성 검증 :
개개인의 행동로그를 보면 천차만별로 보이지만 1주 동안의 데이터를 1시간 단위로 놓고 보면 각 유저의 해옹은 여섯 종류의 클러스터 어딘가로 분류되며 클러스터마다 뚜렷한 패턴이 존재하는 데이터임을 알 수 있음
분석 사례에 따라 어떤 지표를 중시해서 분류모델을 작성할지 결정하는데, Precision과 Recall이라는 지표가 있음
Presicion : 추정이 일치한 확률을 파악하는 지표. 비율을 보기 때문에 몇 번 맞췄느냐와 상관 없이 동일함
Recall : 추정이 일치한 횟수. 2건 중 1건을 맞춘 것보다 100건 중 50건을 맞춘 쪽이 높은 수치
F1 : 둘 다 중요하게 포함하는 고차 지표. 2/{(1/Recall) + (1/Precison)}
- 정리 :
예측모델이 잘 만들어졌을 경우, 그 결과를 실제 서비스 개선에 활용하기 위해 서비스 기획자와 회의나 토론을 꼭 실시해야 함. Web 업계에서는 실제로 서비스에 추가되기 떄문에 서비스를 개발하는 개발자와도 논의를 할 필요가 있음
- 랜덤 포레스트에 대하여 : 랜덤 포레스트란 앙상블학습(집단 학습)에 의한 분류와 회귀를 수행하는 통계 기법
여기서 예측하고 싶은 값이 yes/no 인 경우 분류라고 하고 몇 번인지와 같은 연속값인 경우는 회귀라고 함
집단 학습은 결코 정확성이 높다고 할 수 없는 약한 모델을 많이 만들어 이것들의 결과를 다수결로 정함으로써 정확도가 높은 분류기를 구축하는 방법
랜덤 포레스트라는 이름은 랜덤하게(임의로) 추출한 데이터로부터 결정트리를 여러 개 만들고 그것들을 가지고 최종적으로 정확도가 높은 하나의 모델을 만든다는 의미로 붙여짐