📂 Etc/✨ 데이터 관련 자격증 후기

[ADP] 데이터 분석 전문가 31회 실기 후기, 문제 복기

민이언즈 2023. 11. 6. 20:13

[ 31회 후기 ]

  • 난이도 : 어렵지 않았음. 중 정도

29, 30, 31회 지금까지 3차례 시험 치르는 동안 그나마 가장 잘 본것 같음.

29회엔 머신러닝 문제 한 세트를 제대로 손대지도 못했고,

30회엔 통계분석 파트 중 배점이 컸던 두 문제를 통으로 날려버려서.. 시험 치르고 나오면서 느낌이 조금 다르긴 했다.

부분점수 좀 많이 줘서 합격했으면.. ㅠㅠ

 

확실히 29회부터 머신러닝 2세트 60점 + 통계분석 40점으로 가는 추세가 맞고,

 

내가 생각하는 관건은 아래와 같다.

1. 데이터 전처리를 효율적으로 척척 해나가는 스킬 (시간 절약의 포인트)

2. 기초 다지기 (기본적인 확률 분포에 대한 이해는 필수, 기출 제대로 풀어보기)

 

모든 걸 다 알고있으면 좋겠지만

매번 예측할 수 없는 새로운 키워드가 등장해서, 새로운 것을 공부해서 맞추기보다는

기출을 토대로 기초를 탄탄하게 다지면서 연습하는 게 중요할 것 같다.

시간과 능력이 된다면 트렌드를 함께 공부하는 것도 나쁘지 않고..

 

ADP 공부하게 되면 합격이 힘들더라도 많은 걸 공부할 수 있다그랬는데 맞는 듯. ㅎ...

 

 

 

[ 31회 문제 복기 ]

  • 복기 참고 : 내 기억 위주 + 데이터 마님 + 구글링 

머신러닝 첫번째 데이터 : 5개?의 클래스를 가졌던 종속변수 (다중분류, 40점)

분석기법에 집중해서 그런지 놀랍게도 2일 전이지만 데이터 내용이 기억 안남..

1-1. 변수별 분포, 특징 설명 & 결측치, 이상치 특징 서술 및 전처리(여기서 바로 시행하랬는지 기억 안남..)
1-2. 적절한 전처리 방법 2가지 
1-3. feature engineering를 이용해서 특성 하나를 추가

2-1. 머신러닝 분류모델 3개 (앙상블 제외)
2-2. 위 모델 중 한 모델 그리드 서치
2-3. 위에서 구현한 세 모델로 보팅

3-1. 분류지표 프로그램 생성 (precision, accuracy, recall, f1 등)
3-2. drop coulmn importance 어쩌구

 

머신러닝 두번째 데이터 : 비만 관련 청소년 데이터 (이진 분류, 20점)

4-1. 만나이, bmi, 적정체중여부 변수 추가
만나이 = 건강검진일 - 생년월일 

16년 364는 17로 간주한다? 뭐 이런 조건이 있었음
나이/성별에 따른 표 주고 bmi를 적정/부적정으로 구분하는 변수 생성하라는 문제였음

4-2. 적정체중여부에 따라 나머지 변수들 (모두 범주형) 차이가 있는지 유의성 검정
4-3. 유의한 변수들을 가지고 로지스틱 회귀(오즈비), xgboost (feature importance) 모델 구현 & 예측에 영향을 가장 많이 미치는 변수 비교
4-4. roc 그래프 한 plot에 겹쳐그리기

 

 

통계분석

5. 사후분포 평균 (5점)
사전분포가 정규분포인데 ~ 어떤 값이 있다면 사후분포의 평균은 어떻게 되는지? 이런 문제였음

6. 다중회귀 관련 (총 10점?)
sales, TV, ?, Newspaper 칼럼으로 이뤄진 데이터

6-1. 다중회귀 모델 구현
6-2. 회귀계수 유의하지 않은 변수 제거와 이유 설명
6-3. 다중공선성 확인 (검정통계량)

7. 코크란 Q 검정 (이라고 생각함) 
5개의 프로젝트가 있는데 프로젝트 간 차이 검정?
데이터 칼럼이 각각 0, 1로 구성되어있었고
데이터프레임은 아래와 같은 형식이었음 (내 기억엔)

id A B C D E
숫자 0 1 1 1 0
숫자 1 0 1 0 0

7-1. 가설 설정
7-2. 검정 시행, 유의확률 및 검정통계량 구하기
7-3. 기각여부 


8. 포아송 분포 관련 : 유기견이 매주 2.2마리 발생
8-1. 다음주에 한 마리도 버려지지 않을 확률

8-2. 다음주에(?) 적어도 2마리 버려질 확률

 

 

[ 시험장에서의 풀이 방식 ]

머신러닝

1-1. 변수별 분포, 특징 설명 & 결측치, 이상치 특징 서술 및 전처리(여기서 바로 시행하랬는지 기억 안남..)
1-2. 적절한 전처리 방법 2가지 

 

기본적인 EDA 과정으로 info(), describe(), describe(include="O"), boxplot 시각화, 수치형 변수 한 plot에 시각화함

 

isnull().sum()을 통해 결측치 확인 결과, 82 82 166 166 ? 이런식으로 두 칼럼씩 결측치 갯수가 같았던 걸로 기억함age의 경우에 150이 있어서 평균과 상당히 먼 데이터이고, boxplot에도 확연히 눈에 띄어서 나이가 150인 행을 제거 

 

나이가 150인 행을 제거했더니 결측치가 존재했던 모든 칼럼의 결측치 갯수가 동일해졌고, 이분변수(네/아니오)의 경우라서 임의적으로 데이터 조작하기보다는 데이터를 삭제하는 것이 적절한 방향이라고 생각했다라고 서술함. (1-1, 1-2를 적절하게 연결해서 1-2에 이상치, 결측치 전처리를 시행)

 

 

1-3. feature engineering를 이용해서 특성 하나를 추가

 

거의 모든 변수가 범주형 변수였어서 뭘 어떻게 만들지 하다가..

Age 변수의 분포를 봤을 때 우측으로 꼬리가 긴 왜곡된 분포라서 로그변환을 적용한 age_log 라는 변수를 추가해줌

솔직히 시간도 없는데 범주형 변수로 뭘 생성하기엔 어려웠음

 

 

2-1. 머신러닝 분류모델 3개 선택하고 특징 서술, 구현 (앙상블 제외)
2-2. 위 모델 중 한 모델 그리드 서치
2-3. 위에서 구현한 세 모델로 보팅

3-1. 2-2 모델 기준(?) 분류지표 프로그램 생성 (precision, accuracy, recall, f1 등)
3-2. drop coulmn importance 어쩌구

 

매번 랜덤포레스트, lgbm, xgboost로 모델 구현해왔는데 앙상블 제외하래서 살짝 당황..

무튼 svm, 나이브 베이즈, mlp 모델 별 특징 및 장점 적고 구현함

 

svm 이었나 macro-f1이 0.31 이정도로 나왔음

mlp는 0.6 이상 나와서 그걸로 그리드 서치 돌림

 

그리고 세 모델을 soft voting으로 구현했음.

2-2랑 2-3이랑 성능 크게 차이 안났는데 그리드 서치 돌린 게 성능이 살짝 더 높게 나왔던듯

 

3-1은 스무스하게 구현했고 3-2는 뭔소린지 몰라서 못품 ㅠ

 

 

4-1. 만나이, bmi, 적정체중여부 변수 추가
만나이 = 건강검진일 - 생년월일 
16년 364는 17로 간주한다? 뭐 이런 조건이 있었음
나이/성별에 따른 표 주고 bmi를 적정/부적정으로 구분하는 변수 생성하라는 문제였음

 

건강검진일에서 생년월일을 빼서 어떻게 하라는건지 시험장에서는 감이 안와서

걍 빼고 만으로 나누고 ? 그랬던듯 (시험장에선 머리가 안돌아가서 그랬나.. 이게 최선이었음..)

그리고 15살이라는 조건이 나와서 16으로 바꿨나; 그랬음

16년 364 어쩌고 조건이 괜히 있던 게 아닌 것 같았는데..

 

무튼 지금 생각해보면 데이터 형식이 datetime인지 확인해서 날짜 빼주고.. 365로 나누는게 맞지 않았나 싶음

제발 부분점수 주세요,, ㅠㅠ

 

그리고 적정체중여부 변수 생성할 때 if elif로 총 12개 조건으로 어찌저찌 만듦

점점 갈수록 데이터 전처리가 복잡해지는 느낌

 

4-2. 적정체중여부에 따라 나머지 변수들 (모두 범주형) 차이가 있는지 유의성 검정
4-3. 유의한 변수들을 가지고 로지스틱 회귀(오즈비), xgboost (feature importance) 모델 구현 & 예측에 영향을 가장 많이 미치는 변수 비교
4-4. roc 그래프 한 plot에 겹쳐그리기

 

4-2는 모두 범주형 변수였고 30회차에 나온 형식이랑 유사해서 기출 풀이해놓은 거 토대로, 카이제곱으로 잘 구현함

 

4-3은 유의한 게 2?3?개 있었던 것 같음

로지스틱 회귀, xgb 구현했는데 오즈비 뭔소린지 모르겠고 시간 없어서 넘어가고 xgb는 공학여부가 가장 큰 영향변수였음

 

4-4는 시간 없어서 못함 .. 4-1 전처리가 생각보다 너무 까다로웠고 갈피가 안잡혀서 시간 좀 날림 

4-4도 시간 있었으면 풀 수 있었을 것 같고 통계도.. 검토 한번이라도 했을듯 

 

머신러닝 두 데이터 모두 라벨인코딩 했었던 걸로 기억하고,,

75점 안넘게 하려는 진흥원의 계획.. 잘 느끼는 중입니다

 

 

 

통계분석

5. 사후분포 평균 (5점)
사전분포가 정규분포인데 ~ 어떤 값이 있다면 사후분포의 평균은 어떻게 되는지? 이런 문제였음

 

베이지안 활용해야한다고 아는 거 쥐어짜내고 발악해서 서술함

문제는 못풀었는데 베이지안의 개념, MCMC 개념 등 적음 ㅋㅋㅋ

이것도 부분점수 있었으면 ..

 

 

6. 다중회귀 관련 (총 10점?)
sales, TV, ?, Newspaper 칼럼으로 이뤄진 데이터

6-1. 다중회귀 모델 구현
6-2. 회귀계수 유의하지 않은 변수 제거와 이유 설명
6-3. 다중공선성 확인 (검정통계량)

 

6번은 어렵진 않았음. 유의하지 않은 변수가 Newspaper였고 VIF로 다중공선성 확인했음.

문제에서 검정통계량을 제시하라고 해서 내가 쓰는 라이브러리 말고 검정통계량과 유의확률이 함께 나오는 라이브러리가 있나? 했는데 vif 자체가 다중공선성에 관련한 '검정통계량'이었다. (추후 포스팅 주제로,,)

 

7. 코크란 Q 검정 (이라고 생각함) 
5개의 프로젝트가 있는데 프로젝트 간 차이 검정?
데이터 칼럼이 각각 0, 1로 구성되어있었고
데이터프레임은 아래와 같은 형식이었음 (내 기억엔)

id A B C D E
숫자 0 1 1 1 0
숫자 1 0 1 0 0

7-1. 가설 설정
7-2. 검정 시행, 유의확률 및 검정통계량 구하기
7-3. 기각여부 

 

논란(?)의 7번.

일단 이항변수가 3개 이상이므로 코크란 q 검정을 쓰는 게 맞다는 의견이 많았다. 나도 코크란 Q로 구현을 했고, 귀무가설을 기각하지 않는다는 결과가 나왔었다.

 

중요한 건 대응과 독립의 개념이다. 어떤 분이 범주형 3개 이상이고, 독립이라서 동질성 검정을 했다고 하셔서 나도 순간 헷갈려서 데이터프레임을 곰곰히 생각해보았다. 

 

이항변수가 3개 이상이면서 독립일 때는 카이제곱 동질성 검정을 하고,

이항변수가 3개 이상이면서 대응일 때는 코크란 Q 검정을 한다고 한다.

 

내 생각엔, 한 사람(id)에게서 나온  a ~ e 프로젝트 데이터이므로 '대응'된 데이터가 아닐까 싶다.

따라서 코크란 Q 검정 방법이 적절하다고 본다. (내 생각이 맞는지는 점수가 인증해줄 예정..)

 

 

 

8. 포아송 분포 관련 : 유기견이 매주 2.2마리 발생
8-1. 다음주에 한 마리도 버려지지 않을 확률
8-2. 다음주에(?) 적어도 2마리 버려질 확률

 

시험장에서 이 문제 너무 쉬워서 당당하게 풀이 방법도 서술하고 풀고 나왔는데..

참고한 자료의 풀이 코드를 그대로 복붙해서 8-2 답이 0.8로 나옴. ㅋ 멘붕와서 8-1도 코드 수정했는지 기억이 안남..

당당하게 아는 걸 실수로 틀린 거라 내 자신이 너무 바보같아서 매일매일 고통에 힘겨워 하는 중

부분점수 주시면 좋겠네요 .... 사전점수 나올때까지 매일 울고있을 듯 

 

 


 

부분점수 알차게 받아서 76점..으로 합격하길 ㅠ-ㅠ

점수 나오면 하단에 추가하겠습니다... 합격 딱 기다려,, 

 

(* 문제 있을 시 수정하겠습니다)

728x90