본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
빅데이터분석기사 실기시험
빅데이터 분석 실무 과목을 Python 또는 R 코드로 직접 풀어 검정하는 CBT 작업형 시험

빅데이터분석기사 필기에 합격하고 응시자격 서류 심사를 통과하면 응시할 수 있다. 과목은 '빅데이터 분석 실무' 하나이며 100점 만점에 60점 이상이면 최종 합격이다.

  • 검정방법 : 통합형(작업형), CBT
  • 시험시간 : 180분
  • 언어 : Python 또는 R 중 선택
  • 제6회(2023. 6. 24.)부터 기존 단답형 10문항을 없애고 작업형 제3유형으로 바꿨다.
유형 내용 문항 배점 답안
작업형 제1유형 데이터 전처리 (결측값·이상값 처리, 필터링, 집계, 스케일링, 날짜 처리) 3문항 30점 (각 10점) 계산 결과 값을 입력
작업형 제2유형 분류·회귀 모형 구축과 평가 1문항 40점 예측 결과를 지정한 형식의 CSV 파일로 제출
작업형 제3유형 통계 분석 (가설검정, 회귀계수 추정 등) 2문항 (소문항 포함) 30점 계산 결과 값을 입력
  • 제2유형은 제출한 예측값을 지정된 평가 지표(분류는 AUC, F1 등, 회귀는 RMSE 등)로 채점한다.
  • 시험 환경과 제출 방식은 회차마다 공지되므로 데이터자격검정 누리집의 체험환경으로 미리 익혀 둔다.

출제기준 대응

편집 원본 편집
주요항목 실기 유형 학습 문서
데이터 수집 작업 제1·2유형 (CSV 읽기) 파이썬 pandas, 데이터프레임
데이터 전처리 작업 제1유형 데이터 정제, 결측치, 이상치, 변수 변환, 파생 변수
데이터 모형 구축 작업 제2유형 랜덤 포레스트, 부스팅, 로지스틱 회귀, 선형 회귀
데이터 모형 평가 작업 제2유형 모형 평가, N-fold 교차 검증, 매개변수 최적화
통계 분석 제3유형 t-검정, 분산분석, 카이제곱 검정, 적합도 검정, 로지스틱 회귀, 상관 분석

작업형 제1유형

편집 원본 편집

pandas로 데이터를 가공해 한 개의 값을 구한다.

import pandas as pd
df = pd.read_csv("data.csv")

# 결측값 확인과 대체
df.isnull().sum()
df["age"] = df["age"].fillna(df["age"].median())

# 이상값 (IQR 기준)
q1, q3 = df["price"].quantile([0.25, 0.75])
iqr = q3 - q1
out = df[(df["price"] < q1 - 1.5 * iqr) | (df["price"] > q3 + 1.5 * iqr)]

# 조건 필터링과 그룹 집계
df[df["city"] == "서울"]["sales"].mean()
df.groupby("city")["sales"].sum().sort_values(ascending=False).head(3)

# 최소-최대 정규화, 표준화
from sklearn.preprocessing import MinMaxScaler, StandardScaler
df["x_mm"] = MinMaxScaler().fit_transform(df[["x"]])
df["x_z"] = StandardScaler().fit_transform(df[["x"]])

# 날짜 처리
df["date"] = pd.to_datetime(df["date"])
df["month"] = df["date"].dt.month
  • 자주 쓰는 함수 : isnull, fillna, dropna, quantile, groupby, agg, sort_values, nlargest, value_counts, merge, pivot_table, cut, to_datetime

작업형 제2유형

편집 원본 편집

학습용 데이터로 모형을 만들고 평가용 데이터를 예측해 제출한다.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score

train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")

y = train.pop("target")
# 범주형 변수 원-핫 인코딩 (학습·평가 데이터 열 맞추기)
all_x = pd.get_dummies(pd.concat([train, test]))
X, X_test = all_x[:len(train)], all_x[len(train):]
X, X_test = X.fillna(0), X_test.fillna(0)

# 검증 데이터로 성능 확인
X_tr, X_val, y_tr, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
model = RandomForestClassifier(n_estimators=200, random_state=42)
model.fit(X_tr, y_tr)
print(roc_auc_score(y_val, model.predict_proba(X_val)[:, 1]))

# 전체 학습 후 예측, 제출 파일 저장
model.fit(X, y)
pd.DataFrame({"pred": model.predict_proba(X_test)[:, 1]}).to_csv("result.csv", index=False)
  • 제출 파일의 열 이름, 행 수, 확률값·클래스값 여부는 문제의 요구대로 맞춘다. 형식이 틀리면 점수를 받지 못한다.
  • 분류 : RandomForestClassifier, LogisticRegression, 부스팅 계열 / 회귀 : RandomForestRegressor, LinearRegression
  • 데이터 분할, N-fold 교차 검증, 하이퍼파라미터 조정

작업형 제3유형

편집 원본 편집

scipy, statsmodels로 검정통계량·p-값·회귀계수 등을 구한다.

from scipy import stats
import statsmodels.formula.api as smf

# 정규성 검정
stats.shapiro(df["x"])

# 대응표본 / 독립표본 t-검정
stats.ttest_rel(df["before"], df["after"])
stats.ttest_ind(g1, g2, equal_var=False)

# 일원배치 분산분석
stats.f_oneway(g1, g2, g3)

# 카이제곱 독립성 검정
table = pd.crosstab(df["gender"], df["buy"])
stats.chi2_contingency(table)

# 선형 회귀와 로지스틱 회귀 계수
smf.ols("y ~ x1 + x2", data=df).fit().summary()
smf.logit("buy ~ age + income", data=df).fit().params
  • 제1유형은 결과 값 하나만 맞으면 되므로 중간 결과를 print로 확인하며 푼다.
  • 제2유형은 성능보다 제출 형식이 먼저이다. 기본 모형(랜덤 포레스트)으로 먼저 제출 파일을 만든 뒤 개선한다.
  • 제3유형은 scipy.stats와 statsmodels의 결과 해석(검정통계량, p-값, 계수, 오즈비)을 익힌다.
  • 시험 환경에서는 help()와 dir()로 함수 사용법을 확인할 수 있다.