본문 바로가기

Study Information Technology

기계 학습 파이프라인 구축 데이터 전처리부터 모델 평가까지

728x90
반응형

기계 학습 파이프라인 구축: 데이터 전처리부터 모델 평가까지

Overview

기계 학습(ML) 파이프라인은 데이터 전처리, 모델 학습, 평가의 단계로 구성됩니다. 이 과정을 통해 데이터에서 유용한 정보를 추출하고, 예측 모델을 학습시킨 후, 모델의 성능을 평가하여 최적의 결과를 얻습니다. 아래에서는 이 파이프라인의 각 단계를 깊이 있게 설명하겠습니다.

1. 데이터 전처리

데이터 전처리는 모델의 성능에 큰 영향을 미치는 중요한 단계입니다. 전처리는 원시 데이터를 모델 학습에 적합한 형식으로 변환하는 과정입니다. 이 단계에는 다음과 같은 작업이 포함됩니다:

1.1 데이터 정제

원시 데이터에는 결측값, 이상치, 오류 등이 포함될 수 있습니다. 이러한 문제를 해결하기 위해 다음과 같은 방법을 사용할 수 있습니다:

  • 결측값 처리: 결측값은 삭제하거나 대체할 수 있습니다. 예를 들어, pandas의 fillna() 함수를 사용하여 평균값, 중앙값, 또는 다른 통계적 값을 사용하여 결측값을 대체할 수 있습니다.
import pandas as pd
df = pd.read_csv('data.csv')
df.fillna(df.mean(), inplace=True)
  • 이상치 처리: 이상치는 데이터의 분포에서 벗어난 값을 의미합니다. 이를 식별하고 처리하는 방법으로는 Z-점수(Z-score) 기반 방법이나 IQR(Interquartile Range) 방법이 있습니다.
from scipy import stats
df = df[(np.abs(stats.zscore(df)) < 3).all(axis=1)]

1.2 데이터 변환

데이터를 모델이 이해할 수 있는 형태로 변환하는 과정입니다. 다음과 같은 작업이 포함될 수 있습니다:

  • 정규화 및 표준화: 데이터를 특정 범위로 조정하거나 평균 0, 표준편차 1로 변환합니다. Scikit-learn의 StandardScalerMinMaxScaler를 사용할 수 있습니다.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_data = scaler.fit_transform(df)
  • 범주형 변수 인코딩: 범주형 데이터를 수치형으로 변환하는 작업입니다. OneHotEncoderLabelEncoder를 사용할 수 있습니다.
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
encoded_data = encoder.fit_transform(df[['category_column']])

2. 모델 학습

모델 학습 단계에서는 전처리된 데이터를 사용하여 기계 학습 모델을 학습시킵니다. 이 단계에서는 데이터의 특징에 맞는 적절한 모델을 선택하고 하이퍼파라미터를 조정합니다.

2.1 모델 선택

데이터의 특성에 따라 적절한 모델을 선택합니다. 예를 들어:

  • 회귀 문제: 선형 회귀, 랜덤 포레스트 회귀, XGBoost 회귀 등
  • 분류 문제: 로지스틱 회귀, 서포트 벡터 머신(SVM), 결정 트리, 신경망 등
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)

2.2 하이퍼파라미터 조정

모델의 성능을 극대화하기 위해 하이퍼파라미터를 조정합니다. GridSearchCVRandomizedSearchCV를 통해 최적의 하이퍼파라미터를 찾을 수 있습니다.

from sklearn.model_selection import GridSearchCV
param_grid = {'C': [0.1, 1, 10]}
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

3. 모델 평가

모델 평가 단계에서는 학습된 모델의 성능을 측정하고, 모델이 실제 환경에서도 잘 작동할 수 있는지 확인합니다.

3.1 평가 지표

모델의 성능을 평가하는 지표는 문제의 유형에 따라 다릅니다. 다음은 몇 가지 주요 지표입니다:

  • 회귀 문제: 평균 제곱 오차(MSE), 평균 절대 오차(MAE), R^2 점수
  • 분류 문제: 정확도, 정밀도, 재현율, F1 점수, ROC 곡선
from sklearn.metrics import accuracy_score, classification_report
y_pred = model.predict(X_test)
print(accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))

3.2 교차 검증

모델의 일반화 성능을 평가하기 위해 교차 검증을 수행합니다. 이는 데이터를 여러 개의 폴드로 나누어 모델을 평가하는 방법입니다.

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)
print(scores)

참고문서

728x90
반응형