Adp 실기 23회 - adp silgi 23hoe

Updated: January 20, 2022

학부생 때 배운 내용을 복습할 겸 ADP 24회 실기 시험을 봤습니다. 다음 시험을 준비하기 위해 후기를 작성합니다.

  • 시험: ADP (데이터분석전문가) 23회 실기 시험
  • 일시: 2021년 12월 18일(토) 13:00~17:00
  • 장소: 성동공업고등학교

시험 준비

  • 학부생 때 배운 내용을(다변량분석, 예측애널리틱스 등) 복습하고 과제로 제출했던 R 코드를 참고했습니다. (R코드는 앞으로 블로그에 하나씩 올릴 예정입니다. 필요하신 분은 참고하세요.)
  • 한국데이터산업진흥원에서 나온 ADP 실기책(보라색)을 가져갔지만 별로 도움은 안 됐습니다. R코드만 따로 정리해서 가져가는 편이 나을 것 같습니다.
  • 가이드북은 너무 두꺼워서 아예 안 봤습니다.

시험 환경

  • 집에서 가장 가까운 성동공업고등학교를 선택했습니다. 시설은 깔끔했습니다.
  • 입실 시간이 12:30분까지라길래 시간 맞춰서 갔는데, 이전 시험이 덜 끝나 고사장에 못 들어가고 기다렸습니다. 12:30분 넘어서 온 응시자도 들어오는 걸 보니 입실 통제가 제대로 안되는 것 같습니다.
  • 화장실은 한 번에 한 명만 갈 수 있습니다.
  • 코로나 때문에 물은 복도에 나가서 마셔야 합니다. 막상 시험이 시작하니까 문제 푸느라 나가서 물 마실 시간이 없었습니다.
  • 저는 R을 선택해서 goorm 클라우드 환경에서 시험을 봤습니다. 시험 시작하기 전에 환경 테스트 할 시간을 줍니다. 저는 R notebook으로 시험 준비를 해서 테스트 환경에서도 잘 되나 확인해봤는데, export에서 에러가 발생했습니다. 이땐 별 대수롭지 않게 여겼는데 본 시험에서도 문제가 되더라고요😢 R notebook 쓰실 분들은 테스트 환경에서 꼭 확인해보세요.

ADP 23회 시험문제 복기

  • 최근 시험 추세대로 기계학습 50점 통계학습 50점으로 출제되었습니다. 통계학습은 소문제가 3개 있었습니다.

1. 기계학습 (50점)


  • 데이터셋
    • target variable: 객실 사용 여부를 나타내는 변수 (0 or 1)
    • input variable: 온도, 습도, Co2, light

1.1. 전처리

1.1.1. EDA 수행 (시각화 포함)

  • 입력변수의 단변량 통계량(mean, variance, skewness, kurtosis)을 제시했습니다.
  • 입력변수의 boxplot을 그렸습니다. 범주형 변수인 light까지 그냥 boxplot으로 그려버렸는데, 복기해보니까 barplot으로 그리는 편이 나았을 것 같습니다.
  • Scatterplot과 correlation plot을 그려 서로 상관관계를 보이는 변수가 있는지 파악했습니다.
  • 다른 분들 해설을 보니 Light 변수가 함정이었다는 의견도 있습니다. Light가 꺼져있으면 occupancy(객실 사용 여부)도 0인지 확인했다면 좋았을 것 같습니다.

1.1.2. 결측치가 있는지 탐색하고 대체 방법을 설명하시오

  • is.na()로 확인해보니 결측치가 있었습니다.
  • mean이나 median으로 대체하는 방법을 제시했습니다.
  • mean으로 대체할 경우 이상치의 영향을 받아 데이터가 왜곡될 수 있으므로 median으로 대체했습니다.

1.1.3. 분석 결과를 향상시킬만한 기타 전처리가 있다면 서술하시오. (설명만 하고 구현은 안해도 됨)

  • 분석에서 사용하는 알고리즘에 따라 입력변수의 scale이 크게 차이 날 경우 문제가 생길 수 있으니 Normalization이 필요하다고 서술했습니다. (구현은 안했습니다.)
  • 다른 분들 모법 답안을 보니 범주형 변수의 경우 encoding을 해준다거나, 변수가 너무 많을 경우 feature engineering이 필요할 수도 있겠네요.

1.2 Class Imbalance

1.2.1. Class imbalance를 확인하시오

  • Class의 비율을 계산하고 barplot을 그려 확인했습니다.

1.2.2. 오버샘플링 방법 2가지를 제시하시오

  • 여기서부터 멘붕 시작이었습니다. 내가 아는 건 Random 방식밖에 없는데…!
  • Random oversampling과 regression을 이용한 oversampling이 있다고 했습니다. (Regression은 지어냄)
    • random oversampling은 구현이 단순한 반면 데이터가 중복으로 들어가기 때문에 overfitting의 위험이 있다고 적었습니다.
    • regression을 이용한 oversampling은 구현은 복잡하나 데이터가 중복이 아니기 때문에 overfitting 위험성이 떨어진다고 했습니다.
  • 모범답안을 찾아보니 SMOTE를 쓰신 분이 많네요.

1.2.3. 위에서 제시한 방법 2가지를 구현하고 결과를 보이시오

  • barplot을 다시 그려서 보여줬습니다.

1.3. 모델 구축

1.3.1. 정확도 측면의 모델과 속도 측면의 모델을 선정하고 선정 이유를 쓰시오.

  • logistic regression이랑 adaboost를 선택했습니다.
  • 모범답안을 찾아보니 속도 측면에서는 의사결정나무와 로지스틱 회귀가, 정확도 측면에서는 랜덤포레스트와 xgboost가 유리하다고 합니다. 아래 문제에서 성능을 비교할 때 코드 수행 시간과 accuracy도 비교해줘야 한다고 하네요.

1.3.2. 원본 데이터와 오버샘플링 데이터를 사용하여 모델을 구축하고 성능을 비교하시오.

  • 원본 데이터 1종, 오버샘플링 데이터 2종 총 3개의 데이터셋으로 모델을 2개씩 만들어야하는 문제였습니다.
  • 모델 구축은 어렵지 않을거라 생각했는데 adaboost를 구현하는 과정에서 에러 발생…급하게 gbm 으로 바꿨지만 다시 에러 발생… 여기서 시간을 많이 뺏겼습니다.
  • Performance measure는 TPR, TNR, FPR, FNR, ACC, BCR, PRE, F1을 작성했는데, 이렇게 많이 할 필요는 없을 것 같습니다.

1.3.2 오버샘플링이 유효했는지 서술하시오.

  • 결과를 봤을 때 원본 데이터보다 오버샘플링 데이터가 모든 성능 지표에서 우세했기 때문에 유효했다고 작성했습니다.

2. 통계분석 (50점)


2.1. 부호검정 (15)

공장에서 진공관 수명이 1만 시간이라고 한다. 12개 샘플로 유의수준 5%에서 부호검정하시오.

2.1.1. 귀무가설과 연구가설을 서술하시오 (5)

  • 귀무가설(H0): 진공관의 수명은 1만 시간이다.
  • 대립가설(H1): 진공관의 수명은 1만 시간이 아니다.

2.1.2. 유효한 데이터의 수는 몇 개 인가 (5)

  • 문제의 의도를 잘 파악 못 했습니다. 무턱대고 R에서 wilcoxon sign test 쓰려고 하니까 에러 뜨길래 median과 동일한 데이터 2개 제거했더니 됐습니다. 그래서 12개 - 2개 = 10개라고 했습니다.
  • 찾아보니 median과 동일한 데이터를 제거하는게 맞네요.

2.1.3. 검정통계량을 구하고 연구가설을 채택하는지 쓰시오 (5)

2.2. 시계열 군집분석 (20)

코로나 누적 확진자, 날짜, 나라가 포함된 시계열 데이터로 시계열 군집분석을 수행하시오. (20)

2.2.1. 자기상관함수(ACF)로 거리를 구하시오.

  • 시계열 군집분석도 모르겠고 ACF로 거리를 구하는 방법도 모르겠어서 2차 멘붕이었습니다.

2.2.2. 계층적 군집분석을 위해 덴드로그램을 작성하시오.

  • 거리를 못 구했으니 계층적 군집분석도 못 풀었습니다.

2.3. ANOVA? (15)

사회과학, 자연과학, 공학 학과별 평점을 조사한 표를 보고 학과와 성적이 관계가 있는지 검정하는 문제였습니다. 문제지에 표만 주어지고 따로 데이터 파일은 없었습니다. 저는 엑셀로 데이터를 만들어서 풀었습니다.

 사회과학자연과학공학
1.5~2.5      
2.5~3.5      
3.5~4.5      

2.3.1. 귀무가설과 연구가설을 서술하시오 (5)

  • ANOVA라고 생각하고 가설을 적었습니다. (다른 분들은 대부분 카이제곱검정을 쓰신 듯 합니다.)
    • 귀무가설(H0): 전공별 평균 평점은 동일하다
    • 대립가설(H1): 적어도 하나의 전공은 평균 평점이 다르다.

2.3.2. 학과와 성적이 독립일 때 기댓값은? (5)

  • 학과와 성적이 독립이라면 기댓값은 전체 점수/학생 수 라고 계산했습니다.

2.3.3. 검정통계량을 구하고 연구가설을 채택하는지 쓰시오 (5)

  • ANOVA로 F 검정통계량을 구했습니다. 연구가설 채택 여부는 기억이 안 나네요.

시험 후기

  • R Notebook을 export하는게 테스트 환경에서도 불안불안 하더라니 본 시험에서 결국 잘 안됐습니다. 시험 종료 15분 전에 급하게 export했는데 글과 코드만 나오고 결과창이 하나도 안나왔습니다. (그래프 포함) 당황해서 다시 export하니까 이번엔 소스코드에 있던 한글이 전부 깨져버렸습니다😱
  • 다시 고치기엔 시험 시간이 부족해서 결국 처음에 export 했던 파일 그대로 제출했습니다… 그래프랑 결과창이 하나도 없어서 합격은 힘들겠다고 생각했습니다. 다음에는 R Notebook 안쓰고 워드에 정리하려고 합니다.
  • 시험 결과는 52점이었습니다. 결과창이 제대로 나왔다면 더 높은 점수였을텐데 아쉬웠습니다. 어차피 시계열 군집분석을 못 풀어서 합격은 아슬아슬 했겠지만요.
  • 되돌아보니 잘 모르는 문제에서 너무 많은 시간을 뺏겼습니다. (Oversampling, 시계열 군집분석) 다음 시험에서는 아는 문제부터 빠르게 풀어야겠습니다.
  • 자료를 잔뜩 가져갔지만 그 중에서 참고한건 정말 일부분이었습니다. 다음에는 책을 다 들고가지 말고 보고서 형식으로 R코드를 정리해서 가져가야겠습니다.