728x90

Review
참고 포스팅 : 

2023.01.22 - [Records/Certificate] - [자격증] 빅데이터분석기사 필기 합격 후기(책 추천 / 공부 기간 등)

 

[자격증] 빅데이터분석기사 필기 합격 후기(책 추천 / 공부 기간 등)

안녕하십니까, 간토끼입니다. 오늘은 최근에 취득한 빅데이터분석기사 자격증의 필기 시험 합격 후기에 대해 작성해보겠습니다. ADP(데이터분석전문가) 필기를 취득한지 약 1달 만에 이어서 시

datalabbit.tistory.com


안녕하십니까, 간토끼입니다.
오늘은 지난 포스팅에 이어 빅데이터분석기사 실기 합격 후기에 대해 다뤄보겠습니다.

아무래도 빅데이터분석기사 시험의 특성상 비전공자의 비율이 높을 거라 생각합니다.
요즘 데이터를 강조하지 않는 기업이 없을 정도니깐요.
 
필기는 문제은행의 성격도 있고 진입 장벽이 상대적으로 높지가 않지만,
아무래도 비전공자분들이 부담을 느끼시는 분야가 실기(작업형)일 거라고 생각합니다.
Python이든 R이든 평소 다뤄본 분들이라면 접근하는 게 어렵지 않겠지만,
처음 프로그래밍을 하시는 분들이라면 막막하실 부분이 많겠죠.
 
우선 저는 R을 사용했습니다.
학부 때 R을 거의 쓰다보니 R이 편해서 R을 선택했는데, 생각보다 파이썬의 비중이 훨씬 높더라고요?
개인적으로는 R을 추천합니다만 ... 모르겠네요. 프로그래밍 언어는 역시 성향 차이인 것 같습니다.
아무튼 R을 이용한 후기를 작성해보겠습니다.
 
제가 사용한 책은 다음과 같습니다. ^^

2023.06.12 - [Records/Book] - [서평] 데이터에듀 2022 빅데이터분석기사 실기 with R(윤종식 저/데이터에듀)

 

[서평] 데이터에듀 2022 빅데이터분석기사 실기 with R(윤종식 저/데이터에듀)

안녕하십니까, 간토끼입니다. 오늘은 데이터에듀에서 제공받은 2022 빅데이터분석기사 실기 with R에 대한 서평을 작성해보도록 하겠습니다. 사실 제공받은지는 꽤 됐는데요. 심지어 이 책을 이용

datalabbit.tistory.com

 

728x90

 

1. 시험 과목 - 작업형 1
제가 시험 봤을 제5회 실기 시험에서는 과목이 3과목이었습니다.
필답형, 그리고 작업형 1,2였는데요.
유감스럽게도 이번 시험부터는 필답형이 작업형 3으로 대체돼서 시행이 되더라고요.
작업형 3은 통계적 가설 검정이던데 ... 사실 어려운 파트는 아닙니다. 하나씩 접근해볼게요.
 
필답형은 빅데이터분석기사 필기 이론 내용이 출제됐었습니다. 그냥저냥 어려울 거 없이 용어의 정의나 개념 정도만 외우면 충분했습니다.
이제 안 나올 시험이니 ... 넘어갈게요.
작업형 1은 데이터를 수집하고 전처리하는 걸 평가하는 과목입니다.
전처리가 중점이 될텐데요. 데이터를 적절히 변환해서 문제에서 요구하는 조건에 맞는 기술통계량을 추출하면 되는 과목입니다.
그래서 이 과목에서는 R의 기본함수들을 적절히 잘 사용하는 것이 중요합니다.
예를 들어 문제가
"A 데이터에서 B 변수에 대해 내림차순으로 정렬한 후 홀수번째 레코드들의 평균과 짝수번째 레코드들의 평균의 차를 구하여라 (단 소수점 셋째자리까지 반올림하여 표현)"
라는 문제가 나온다면 기본 함수만으로 충분히 해결할 수 있습니다.
(1) B 변수를 별도의 벡터로 추출 ( data1 = A\$B # A라는 데이터프레임에서 B라는 변수를 선택)
(2) 내림차순으로 정렬 (data1 = sort(data1, descreasing = T) #data1을 sort 함수를 활용하여 내림차순 정렬)
(3) 홀수번째, 짝수번째 인덱스 생성
      odd = seq(1, length(data1), 2) #1부터 data1의 길이(데이터 개수)까지 2씩 더해주는 등차수열 함수(1,1+2, 1+2+2, ...)
       even = seq(2, length(data1, 2)  #2부터 data1의 길이(데이터 개수)까지 2씩 더해주는 등차수열 함수(2,2+2, 2+2+2, ...)
(4) 평균차 계산
       result = round( mean(data1[odd]) - mean(data1[even]), 3) #평균차를 계산하고, 이를 소수점 셋째자리까지 반올림하여 표현)
한번 작업형 1과목의 예시 문제를 풀어보았는데요.
보시다시피 여기서 활용된 함수는 기본 함수들밖에 없습니다.
벡터형으로 추출하는 방법, sort함수를 이용해 정렬하는 방법, seq함수를 이용해 홀수, 짝수 인덱스 벡터를 만드는 방법, 이를 인덱스로 활용하여 홀수번째, 짝수번째 데이터를 추출해 평균(mean)을 구하는 방법, 평균차를 구한 값을 소수점 n째자리에서 반올림하는 방법 ...
이처럼 별도의 패키지를 사용하지 않고도 기초 함수만 사용하여 푸는 문제들이 대다수입니다.
 
개인적으로는 교재 속 모의고사, 연습문제 등 문제 위주로 풀어보시면서 자주 사용되는 기초 함수를 익히실 것을 추천드립니다.
어차피 이런 유형의 특성상 특정 교재의 문제 은행만 본다고 같은 문제가 나오지도 않고요.
다만 자주 사용되는 함수는 분명히 있습니다. 평균, 표준편차 등 기초통계량을 구하는 함수부터 특정 조건에 맞는 행들을 추출하는 함수, 정렬하는 함수 등 ...
익숙한 함수들을 얼마나 잘 다루냐가 이 과목의 관건일 것 같습니다. 어차피 통계 기법이나 머신러닝 등 어려운 개념을 묻는 과목은 아니니깐요.
이런 기초 함수들을 유기적으로 활용하는 방법을 익히시는 게 중요하지, 개념별로 독립적으로 공부하는 건 오히려 시간만 오래 걸릴 것 같습니다.
그냥 문제 위주로 풀면서 빈출 함수를 익히세요. 그리고 막히면 과감하게 구글링이나 답지를 보면서 문제 내에서 각 함수들이 활용되는 방법, 문법 등에 대해 익히시면서 문제의 흐름에 대해 기억하세요.
 
저는 3문제 중 1문제를 틀렸습니다. ㅋㅋ
시험 자체가 어렵진 않았는데, 평균을 구하는 문제였나? 전처리를 하다가 값이 0인 행들은 제외하고 평균을 구하는 문제였던 것 같은데 제가 그 조건을 놓치고 그냥 평균을 구했거든요.
다 풀고 나서 지인이랑 얘기하다가 값이 0인 행들을 고려하지 않고 그냥 평균을 산출해서 ... 아 망했다 싶었는데 역시나 한 문제 틀렸더라고요 ㅋㅋ
꼼꼼하게 보시는 걸 추천드립니다...
 
2. 시험 과목 - 작업형 2
아무래도 작업형 1보다는 2를 어려워하는 분들이 많을 거라 생각합니다.
사실 개인적으로는 작업형 1보다는 2가 더 쉽다고 생각합니다(?)
어떤 문제가 나올지 모르는 작업형 1보다는 오히려 문제 유형도 명확히 주어져있고, 정해진 틀대로만 따라가면 되거든요.
(앞으로 나올 의견은 지극히 주관적인 생각입니다.)
먼저 공식 홈페이지에 있는 시험 주요내용을 살펴보죠.

이 두 파트가 작업형 2에 출제되는 항목입니다.
(1) 분석모형 선택하기
Target 변수의 유형에 따라 분류 모형을 사용할 건지, 회귀 모형을 사용할 건지 결정하시면 됩니다.
저는 개인적으로 분류든 회귀든 RandomForest 모델을 추천합니다.
이유는?
첫 번째로 R에서 사용하기 굉장히 간편합니다. HyperParameter를 별로 만질 게 없습니다.
두 번째로 어떤 데이터든 로버스트하게 적용이 가능하면서 좋은 성적을 낼 수 있습니다. 어중간하게 다른 모델을 쓸 바엔 랜덤포레스트를 쓰는 게 점수도 잘 나오고 ... 꽤나 보장이 되는 모델입니다.
세 번째로 분류든 회귀든 코드가 같아서 헷갈릴 우려도 없습니다. Target 변수의 자료형에 따라 알아서 모델링을 해줍니다.
그리고 개인적으로 느낀 거지만 ... 좀 더 좋은 모델을 써서 스코어를 높인다고 해도 시험 성적에 유의미한 영향을 미치지는 않는 것 같습니다.
개인적으로 빅데이터분석기사 시험의 목적은 데이터 분석의 흐름을 잘 구현할 수 있냐, 없냐를 보는 거라고 생각해요.
집을 짓는 거에 비유를 하자면,
일단 사람이 살 수 있는 집을 만들 수 있냐, 없냐? -> 빅데이터분석기사의 목적
집은 당연히 만드는 거고 ... 어떤 재료를 쓸지, 인테리어는 어떻게 할지, 방은 몇개를 쓸지, 싱크대는 어떤 회사의 제품을 할지 ... -> 스코어를 높이는 튜닝의 영역 (전문 영역)
그래서 우리가 해야하는 건 전자입니다. 일단 집을 짓는 것만 보여주면 되는 거죠!
여러 모델을 사용해서 그중 점수가 좋은 모델을 선택하는 것? 이렇게 하면 당연히 좋죠.
하지만 모델만 바꿔서 점수를 높인다고 데이터 분석을 잘하는 사람일까요? 아니죠 ... 그래서 굳이 그럴 필요가 없다는 걸 시험 준비하면서 느꼈습니다.
그만큼 빅데이터분석기사의 전문성이 높지 않음을 방증하는 셈이지만요 ... ㅠㅠ
 
그래서 결론은 그냥 여러 모델 공부할 필요도 없이 RandomForest 모델을 사용하시기를 권고드립니다.
어차피 동일한 조건이라면 랜덤포레스트가 웬만하면 점수 정말 잘 나와요.
 
(2) 분석모형 구축하기
주어진 데이터를 살펴보고, 전처리하는 단계입니다.먼저 설명변수와 반응변수로 구분해서 살펴보시고,
str과 summary 함수를 이용해 데이터의 구조를 살펴보시기 바랍니다. 결측치도 반드시 살펴보시고요.
그리고 문제에 주어지는 데이터 명세서를 보면서 필요한 변수와 필요하지 않은 변수를 구분해서 제거할 변수는 과감히 제거하는 것도 좋은 방법입니다.
결측치가 과도하게 많은 변수는 삭제하시고, 인덱스처럼 의미없는 변수도 삭제하면 됩니다.
 
결측치가 있는 경우 결측치를 대체해주면 되는데요.
연속형 변수라면 평균, 중앙값 등 대표통계량을 이용해서 대체하거나 KNN 기법을 이용해 대체하는 것도 좋은 방법입니다.
하지만 우린 모델의 성능을 높이는 게 아니라 '기본만 하면 되기 때문에' 그냥 평균으로 대체해주는 게 좋습니다.
 
범주형 변수라면 최빈값을 이용하거나 마찬가지로 KNN 기법을 이용해서 대체하는데요.
머리 아프니 최빈값을 이용해서 결측값을 대체하는 데 의의를 둡시다.
 
그다음은 Feature Engineering을 해주면 되는데요. 어려울 거 없이 이것만 기억합시다.
 
만약 A가 범주형 변수? (변수명은 "예시"입니다!!)
-> 범주가 2개인 이진변수("Yes" or "No")
(1) X_ train\$A_1 = ifelse(X_ train\$A == "Yes", 1, 0) #Yes라면 1, 아니면 0테스트셋에 대해서도 똑같이 적용!
-> 범주가 3개 이상인 다범주 변수인 경우 Ex. 도시 -> 서울, 인천, 대구, 부산 등
(1) level = sort(unique(X_ train\$A)) #A변수의 라벨(Ex. 도시 -> 서울, 인천, 대구, 부산 등 라벨만 추출)
(2) X_ train\$A_1 = as.numeric(factor(X_ train\$A, levels = level))
#(1)에서 추출한 라벨을 바탕으로 A의 범주를 숫자로 변환테스트셋에 대해서도 똑같이 적용!
 
만약 A가 연속형 변수? (변수명은 "예시"입니다!!)
결측치 대체scale 함수를 이용한 스케일링만 잘해주셔도 무방하다고 생각합니다... 저도 이것만 했어요.
 
더 깊게 들어가면 EDA를 통해 변수 간의 관계, 분포 등을 파악해서 파생변수도 만들고 해야할 과정이 정말 많은데!!
시험시간안에 이걸 다 할 수도 없고요. 우리는 우선 "집만 지으면" 되니깐요. 너무 어려운 기법은 사용하지 않아도 무방해보입니다.
 
다음은 데이터를 분할해주시면 되는데요.
훈련 데이터셋, 검증 데이터셋, 테스트 데이터셋 이렇게 3개로 나누시면 됩니다.
나누는 과정은 교재에 잘 나와있으니 참고해보시고요.
 
마지막으로는 모델 학습을 해주면 됩니다!
RandomForest를 사용할 땐 2개의 Hyper Parameter만 신경써주면 되는데요. 바로 ntreemtry입니다.
랜덤포레스트를 간단하게 설명하면 앙상블 모형으로, 다수의 약한 분류기(결정트리)를 만들어내서 이를 바탕으로 평균 예측치를 출력해 동작하는 모형입니다.
정어리떼를 생각해보시면 됩니다. 정어리 한 마리는 잡아먹히기 딱 좋지만, 정어리떼가 모여있으면 거대한 물고기처럼 보이는 현상을 이용해 천적으로부터 살아남는다고 하죠? (사실 천적 입장에선 뷔페이지만요 ... 그저 비유입니다 ...)
 
아무튼 ntree는 이 약한 분류기(결정트리)의 개수고, mtry는 각각의 tree마다 몇 개의 feature를 사용할지 정하는 것입니다.
구체적으로 설명하기엔 ... 랜덤포레스트를 설명하는 포스팅은 아니니깐요.
일차적으론 우리가 가진 훈련 데이터셋을 바탕으로 임의의 ntree, mtry 값을 결정하시고 모델을 학습하시면 됩니다.
이후 검증 데이터셋으로 예측하여 스코어를 출력합니다.
이후 ntree, mtry 값을 조정하고 다시 예측하며 스코어의 변화를 살펴보시고 어느정도 점수가 잘 나오면 해당 모델을 제출하시면 됩니다.
 
어렵지 않습니다. 이정도 과정만 거쳐도 무난하게 만점을 받으실 수 있습니다.
(Target변수가 범주형인데 회귀모형을 쓰는 수준이 아니라면 ... )
 
저야 원래 전공자라 많은 시간을 할애하진 않았으나, 개인적으로 시험을 준비하면서 느낀 거지만 사회조사분석사 시험의 작업형과 유사하다고 느꼈습니다.

2020.09.07 - [Records/Certificate] - [자격증] 사회조사분석사 2급 취득 후기(실기) (책 추천 / 공부 기간 등)

 

[자격증] 사회조사분석사 2급 취득 후기(실기) (책 추천 / 공부 기간 등)

datalabbit.tistory.com

결국 기출문제의 정해진 틀에서 크게 벗어나지 않는다는 거죠. 문제를 풀어보시다보면 제가 강조하는 부분을 느끼실 거라 생각합니다.
 
결론은 너무 어렵게 생각하지 마시고, 제가 말씀드린 것처럼 "우선 집이라는 것을 지어보자"라는 핵심을 바탕으로 기본기에만 충실히 공부하실 것을 추천드립니다.

 
그리고 작업형 3 ... 문제를 보질 못했지만, 가설검정이라 해봐야 문제가 뻔합니다.
예를 들어 lm 함수를 사용해 회귀분석 모델링을 한다고 하면 summary로 결과를 출력하겠죠.
그러면 회귀계수의 의미를 해석하고, 각 변수의 t-value와 p-value를 보며 유의수준 5%(예시) 하에서 해당 변수가 통계적으로 significant한지, 혹은 모델의 f-value를 보고 모델 자체가 통계적으로 significant한지만 따져주면 되겠죠.
회귀분석이 아닌 t-검정, 카이제곱검정, 혹은 ANOVA 등의 기법이 나온다고 하더라도 기초통계 교재에서 쉽게 볼 수 있는 가설검정의 핵심만 잘 따라가면 전혀 어려울 게 없는 파트일 거라고 생각합니다.
2022.03.03 - [Statistics/Regression Analysis] - [회귀분석] 가설검정의 기초 개념

 

[회귀분석] 가설검정의 기초 개념

안녕하십니까, 간토끼입니다. 이번 포스팅은 회귀분석을 위한 가설검정의 기초 개념을 소개하겠습니다. 사실 회귀분석을 접하기 위해서는 기초통계학이 당연히 전제가 되어야 하는데요. 다만

datalabbit.tistory.com

2022.03.03 - [Statistics/Regression Analysis] - [회귀분석] 유의수준과 유의확률

 

[회귀분석] 유의수준과 유의확률

Review 참고 포스팅 : 2022.03.03 - [Statistics/Regression Analysis] - [회귀분석] 가설검정의 기초 개념 [회귀분석] 가설검정의 기초 개념 안녕하십니까, 간토끼입니다. 이번 포스팅은 회귀분석을 위한 가설검

datalabbit.tistory.com

2022.04.30 - [Statistics/Regression Analysis] - [회귀분석] 회귀계수의 유의성 검정

 

[회귀분석] 회귀계수의 유의성 검정

Review 참고 포스팅 : 2022.03.03 - [Statistics/Regression Analysis] - [회귀분석] 가설검정의 기초 개념 [회귀분석] 가설검정의 기초 개념 안녕하십니까, 간토끼입니다. 이번 포스팅은 회귀분석을 위한 가설검

datalabbit.tistory.com

혹여나 잘 기억이 나지 않는 분들은 제 블로그의 회귀분석 챕터만 다 읽어보셔도 쉽게 이해되실 거라 생각합니다.
 
제 블로그를 본 모든 분들이 시험 잘 보실 수 있도록 기원하겠습니다.
 
감사합니다.
잘 읽으셨다면 게시글 하단에 ♡(좋아요) 눌러주시면 감사하겠습니다 :)
(구독이면 더욱 좋습니다 ^_^)


 
- 간토끼(DataLabbit)
- University of Seoul
- Economics & Data Science

728x90

+ Recent posts