안녕하세요, 이번에 ADP 26회 실기시험에 합격했습니다.
지금까지 데이터분석전문가(ADP) 합격을 위해 공부한 것들을 간략하게나마 정리했는데, 준비하는데 도움이 되셨으면 좋겠습니다.
#1. 시험 준비 전 사전 배경지식
2020년 9월 데이터 분석 공부를 처음 시작할 때 관련 지식은 1도 없었습니다. 어느 정도였냐면, SQL을 처음 시작할 때였고(select, where을 처음 접함...), R이나 python은 단 한번도 경험해본 적이 없었습니다.
즉, 머신러닝과 AI 관련 지식은 저에게는 너무 먼 얘기였으며, 통계는 개론(입문) 정도의 지식은 있었습니다.
#2. 하루 공부 시간
직장을 다니고 있었기 때문에 공부시간은 충분하진 않았으나, 주말 포함 주 15 ~ 20시간은 꾸준히 공부했던 것 같습니다.
#3. 데이터 관련 자격증 취득 history
2020.11.22. ADSP 시험 : 초시 합격 (84점, 공부기간 : 3달)
2020.11.29. SQLD 시험 : 초시 합격 (82점, 공부기간 : 3달)
- ADSP, SQLD 동시에 병행해서 3달 걸린 것 같은데, 보통은 각각 1~2달 걸리는 것 같습니다.
2021.03.13. ADP 필기 시험 : 초시 합격 (79점, 공부기간 : 2달)
2021.04.17. 빅데이터분석기사 필기 시험 : 초시 합격 (71.25점, 공부기간 : 2달)
- ADP 필기, 빅기사 필기 동시에 하면 시너지 효과가 있었습니다.
2021.12.04. 빅데이터분석기사 실기 시험 : 초시 합격 (78점, 공부기간 : 1.5달)
- 이때 R을 처음 접했습니다.
2022.09.25. ADP 실기 시험 : 초시 합격 (78.3점, 공부기간 : 1년)
- 제대로 ADP 실기 시험 준비를 한 건 약 2달입니다.
#4. ADP 실기 시험 공부 방법
- 처음에는 R을 할까, python을 할까 고민했지만, 빅기사 실기를 R로 합격을 했고, 현재 업무 특성상 python보다 R을 사용하는 경우가 종종 있어서 R로 시험 준비를 했습니다.
- R을 기본적으로 조작하는 방법에 익숙해지기 위해 정말 다양한 책들을 보았습니다. (아래 #5에 나열한 책 참고). 책에 나온 코드들을 하나하나 R studio에서 코드를 짜면서 run을 돌렸고, 책 한권 당 2회독 이상은 한 것 같습니다.
- ADP 실기 시험을 위한 책은 따로 보진 않았습니다.
- R을 활용한 ADP 실기 강의를 2달 간 수강했습니다.
* R ADP 실기 강의 : 슬기로운 통계생활 : https://statisticsplaybook.com
- R markdown을 알아두시면 공부 자료 정리하는데 도움이 됩니다. 코드짜고 문제푸는 건 r파일이 아닌 rmd파일로 정리하고, html로 knit한걸 프린트해서 시험장에 들고 갔습니다.
#5. ADP 실기 시험을 위해 본 책
(1) R린이 시절 R에 눈뜨게 해준 책
- Do it! 쉽게 배우는 R 데이터 분석 (김영우, 이지스퍼블리싱)
- 모두를 위한 R 데이터 분석 입문 (오세종, 한빛아카데미)
- R을 이용한 데이터 처리 & 분석 실무 (서민구, 길벗)
(2) R 제대로 배우기 위한 책
- R을 활용한 데이터 과학 (해들리 위컴, 인사이트)
- R Cookbook (J.D.롱, 폴티터, 인사이트)
- R을 활용한 기초 환경자료 분석 및 시각화 (이태권, 씨아이알)
(3) R을 위한 통계 공부(시계열 포함) 책
- introduction to statistical learning (일명 ISLR, Gareth James, Daniela Witten, Trevor Hastie)
* 번역본 : 가볍게 시작하는 통계학습 (번역본보다 되도록 원서를 보시는게 좋습니다)
- R을 이용한 누구나 하는 통계분석 (안재형, 한나래)
- 실전에서 바로 쓰는 시계열 데이터 처리와 분석 (이기준, 제이펍)
- 통계학 : R을 이용한 분석 (인하대학교 통계학과, 자유아카데미)
(4) R을 위한 머신러닝 공부 책
- R을 활용한 머신러닝 (브레트 란츠, 에이콘출판)
- R로 마스터하는 머신러닝 (코리 레즈마이스터, 에이콘출판)
- 실리콘밸리 데이터 과학자가 알려주는 따라 하며 배우는 데이터 과학 (권재명, 제이펍)
- Do it! 쉽게 배우는 R 텍스트마이닝 (김영우, 이지스퍼블리싱)
(5) 기타 참고용 책
- 파이썬 라이브러리를 활용한 데이터 분석 (웨스 맥키니, 한빛미디어)
- R을 이용한 퀀트 투자 포트폴리오 만들기 (이현열, 제이펍)
#6. ADP 실기 시험을 위해 본 강의
- 슬기로운 통계생활 강의를 2달간 들었습니다. 통계/머신러닝반 모두 들었는데, 이 강의를 듣지 않았다면 사실상 이번 시험에 합격할 수 없었습니다. 위 책들을 봤지만 책에서 공부한 걸 시험을 위한 지식과 스킬로 승화시키기 위해서는 멘토가 필요했습니다. 그래서, 시험 직전 2달간 슬기로운 통계생활 강의를 듣고 정리했습니다.
#7. ADP 26회 실기 시험 후기
첫 시험이라 당황의 연속이었습니다. 4시간이란 시간이 널널할 줄 알았는데, 정말 시간이 모자릅니다.
(머신러닝 PART 50점 중 37점)
* 데이터셋 : 온라인 유통 데이터, 약 4만개 데이터, 8개 feature
1. 결측치 식별, 이상치 제거, 요약 통계량 제시, 군집 생성
- 기본적인 전처리(결측치 식별, 이상치 제거, 요약 통계량 계산 등)와 시각화는 되도록 30 ~ 40분 내 해결해야 할 것 같습니다. 실제 현업에서는 전처리 시간이 많이 걸리지만, 시험에서는 아닌 것 같습니다.
- 그리고, 전처리와 시각화까지는 오픈북없이 코드를 짜는 정도가 되어야 합니다. 저는 전처리와 시각화에 주로 tidyverse, recipes 패키지를 이용했습니다.
- 군집 생성에는 factoextra 패키지를 사용하려고 했는데, 군집 생성 중 error가 발생하여 optimal k값 구하는 과정에서 rollback하고, 다시 일반 함수인 kmeans를 이용했던 것 같습니다. error가 뜬 이유는 데이터량이 많아서 그런 것 같았습니다.
- kmeans 함수를 사용해서 k를 2에서 6까지 조정하면서, within cluster sum of cluster 값을 하나하나 조정하면서 optimal k를 4로 정했습니다.
- 이 과정에서 30분 이상을 소비했는데, 되도록 예상치 못한 error에 대비하기 위한 차선책을 준비해 가는게 좋을 것 같습니다. 그리고, 모델 생성(train/test 분리, 모델 구축, 하이퍼파라미터 조정, 예측)도 30분 안에 해결하는 것이 좋다고 생각합니다.
2. 1의 결과를 활용하여 군집성능지표 산출, 군집간 차이 특성 분석, 군집별 상품 추천, knn을 이용하여 특정 고객 1명에게 상품 추천하기
- 군집성능지표는 silhouette 계수를 제시하고, compactness와 seperation 관점에서 설명했습니다.
- 그리고, 군집별 요약 통계량(평균, 중앙값 등)를 이용해 군집 간 특성을 설명했습니다. (여기서는 해당 데이터셋의 도메인 지식이 있다면 같이 서술하면 좋을텐데, 저는 유통과 관련해 일반적인 배경지식만 있어서 구체적으로 서술하진 않았습니다)
- 위에서 서술한 군집 간 요약 통계량의 차이를 이용해 군집별 상품 추천을 했습니다. (상품별로 요약 통계량을 계산해서 어떤 군집에는 이 상품의 특성[주문수량, 단가 등]과 비슷해서 추천하겠다 등으로 서술했습니다)
- knn 분류 알고리즘을 이용해서 특정 고객을 1개 군집에 labeling시켜야 하는데, knn 모델 학습 시간이 5분이 지나도 결과가 나오지 않았습니다. (caret 패키지를 이용해서 그런가? 잘모르겠습니다... 그냥 class 패키지의 knn 함수를 썼더라면 잘됐을 수도 있었을까요?)
- 그래서 시간이 없어서 사실대로 자수(?)했는데, “knn은 모델 생성이 오래 걸려 사용하지 않고...”라고 쓰고, 제 나름의 방식과 근거대로 특정 고객을 1개의 군집에 labeling 해줬습니다. (해당 고객의 데이터와 가장 유사한 요약 통계량을 나타내는 군집에 labeling시켰던 것으로 기억합니다. knn도 결국엔 거리 알고리즘이기 때문에 평균/중앙값이 유사하면 knn 분류 결과도 거의 유사할 것이라 생각했습니다)
(통계분석 PART 50점 중 41.3점)
3. 불량률의 90% 추정오차 한계가 5% 이내가 되기 위한 최소 표본수
- 요건 아예 문제를 손도 못대고 빈 종이로 냈습니다. 5점 짜리인걸로 기억하는데 아마 0점으로 매겨지지 않았나 생각합니다 ㅠㅠ
4. 은(silver) 시세를 3개월 이동평균과 함께 그래프에 그리기
- 이번에는 시계열이 간단한 소문제로 나왔습니다 (주로 기출에서는 ARIMA 모델 이용해서 시계열 모형을 만드는 대문제가 나왔었다고 알고 있습니다). 데이터를 시계열 ts 객체로 변환한 후, 3개월 이동평균은 lag 함수와 mutate 함수를 이용해서 3개월 간 이동평균 컬럼을 별도로 만들고, ggplot으로 시각화했습니다.
5. 독립성 검정(chi-square test)
6. two sample t-test
- 이거는 그냥 점수 주는 문제였습니다. 그렇지만 대충쓰면 감점될 것이기 때문에 정의와 가설의 채택/기각의 근거를 명확히 작성했습니다.
- 저는 사건의 정의와 귀무/대립가설 명확히 제시하고, 기본 가정(정규성, 등분산성 등)을 체크한 후 검정 결과(귀무가설 기각 or 채택)를 도출했습니다.
7. 베이지안 회귀
- 베이지안 회귀는 정말 1도 몰랐습니다. 베이지안 회귀는 help창(?caret 등)을 이용해서 검색하다가 arm 패키지의 bayseglm함수를 문제에서 주어진 파라미터를 대입하며 모델을 만들었고, 그 모델을 이용해서 체중의 예측값을 뽑았습니다.
- 모르는 문제가 나오면 당황하지 않고 최대한 주어진 정보로 결론을 도출하는게 좋은 것 같고, 모를 경우 최대한 help를 쓰는게 좋았던 것 같습니다. arm 패키지는 시험장에서 처음 써 본 패키지였습니다.
#8. 공부 및 시험 팁
- 시험장에는 책이 아닌 본인만의 준비 자료를 가져가시는 걸 추천 드립니다. 그 자료에는 무엇이 있어야 하냐면,
(1) 머신러닝 모델 생성 방법 및 각 모델의 장/단점 특징
- 분류/회귀 : decision tree, linear regression, logistic regression, lasso, ridge, elastic net, knn, svm, xgboost, random forest, nnet, bagging 등
- 군집 : kmeans, dbscan, pam 등
- 평가지표 관련 : rmse, mae, f-score, roc, counfusion matrix 등
(2) 동일 모델 생성 방법을 2개 이상 정리하기
- 예를 들어, 모형을 만들 때 한 가지 패키지만 알아갔을 때 에러로 막히게 되면 풀어나갈 수 없어 차선책(플랜B)를 준비하는 게 좋습니다.
(3) 기본적인 통계 검정 방법(모수/비모수 등)과 그 검정을 위한 여러 가정(정규성, 등분산성, 자기상관)들 정리
(4) 기본적인 전처리 방법 (전처리하다가 생각안날 때 잠깐 보는 용도)
(5) 시계열 분석 자료 (시계열은 어려우니까 ㅠㅠ)
(6) 기타 여러 자료
- 시험 결과는 꼭 pdf 1개 파일로 제출해야 합니다. 다만, 시험장에서는 R markdown은 비추천합니다. knit 중 에러가 뜰 수도 있고 다시 run하는 것이므로 시간이 많이 걸리기 때문입니다. 팁은 문제별로 R파일을 만들어서 저장하고, 각 파일별 결과를 윈도우 캡쳐 기능(shift+window+S)을 이용해서 R studio에서 run으로 출력된 콘솔 창을 ‘코드+결과’과 함께 캡쳐해서 워드나 한글에 사진으로 붙여넣고, 그 아래 설명을 쓰면 됩니다.
* 꼭 코드까지 제출해야하나요? => 저는 문제에서 지시가 없더라도 코드까지 캡쳐해서 냈습니다.
- adp 실기 시험은 범위가 워낙 방대하기 때문에 100점 중 20점 정도는 내가 모르는 문제(처음보는 문제)가 나온다고 생각하고 준비해야 할 것 같습니다. 그렇지만 20점을 모두 0점이 나오게 제출하는게 아닌, 나름의 근거를 제시하여 (문제에서 지시하지 않은 방법이라도) 다른 방법으로 풀어 내도 점수를 일부 주는 것 같습니다.
- 따라서, 시험에서 막히는 문제는 마지막에 풀되, 당황하지 않고 나름의 본인의 방법론이나 help 기능을 이용해서 풀어나가면 생각보다 높은 점수를 얻으실 것이라 생각됩니다.
#9. 마무리
여기까지 ADP 시험 후기였습니다. 얼떨결에 합격하게 되었지만 이번 계기로 더 딥하게 공부해야겠네요. 감사합니다 ^^