최근 회사 데이터 스터디를 통해 접하게 된 책이다. 원제는 ‘Data Science Bookcamp’로, 600페이지가 넘어가는 방대한 분량 안에 실무에서 마주할 법한 데이터 사이언스 문제들을 5개의 케이스 스터디로 나누어 깊이 있게 다루고 있다. 단순히 알고리즘 이론이나 파이썬 라이브러리의 API 사용법을 나열하는 것이 아니라, 원시 데이터를 수집하고 정제하여 통계적 가설 검정과 머신러닝으로 비즈니스 결론을 도출하는 전 과정을 실습하도록 구성되어 있다. 스터디를 진행하며 정리한 각 케이스 스터디의 핵심 기술 내용과 다루는 주제들을 상세하게 요약해 둔다.
첫 번째 사례: 카드 게임의 승리 전략 탐색 (확률과 통계)
첫 번째 프로젝트는 가장 기본적인 확률과 통계 이론을 파이썬 코드로 밑바닥부터 구현하는 데 초점을 맞춘다. 수학적인 공식을 단순히 암기하는 대신, 코드를 통해 표본 공간(Sample Space)을 직접 정의하고 결과의 불확실성을 시뮬레이션하는 접근법을 사용한다.
- 주요 기술: 파이썬 기본 자료구조를 활용한 확률 연산, 히스토그램을 이용한 분포 시각화
- 내용 요약: 동전 던지기나 다면체 주사위 굴리기 같은 단순한 문제부터 시작해, 복잡한 규칙의 카드 게임에서 특정 패가 나올 확률이나 최종적으로 승리할 확률을 몬테카를로 시뮬레이션 방식으로 근사한다. 이 과정에서 통계적 분산과 기댓값의 개념을 코드로 증명하며, SciPy 모듈과 Matplotlib을 활용해 이항 분포와 정규 분포의 특징을 그래프로 시각화하는 방법을 다룬다.
두 번째 사례: 온라인 광고 클릭 분석 (통계적 가설 검정)
두 번째 사례는 마케팅 부서에서 빈번하게 발생하는 A/B 테스트 결과를 분석하는 과정이다. 두 가지 서로 다른 배너 광고(디자인 A, B) 중 어느 것이 통계적으로 유의미하게 높은 클릭률을 달성했는지 수학적으로 판별한다.
- 주요 기술: p-value 연산, t-검정(t-test), 신뢰구간(Confidence Interval), 귀무가설과 대립가설
- 내용 요약: 단순하게 클릭률 평균을 비교하는 것을 넘어, 표본 데이터에서 얻은 결과가 단순한 우연에 의한 것(귀무가설)인지 아니면 실제 디자인의 차이가 유발한 것(대립가설)인지를 정량화한다. 중심극한정리를 바탕으로 표본의 크기가 분석 결과에 미치는 영향을 파악하고, SciPy의 통계 모듈을 이용해 p-value를 계산함으로써 비즈니스 의사결정에 필요한 통계적 확신을 얻는 과정을 실습한다.
세 번째 사례: 뉴스 헤드라인 기반 질병 발생 추적 (웹 데이터 처리와 군집화)
세 번째 프로젝트는 전 세계적인 질병 발생 동향을 파악하기 위해 웹에 퍼져 있는 수많은 뉴스 헤드라인 텍스트를 분석하는 작업이다. 비정형 텍스트 데이터를 정형 데이터로 변환하고, 이를 지도상에 시각화하기 위해 여러 알고리즘을 복합적으로 사용한다.
- 주요 기술: 정규표현식, 텍스트 파싱, K-Means 클러스터링, DBSCAN, 지리 공간 데이터 매핑
- 내용 요약: 뉴스 텍스트에서 도시 이름과 질병 관련 키워드를 추출하기 위해 텍스트 파싱과 정규표현식 기법을 적용한다. 이후 추출된 도시의 위도와 경도 데이터를 매핑하여, 질병의 발생 중심지를 파악하기 위한 군집화(Clustering) 알고리즘을 적용한다. 여기서 K-Means 알고리즘이 가지는 한계(구형 군집만 잘 찾고 k값을 미리 지정해야 하는 문제)를 확인하고, 이를 극복하기 위해 데이터 포인트의 밀도를 기반으로 군집을 형성하는 DBSCAN을 도입하여 비교 분석한다.
네 번째 사례: 온라인 채용 공고 기반 이력서 최적화 (자연어 처리)
네 번째 사례는 채용 포털의 방대한 텍스트 데이터를 크롤링해 분석함으로써, 특정 직군에서 가장 많이 요구하는 기술 스택과 키워드를 찾아내 구직자의 이력서를 최적화하는 과정을 다룬다.
- 주요 기술: TF-IDF, 코사인 유사도(Cosine Similarity), 토큰화(Tokenization), 불용어 처리
- 내용 요약: 수집된 채용 공고 텍스트를 형태소 단위로 분리하고 의미 없는 불용어(Stopwords)를 제거한다. 이후 각 단어의 문서 내 중요도를 수치화하는 TF-IDF 행렬을 구성한다. 구직자가 작성한 텍스트 이력서와 실제 채용 공고들 사이의 코사인 유사도를 벡터 공간에서 계산하여, 이력서에 반드시 추가되어야 할 핵심 직무 키워드를 역으로 추천해 주는 추천 시스템의 뼈대를 구축한다.
다섯 번째 사례: 소셜 네트워크에서 미래 친구 관계 예측 (네트워크 분석 및 지도 학습)
마지막 프로젝트는 소셜 미디어 내 사용자들의 관계망을 그래프 형태로 모델링하고, 아직 서로 연결되지 않았지만 곧 친구가 될 확률이 높은 사용자들을 예측(Link Prediction)하는 시스템을 구현한다.
- 주요 기술: 그래프 이론, NetworkX 라이브러리, 의사결정 나무(Decision Tree), 지도 학습 분류(Classification)
- 내용 요약: 노드(사용자)와 엣지(친구 관계)로 이루어진 복잡한 그래프 데이터를 다루기 위해 파이썬의 NetworkX 라이브러리를 활용한다. 공통 친구의 수, 자카드 유사도(Jaccard Similarity), 페이지랭크(PageRank) 등 네트워크 위상 구조에서 파생되는 다양한 지표들을 추출해 머신러닝 모델의 피처(Feature)로 가공한다. 이렇게 생성된 피처들을 바탕으로 의사결정 나무 모델을 학습시켜 두 사용자 간에 새로운 연결이 형성될지 여부를 예측하는 분류 모델을 최종적으로 완성한다.