본문 바로가기
Machine Learning

Cross Validation(교차 검증)

by 찐남 2022. 6. 5.

Cross Validation(교차 검증) ?

Cross Validation(교차 검증)은
모델링 이후 모형에 대한 정확도를
검증하는 하나의 방법론입니다.

동일한 데이터를 여러개(n 개)로 분할하여
모델에 대한 학습과 검증을 n번 반복하여
모델의 정확도를 검증합니다.

아래의 그림을 보시면,
쉽게 이해하실 수 있을 거예요.

<Cross Validation 기본 개념도>


훈련 데이터를 n개로 분할합니다.
n-1개는 모델을 학습하는 데 사용되고,
나머지 1개는 모델의 정확도를
평가하는 데 사용됩니다.

모델의 정확한 성능 검증을 위해
n번 반복하여 산출된 정확도의
평균을 계산합니다.

흔히,
n - fold Cross Validation으로
말하기도 합니다.

Cross Validation(교차 검증) 사용 예시

파이썬의 싸이킷런 패키지에서 제공하는
함수를 이용하여 간단하게 사용해 보겠습니다.


import pandas as pd
bank = pd.read_csv("C:/bank-full.csv", sep = ";")
bank.head()
<출처: http://archive.ics.uci.edu/ml/datasets/Bank+Marketing>

# 데이터 관측치 및 feature 수 확인
bank.shape

# 데이터 기본 정보 확인
bank.info()

missig data는 없고, 범주형 데이터가
있네요(Dtype = object).

y가 target 변수입니다.

ML 알고리즘 적용을 위해
독립변수(X)와 종속변수(y)를 구분하고,
범주형 변수는 one-hot encoding로
더미 변수로 변환하겠습니다.

# x변수 저장 데이터 셋 생성
feature = pd.get_dummies(bank.iloc[:,:-1])

# y변수 저장 데이터 셋 생성
target = bank.iloc[:,-1]

# 범주형 변수의 target을 수치형으로 변환
target = target.apply(lambda x: 0 if x == "no" else 1)

# target 건수 확인
target.value_counts()

# 로지스틱 회귀분석 모형 활용을 위한 패키지 로드
from sklearn.linear_model import LogisticRegression

# Cross Valiation 사용을 위한 패키지 로드
from sklearn.model_selection import cross_val_score

# 로지스틱 회귀 분석 모형 적합
logisticModel = LogisticRegression()

# 10 fold Cross Validation 수행
score = cross_val_score(logisticModel, feature, target, cv = 10)

accuracy = pd.DataFrame(score, index = [str(i)+"번" for i in range(1, 10 + 1)])
accuracy.columns = ["정확도"]
accuracyFinal = accuracy.T
accuracyFinal ["평균"] = accuracy.mean().values
accuracyFinal

반응형

댓글