머신러닝(Machine Learning) 후반전 - 데이터 스플릿(Data Split) 실습

728x90
반응형
머신러닝 후반전
데이터 스플릿(Data Split) → 모델 선택 및 학습 → 모델 검증 및 하이퍼파라미터 튜닝 → 성능 평가

 

데이터 스플릿을 통해 데이터를 나눌 수 있습니다.

서론

 

머신러닝은 우리가 일상에서 마주하는 다양한 문제를 해결하는 강력한 도구입니다. 추천 시스템에서부터 의료 진단, 자율 주행 자동차에 이르기까지 머신러닝은 다양한 분야에서 활용되고 있습니다. 그러나 이렇게 모델을 만드는 과정에서 중요한 한 단계는 바로 '데이터 스플릿'입니다. 데이터 스플릿은 머신러닝 모델을 학습하고 검증하기 위한 핵심적인 과정으로, 모델의 성능을 평가하고 일반화 능력을 향상시키는 데 큰 역할을 합니다.

 

머신러닝(Machine Learning) 후반전 - 데이터 스플릿(Data Split) 실습 과정을 통해 모델이 학습 데이터에 과적합되는 것을 방지하고, 동시에 새로운 데이터에 대해 잘 작동할 수 있는 모델을 만들 수 있습니다. 데이터 스플릿이 어떻게 작동하는지에 대해 살펴보겠습니다. 데이터 스플릿에 대한 전반적인 내용은 해당 글을 참고해주시길 바라겠습니다.

https://10yp.tistory.com/45

 

머신러닝(Machine Learning) 데이터 분할(Data Split) 기초

서론 머신러닝(Machine Learning) 데이터 분할(Data Split) 기초를 알아보겠습니다. 데이터 과학의 세계에서 데이터는 모든 것의 기초입니다. 이러한 데이터를 효과적으로 활용하고 이해하는 것은 인공

10yp.tistory.com

 

데이터 스플릿(Data Split)

 

test셋과 train 셋이 나눠져서 제공될 경우

X = train.drop(columns="Survived") # 독립 변수 행렬
y = train.Survived                 # 종속 변수 벡터

 

해당 방법과 같이 train 셋에 대해 전처리를 진행합니다.

 

하지만 대부분의 경우 test 셋과 train 셋이 나눠져 있지 않은 하나의 데이터만 주어집니다. 그럴 경우에는 아래와 같이 데이터 스플릿을 직접 해주어야 합니다.

from sklearn.model_selection import train_test_split

X = df.drop(columns="Survived") # 독립 변수 행렬
y = df.Survived                 # 종속 변수 벡터

X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=)

 

위 코드는 데이터를 훈련 세트, 검증 세트, 테스트 세트로 분리하는 과정을 보여줍니다.

이 경우에도 데이터 셋이 분리되어 있는 경우와 마찬가지로 독립 변수(X)와 종속 변수(y)를 구분하는 것은 동일합니다.

 

 

X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=)

 

이 부분은 이전에 훈련 세트로 분리된 데이터를 다시 훈련 세트(`X_train`, `y_train`)와 검증 세트(`X_val`, `y_val`)로 분리합니다.

`test_size=0.25`: 훈련 세트의 25%를 검증 세트로 사용하겠다는 것을 의미합니다.

`X_train, y_train`: 모델 학습에 사용됩니다. 훈련 세트를 통해 모델이 학습하고, 패턴을 찾아내게 됩니다.

`X_val, y_val`: 모델의 성능을 검증하는 데 사용됩니다. 검증 세트를 통해 학습된 모델이 얼마나 잘 작동하는지 평가하고, 모델의 하이퍼파라미터를 조정하는 데 사용됩니다.

`X_test, y_test`: 모델의 최종 성능을 평가하는 데 사용됩니다. 테스트 세트는 모델의 학습과 검증 과정에서는 절대 사용되지 않으며, 마지막에 모델이 실제로 얼마나 잘 작동하는지를 평가하는 데 사용됩니다.

`random_state`: 난수 생성을 위한 시드값을 지정하는 인자입니다. 이는 난수 생성의 결과를 일정하게 유지하려는 목적으로 사용됩니다.

예를 들어, random_state값을 지정하면 데이터를 분리하는 방법이 동일한 패턴을 유지하게 됩니다. 즉, 같은

 

`random_state` 값을 사용하면, 함수를 여러 번 호출하더라도 동일한 결과를 얻을 수 있습니다. 이는 모델의 성능을 평가하거나 비교할 때 일관된 기준을 마련해주므로, 결과의 신뢰성을 높이는 데 도움이 됩니다.

 

`random_state` 값을 지정하지 않으면, 함수를 호출할 때마다 다른 결과를 얻게 됩니다. 이는 데이터의 무작위성을 확보하는 데 유리할 수 있지만, 결과의 재현성이 떨어질 수 있습니다. 따라서 `random_state`는 결과의 재현성을 보장하고자 할 때 지정하는 것이 좋습니다. 이를 통해 동일한 조건에서의 모델 성능을 비교하거나, 실험 결과를 다른 사람과 공유할 때 유용하게 사용할 수 있습니다.

 

재현성을 위해 고정된 값을 사용하곤 하는데, 이때 종종 사용되는 값들은 다음과 같습니다.

 

1. `random_state=42`: 42는 과학계나 엔지니어링 분야에서 종종 사용되는 숫자입니다. 대표적으로 "생명, 우주, 그리고 모든 것에 대한 궁극적인 질문의 해답"이 42라는 것에서 유래했습니다. 이는 더글라스 아담스의 과학 판타지 소설 시리즈 '은하수를 여행하는 히치하이커를 위한 안내서'에서 나온 말입니다.

2. `random_state=0` or `random_state=1`: 0과 1은 가장 기본적인 숫자로, 간단하게 사용할 때 흔히 쓰입니다.

3. `random_state=123` or `random_state=1234`: 이것들 역시 간단하고 기억하기 쉬운 숫자로서 많이 사용됩니다.

 

중요한 것은 `random_state` 값 자체가 어떤 특별한 의미를 갖는 것이 아니라, 동일한 실험을 반복하거나 결과를 재현할 때 동일한 값을 사용하는 것이라는 점입니다. 따라서 사용자가 임의로 선택하여 사용하되, 실험의 재현성을 위해서는 선택한 값을 일관되게 사용해야 합니다.

 

결론

 

머신러닝(Machine Learning) 후반전 - 데이터 스플릿(Data Split) 실습에 대해 알아보았습니다. 데이터 스플릿은 모델 학습에 있어서 중요한 과정으로, 이를 통해 모델의 과적합을 방지하고, 일반화 성능을 평가할 수 있습니다. 우리는 실습을 통해 데이터를 훈련, 검증, 테스트 세트로 분리하는 과정을 직접 수행해보았습니다. 각 세트는 모델 학습, 성능 검증, 최종 성능 평가에 각각 활용되며, 이 과정을 통해 모델이 학습 데이터에 과적합되는 것을 방지하고, 모델의 일반화 성능을 평가하는데 사용됩니다.

 

머신러닝은 이처럼 단계적인 접근이 필요한 분야입니다. 각 단계마다 주의 깊게 고려해야 할 요소들이 있으며, 이 중에서도 데이터 스플릿은 모델의 성능을 결정짓는 핵심적인 역할을 합니다. 이번 실습을 통해 데이터 스플릿의 중요성과 활용법을 이해하였기를 바랍니다.  

반응형