지지플랏의 DataScience

ADP 32회 시험 후기와 복기 본문

Data Science

ADP 32회 시험 후기와 복기

지지플랏 2024. 10. 13. 14:42
반응형

2024년 10월 12일 ADP 시험을 보고 왔습니다. 결론적으로 말하자면 디버깅하는데 시간을 너무 많이 써서 100% 실력발휘를 못한거 같아 너무 아쉽습니다.  문제는 평이했지만 시간이 너무 모자라서 아쉬움이 많이 남는 회차입니다. 복기도 할 겸 정리를 해봅니다.


1. 개요

  • 9시 ~ 9시 30분: 화장실 동선확인, 자료 정리, 응시표, 신분증 준비 등을 진행

시험은 신도림 테크노마트 5층 그린컴퓨터학원에서 치뤘습니다. 9시 정시에 입장했지만, 수험생 번호표도 안 붙어있어서 시험장으로서 준비는 잘 안되어있습니다. 입장해서 주위 환경과 동선을 파악하고 자료정리에 신경을 썼습니다.

https://naver.me/GxOLoE1G

 

그린컴퓨터아트학원 신도림캠퍼스 : 네이버

방문자리뷰 61 · 블로그리뷰 74

m.place.naver.com

 

  • 9시 30분 ~ 10시: Chrome 실행, 시험URL 즐겨찾기, 데이터 확인

9시 30분부터는 데이터를 확인하면서부터 문제를 대략 유추할 수 있었습니다. 예를 들어 ts라는 데이터 이름이 존재해서 시계열 문제가 나오는구나 체크하고 시계열 관련된 코드를 준비했습니다. 다른 데이터도 미리 불러오고 관련된 라이브러리도 사전에 import 하여 준비하는 것이 좋겠습니다. 어쨋든 최종적으로 워드로 작성 제출해야하기 때문에, 가독성 높은 코드는 나의 논리를 전달하기 좋으니까요~

 

2. 머신러닝 단원

문제 1,2,3번

머신러닝의 1~3번 문제는 1개의 데이터로 진행했고, 간염의 진행상황(0,1,2,3)를 종속변수로 하고  각종 간질환 지표를 독립변수로 하는 데이터였습니다. 다음 데이터셋과 비슷하나 독립변수가 모두 전처리된 연속형 변수 였습니다. 

https://www.kaggle.com/datasets/fedesoriano/hepatitis-c-dataset

1-1)결측치 처리 방안 2개 제시하고, 통계량으로 비교하고, 어떤걸 사용하는게 좋을지 제시해라
1-2)이상치 판단하고, 처리해야할지 판단해서 제시하라
1-3) 위의 처리를 마친 데이터로 EDA를 실행하는데, 종속변수의 데이터 값을 기준으로 독립변수들이 다름을 확인해라
1-4)상관행렬 구하고, 상관행렬을 주성분분석하여 새로운 설명변수를 만드는데 사용할 수 있는지 판단하여 제시해라

결측치 방안을 단순대치, 알고리즘 대치 등으로 작성할 수 있었는데, 시간이 너무 없어서 단순대치만 적어야 했던게 너무 아쉽습니다... 주성분분석의 경우 해석력을 잃어버리는 단점이 존재하니까 그만큼 가치가 있는지 보기 위해서 상관관계를 확인해보면 됩니다. 만약 다중공선성 등이 발견되면 적용하면 됩니다.

2-1)클래스 불균형이 존재하는데 해결할 수 있는 방안 2가지를 제시
2-2)클래스 불균형 상황에서 분류모델의 성능을 평가하기 위한 방안 3가지를 제시(10점)
2-3)위에서 제시한 2가지 불균형 처리 방법을 사용하고, 3가지 평가지표로 결과를 평가
*행 넘버의 5의 배수로 train과 test 셋 분리
*종속변수가 0,1,2,3 4개 값을 가지는데, 0과 1,2,3의 2가지 범주로 나누어서 모델 학습 및 평가 진행

2-2 클래스 불균형문제는 10점 배점이였고 아마 방안 1개당 3점, 3개 다 적으면 10점이 되는 형식이였나 봅니다. f1_score가 precision/recall의 개념을 담고 있기에 따로 뭐가 있나 하고 고민하던 중 시간이 없어서 추가로 기입을 못했습니다 ㅠㅠ

3-1) 1에서 전처리한 데이터를 바탕으로 종속변수에서 0을 제외한 1,2,3의 데이터만 가지고 학습 및 평가 진행해라. 이 때 모델은 3개 사용.
*동일하게 행 넘버의 5의 배수로 train과 test 셋 분리
3-2) 위에서 학습한 모델과 평가지표를 바탕으로 간염여부를 판단할 수 있는 지표? 정보?를 제시해라

3-2) 문제에서는 변수 중요도라는  명확한 워딩이 있던걸로 기억하는데, 아마 회귀분석이면 $/beta$ 값, 트리모델이면 Featrure importance 기준으로 나열했으면 되었을 것 같습니다.

문제 4번

두 개의 데이터를 주어주고 각각 전처리하여 조인 하는 문제였습니다.  32회 기출의 발전기와 시간에 따른 출력량이 pivot 되어있는 테이블이여서 전처리에는 크게 어렵진 않았습니다만... 중간에 함정이..

4) 지하철 이용객, 기상 데이터(aws.csv)
- melt 함수 사용
- 강수량에 대해 0으로 결측치 대치
- 기초통계량 확인하여 제시
- 토,일에 해당하는 데이터 weeday 1로, 나머지 0으로
*(weekday의 단어 뜻을 모르나..? 왜 이런 변수명이..)
- 두 개 csv merge

1)user 컬럼과 기후를 나타내는 컬럼들의 상관관계를 분석하고, 주말여부에 따른 user 변수의 차이를 검증하라.

2)선형 회귀모델과 머신러닝 모델을 사용하여 user 변수를 예측, 평가하라.

전처리 요구사항만 5줄인가 되어서 시간을 30분정도 썼던 걸로 기억합니다. 정말 화나는건 기상 데이터는 날짜별 시간대별 강수량, 습도 등이 적혀있는 데이터인데 2021-05-05 13시에  해당 데이터가 없어서 merge하는 과정에서 생긴 결측치가 있었습니다. 혹시 코드 수행을 잘 못했는지 디버깅 하다가 시간을 20분 추가로 날렸습니다... 크나큰 패착... inner 조인을 해야했다 생각이 들기도 하지만, 어쨋든 지하철 이용객이 Main Table이니 Left join한 건 맞다고 봅니다. 

이게 악질적으로 느껴졌던건 기상데이터는 몇 만행이고 실제로 중간에 결측치라고 표현되지도 않습니다.  다음과 같이 표현되기 때문이죠.

date humaditiy
2021-05-05 11:00   20
2021-05-05 12:00   11
2021-05-05 14:00   12

애초에 date가 날라가 있기 때문에 데이터 자체로만 보면 결측치인지 알 수 가 없습니다..  date를 시작날짜와 끝 날짜로 dummy table을 만들어서 공란이 있는지 확인을 해볼 수 도 있을 것 같지만.. 시간이 이렇게 부족한 시험에서 이렇게 만들었어야 했나 싶습니다.

3. 통계분석

문제 5번

데이터: A,B 공장의 수율 데이터(defective.csv)
- 불량률(100-수율)에 대해 검정진행이므로 새로운 컬럼 생성 필요
- (A B 공장간 불량률) 차이 평균 표준편차
- 차이 검정에 대한 귀무/대립가설 제시하고 검정 진행해라.

간단한 2그룹 수치형 검정에 대한 문제입니다. 데이터가 600개가 넘었던걸로 기억하는데, 정작 kolmogorov 검정을 해보니 p-value가 0.000 이하로 낮게 나와서 맨-휘트니 검정으로 진행하고 차이가 있다고 결론 지었습니다. 정말 이상했던 건, 이단 이 통계 검정 뿐 아니라 다른 2그룹 연속형 수치 검정 문제들이 p_value가 매우 다들 낮게 나와서 제가 잘못했나 다시 확인하기도 했습니다.

문제 6번

데이터: 기차연착(delay.csv)
데이터 호선 4개 주어지고, 연착횟수(5분, 10분, 15분, 20분, 25분? 5분 단위 6개 컬럼)
1)지하철 노선 1번 데이터의 연착횟수가 포아송 따르는지 검정하는 2가지 방법 제시
2)시간에 따른 연착횟수를 3개 컬럼으로 재처리(10분미만, 10~20분? 20분 초과?)하고, 
지하철 노선 별 연착횟수가 차이가 있는지 검정 진행(분할표 만들고, 2개 Column씩 합친 다음 카이제곱 검정 진행)

결과적으로 노션별 연착 구분별 crosstab을 만들고 카이제곱을 진행하면 되는 쉬운 문제입니다.

문제 7번

- 데이터: 단일컬럼 시계열(ts.csv)
- 컬럼명 없이 데이터만 존재 했음
- 1) acf, pacf의 개념을 설명하고  모델을 적합해라
- 2)Acf pacf를 그리고, 해당 Plot data를 기반으로 ARMA(p,q)모형 제시

여기서 또 마음에 안드는게 단일 시계열 데이터인데  컬럼명이 안 적혀있어서 단순히 pd.read_csv 불러오면 첫 번째 데이터가 컬럼명으로 들어옵니다. 물론 header = None을 넣으면 되지만 이렇게 일관성 없게 데이터를 줘야만 했나 생각이듭니다.  문제 자체는 쉬워서 pmarima로 자동 적합을하고 pacf, acf 그래프를 그려서 해석을 붙였습니다.

4. 마무리

선형계획법과 같은 문제는 나오지 않고 전처리의 비중이 다소 크고 통계문제는 평이했던 것 같습니다. 하지만 시간이 너무나도 부족하기 때문에 9시 30분~10시에 주어지는 데이터와 jupyter notebook 환경에 미리 세팅해놓는게 좋겠습니다. 또한, 머신러닝 문제는 1번 ~ 3번 과 같이 묶여서 진행 되기 때문에 재사용 가능한 함수형으로 모델을 구축해놓는게 좋겠습니다.문제의 모든 부분이 코딩으로 수행해야하는 것은 아니며, "데이터 불균형에 적합한 평가지표를 작성하라", "ACF와 PACF 정의를 작성해라" 등의 텍스트로 수행할 수 있는 문제도 있으니 문제를 받으면 해당 문제의 답은 미리 작성하는게 좋겠습니다. 

전반적으로 뭔가 문제를 고찰하고 다양한 실험을 해볼 수 있는 시험은 아니라는 걸 깨달았고, 그때 그때 생각나는 답변을 적어서 최소한의 점수를 확보하는게 유효할 거라 생각됩니다. 나름 선방할 수 있는 기회였는데 많이 아쉽네요 ㅠㅠ . 결과를 지켜봐야겠습니다.

반응형