9월초부터 11월말까지 매일 공부했습니다.
시험순서(빅분기필기-ADsP-빅분기실기)
시험이 한달 간격으로 있어서 준비하기 좋았습니다. 전공은 로봇공학으로 통계쪽 지식은 전혀 없는 상태였고 프로그래밍 언어는 C,C++만 주로 했었습니다.
10월 1일 빅분기 필기
9월 초부터 빅분기 필기를 공부하며 파이썬과 R 기초를 공부했습니다. 파이썬과 R은 C언어를 알고있으니 쉬운편이였는데 빅분기 내용은 대부분이 처음보는 내용이여서 외우는데 꽤 고생좀 했습니다. 시험 전날까지 파이썬, R은 하루에 3시간 정도씩 해서 끝냈고, 빅분기는 1~2시간 정도씩 공부했습니다. 필기 내용을 100% 이해(이해하려고 유툽영상, 정리된 내용 찾아 따로 공부 했으나 50%정도 밖에 이해를 못했습니다)는 하지 못한채 단순히 외우기만 해서 시험마치고 나온 순간에도 합격 자신이 없었습니다. 검토하면서 답안지에 옮겨적었는데 그때 답을 7개정도 고쳐쓴게 6개가 맞아서 70점대로 합격했습니다.
10월 29일 ADsP 필기
카페에서는 ADsP내용이 빅분기내용에 포함된다 하여 공부 안해도 60점은 충분히 넘긴다는 글을 많이 봤습니다. 그래서 공부 하나도 안하고 기출문제를 풀어봤는데 딱 60점 커트라인, 2과목은 과락, 주관식은 10문제중 2문제 맞췄습니다. ADsP가 범위가 좁은대신 문제가 더 깊이 있고 문제자체도 한번 꼬아서 낸 느낌이였습니다. 이대론 시험보면 안되겠다 싶어서 하루에 2~3시간 정도씩 책(이론) 2주 공부하고 나머지 2주동안 18회~34회 기출을 달달 외우며 부족한 이론부분만 추가로 공부했습니다. 덕분에 ADsP는 90점대로 합격했습니다. 실제 시험자체는 쉬웠습니다. 기출 10회정도 달달 외워갔으면 고득점 가능합니다.
12월 3일 빅분기 실기
ADsP 시험 다음날부터 바로 공부 시작했습니다.
언어 선택 (R vs Python)
둘다 기본적으로 할 수 있는 상황에서 선택 고민만 3일은 했습니다. 데이터포럼 카페에서도 저와 같은 사람이 많았고 대부분의 댓글들이 시험용은 R 업무,범용성은 파이썬이라고 했습니다. 저는 둘다 기초는 있었기 때문에 공식 예제문제를 두 언어로 풀어봤습니다. 여러 사람들이 말했듯이 시험용으론 R이 편하다 느껴졌고 dplyr 덕분에 난이도도 조금 더 쉽다고 느껴졌습니다. 시험환경(구름IDE)에서 R은 에러가 어디서 발생했는지 메시지가 안뜬다는 치명적인 단점이 있지만 '준비한대로 실수만 안하면 되지' 하며 제 자신을 믿고 쭉 R로 연습했습니다.
공식 예제 문제 : https://dataq.goorm.io/exam/116674/%EC%B2%B4%ED%97%98%ED%95%98%EA%B8%B0/quiz/2
단답형 10문제(30점)
꿀팁으로 R에서 ??키워드와 help(함수)를 실행시키면 설명이 나옵니다. 단답형 문제중 F1score 구하는 공식을 갑자기 헷갈려서 작업형으로 넘어가 help(confusionMatrix)를 쳐서 공식을 확인했습니다.
필기 공부한지 얼마 안지났기 때문에 시험 일주전에 공부 시작했습니다. 각 과목별로 나올만한 것들을 뽑아서(약 450문제 정도) 엑셀로 정리하고 외웠습니다.
작업형1 3문제(30점)
kaggle사용법 : https://blog.naver.com/yimstar9/222945012249
구글 코랩(https://colab.research.google.com/notebook#create=true&language=r)도 괜찮지만 세션 연결이 끊어지면 설치한 패키지, 데이터셋이 사라져서 다시 인스톨하고 데이터를 업로드 해줘야 하는 귀찮음이 있습니다. 반면 캐글은 패키지를 설치할 필요 없고 데이터셋도 기본적으로 문제에 업로드 되어 있어서 바로 불러올 수 있어서 편합니다.
먼저 DataManim(https://www.datamanim.com/dataset/R/tutorial.html) 사이트에서 전처리 하는 방법 100문제를 눈으로 보면서 익혔습니다. 이해 안되는 부분은 직접 소스를 작성해 돌려봤습니다.
그리고 유투버 퇴근후딴짓(https://www.youtube.com/@ai-study)님의 kaggle(https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr)에서 작업형1을 3회독 했습니다.
kaggle로 문제를 풀면서 구글링을 조금이라도 했던 내용은 엑셀에 정리(다음에 또 구글링 안하고 엑셀만 봐도 알 수 있을 정도로)했습니다.
kaggle의 문제가 실제 시험에 비해 난이도가 조금 더 있는 편입니다. 전처리 방법과 문제 유형을 익힌다 생각하고 공부하시면 돼요.
작업형2 1문제(40점)
문제가 회귀 문제인지 분류 문제인지 파악부터 해야 합니다. 종속변수로 판단하는데 회귀문제는 종속변수가 연속형변수이고 분류문제는 범주형변수 입니다. 데이터는 train, test 2개로 주어지며 train데이터에만 종속변수(답)가 포함되어 있습니다.
연속형변수 : 연봉, 집값, 보험료, 횟수 등등
범주형변수 : 합격/불합격, 성별, xx여부 등등
EDA
독립변수에 대한 설명이 문제에 주어집니다. 시험환경(구름IDE)으로는 시각화가 안되기 때문에 데이터의 구조를 파악하는 파이썬의 info(), R의 str(), 데이터의 요약정보를 볼 수 있는 파이썬의 describe(), R의 summary()을 잘 활용해야 합니다. EDA를 통해서 전처리 할 변수를 선택합니다.
전처리(결측치,이상치,형변환,스케일링)
첫번째 컬럼의 ID를 제거 해줍니다. fillna(), ifelse(is.na(),x,y) 함수를 이용하여 결측치를 처리하고 범주형 변수는 라벨인코딩or원핫인코딩, factor형 변환을 이용합니다. 수치형 변수들은 범위가 클 경우 min-max 정규화를 이용해 범위를 0~1로 바꿔줍니다. 또는 log변환도 좋습니다.
모델 선택(학습모델 평가)
홀드아웃 교차검증을 통해 학습모델 성능 평가를 합니다. 문제에서 주어진 train데이터를 다시 train,test 7:3 비율로 나눕니다. 나눈 train셋으로 모델을 학습시키고 test셋으로 모델 평가를 합니다. 공부단계에서는 다양한 모델을 해보는게 좋습니다.
<모델>
회귀문제-polyregression,SVR, RandomForest, XGBregression 등등
분류문제-RandomForest,SVM, nnet,XGBoost,의사결정나무,로지스틱회귀 등등
적당한 파라미터 튜닝으로 각 모델을 생성하고 각각 평가를 합니다.
<평가지표>
회귀모델-RMSE,MSE,R2 등등
분류모델-ROC-auc, Accuracy, Recall, F1score 등등
평가지표가 제일 우수한 모델을 최종모델 선택합니다.
시험만을 위한 모델로는 RandomForest가 가장 인기가 많습니다. 회귀,분류 둘다 가능하고 성능도 우수하기 때문입니다. 시험용으로 RandomForest 모델만 공부해서 시험쳐도 충분히 만점 받으실 수 있습니다.
모델 생성 및 예측(최종 모델 학습)
문제에서 주어진 전처리된 train 데이터로 모델을 생성합니다. 그리고 test데이터 셋을 예측합니다. 예측결과는 회귀는 수치, 분류는 level값 또는 level의 확률값으로 출력 할 수 있습니다. 문제에 명시된 최종결과 제출 형식대로 출력하면 됩니다.
제출
최종 결과를 수험번호.csv 파일로 만들어서 제출하면 시험은 종료됩니다.
파이썬 ,R 기본 코드입니다.
2022.12.12 - [분류 전체보기] - R,Python 베이스라인, 기본코드
파이썬 기본코드
# 라이브러리 추가
import pandas as pd
import sklearn
from sklearn.ensemble import RandomForestClassifier
# 데이터 불러오기
X_test = pd.read_csv("data/X_test.csv")
X_train = pd.read_csv("data/X_train.csv")
y_train = pd.read_csv("data/y_train.csv")
# ID 컬럼 버림
X_train.drop('id',axis=1,inplace=True)
X_test.drop('id',axis=1,inplace=True)
# 학습 및 예측
model = RandomForestClassifier()
model.fit(X_train, y_train['Outcome'])
predictions = model.predict(X_test)
# csv 파일 만들기
result = pd.DataFrame({'idx': X_test.index, 'Outcome': predictions})
result.to_csv('수험번호.csv', index=False)
R 기본 코드
# 라이브러리 추가
library(randomForest)
# 데이터 불러오기
X_train<-read.csv("../input/big-data-analytics-certification-kr-2022/train.csv")
X_test<-read.csv("../input/big-data-analytics-certification-kr-2022/test.csv")
# ID컬럼 버림
train<-X_train[,-1]
test<-X_test[,-1]
# 학습 및 예측
m2_rf<-randomForest(Segmentation~.,train,ntree=200)
p2_rf<-predict(m2_rf,test)
# csv 파일 만들기
result<-cbind(as.character(df_test[,1]),as.character(p2_rf))
colnames(result)<-c("ID","Segmentation")
write.csv(result,"수험번호.csv",row.names=F)
kaggle에서 풀어본 문제 소스들 github에 저장되어 있습니다.
'자격증 > 빅분기 실기' 카테고리의 다른 글
빅데이터분석기사 5회 실기 합격 후기 빅분기 (19) | 2022.12.16 |
---|---|
kaggle로 공부법(독학) (1) | 2022.12.12 |
빅분기 실기 5회 후기 및 복원문제,가답안 (0) | 2022.12.12 |