본문 바로가기
python

[데이터 분석] 모델 학습부터 K-Fold 교차 검증까지 이론 잡기!

by 포 키 2023. 8. 17.
728x90

 

데이터 분석을 수행하려면, 원하는 정보를 담고 있는 데이터 파일을 사용하여 머신러닝 모델을 생성하고 검증하는 과정을 통해 분석을 진행한다.

초반에 배우면서 든 생각은 데이터 분석은 그냥 파이썬 라이브러리를 활용해서 시각화 시켜서 보기 쉽게 만들고 그걸 대시보드에 올리면 끝인가? 그래서 개발자와 협업하게되고, 우리는 분석하고 시각화 한 부분들을 정확히 전달하고 개발자들은 보기 쉽게 해주고 디자인팀에서 가독성을 높여주면 되는구나 하는 생각을 했다.

사실 아무것도 모르고 있다가 저정도의 생각을 하게된 것도 발전된 것이긴 하지만, 점차 깊이있는 수업을 듣게 되면서,

데이터 분석은 시각화를 한다는 것이 중요하지만! 그것이 결코 종지부를 찍는 것은 아니구나 하고 깨달았다.

오늘 작성하는 내용들은 코드위주보단, 일단 한번 꼭 짚고 가야할 이론들을 위주로 정리했다.

그리고 코드는 머신러닝을 공부하는 사람이라면 꼭 봐야하는 교재 파이썬 머신러닝 완벽 가이드(권철민) 에서 코드를 필사하고 해석하는 방식으로 배우고 있다.

이미 찐 후기들로 검증된 도서인 만큼 한국에서는 머신러닝 책 중에 가장 높은 구매율을 가진 도서이다.

이 과정에 대해 자세히 배우고자 한다면, 내가 올린 포스팅으로 이 코드를 이용해 더 공부를 하고싶다면 꼭 이 책을 구매하길 바란다.

https://product.kyobobook.co.kr/detail/S000001766511

 

파이썬 머신러닝 완벽 가이드 | 권철민 - 교보문고

파이썬 머신러닝 완벽 가이드 | 자세한 이론 설명과 파이썬 실습을 통해 머신러닝을 완벽하게 배울 수 있습니다!《파이썬 머신러닝 완벽 가이드》는 이론 위주의 머신러닝 책에서 탈피해, 다양

product.kyobobook.co.kr

 

 

 

1. 데이터 분석 과정

가장 중요한! 머신러닝을 활용하는 데이터 분석 과정에 대해 간략하게 알아보자

 

먼저 머신러닝 모델을 생성하고 학습한다. 

이렇게 하는 이유에 대해 gpt에 물어본 답변이다.

더보기

머신러닝 모델을 생성하고 학습하는 주요 목적은 데이터로부터 패턴과 특징을 추출하여 일련의 작업을 자동화하고 예측, 분류, 군집화 등의 과제를 수행하는 데 있습니다. 이를 통해 다양한 도메인에서 가치 있는 인사이트를 얻고 의사 결정을 지원할 수 있습니다. 여기에 몇 가지 주요 이유를 설명하겠습니다:

1. 복잡한 패턴 식별: 데이터가 복잡하거나 다차원적인 경우, 사람이 직접적으로 이해하거나 분석하기 어려운 패턴이나 관계를 머신러닝 모델이 탐지하고 학습할 수 있습니다. 이를 통해 데이터 내에 감춰진 유용한 정보를 발견할 수 있습니다.

2. 예측과 분류: 머신러닝 모델은 과거 데이터를 기반으로 미래의 예측을 수행하거나, 새로운 데이터를 분류하는 데 사용될 수 있습니다. 예를 들어, 패턴을 학습한 모델은 새로운 고객이 제품을 구매할 확률을 예측하거나 이메일을 스팸과 정상으로 분류하는 등의 작업을 수행할 수 있습니다.

3. 인사이트 도출: 머신러닝 모델은 데이터 내에 숨겨진 인사이트를 도출하고 데이터의 특성과 관계를 이해하는 데 도움을 줄 수 있습니다. 이를 통해 기업은 시장 동향을 파악하거나 고객의 행동 패턴을 이해하여 전략을 수립할 수 있습니다.

4. 자동화와 효율성: 머신러닝 모델은 반복적이고 복잡한 작업을 자동화하고 효율적으로 수행할 수 있습니다. 예를 들어, 이미지 분류 작업이나 텍스트 분석 작업에서 사람이 일일히 분류하거나 분석하는 것보다 머신러닝 모델이 훨씬 빠르고 정확하게 작업을 수행할 수 있습니다.

5. 변화에 대한 적응: 머신러닝 모델은 데이터의 변화나 새로운 패턴에 적응할 수 있습니다. 이를 통해 모델을 유지보수하거나 새로운 정보에 대응하는데 더 유연하게 대처할 수 있습니다.

6. 복잡한 관계 모델링: 일부 문제는 복잡한 수학적 함수나 관계로 표현하기 어려운 경우가 있습니다. 머신러닝 모델은 이러한 관계를 학습하여 데이터에 기반한 모델을 생성할 수 있습니다.

총체적으로, 머신러닝 모델을 생성하고 학습하는 것은 데이터로부터 가치를 추출하고 문제를 해결하는 강력한 도구입니다. 이를 통해 예측, 분류, 군집화, 패턴 인식 등 다양한 작업을 효율적으로 수행할 수 있습니다.

 

그 다음 학습한 모델을 예측하고 평가한다.

이렇게 하는 이유에 대해 gpt에 물어본 답변이다.

더보기

학습한 모델을 예측하고 평가하는 주요 목적은 모델의 성능과 일반화 능력을 평가하여 실제 환경에서의 예측 능력을 파악하는 것입니다. 이를 통해 모델의 신뢰성을 검증하고 문제 해결에 활용 가능한지 판단할 수 있습니다. 아래에 몇 가지 주요 이유를 설명하겠습니다:

1. 성능 평가: 모델을 사용하여 예측을 수행하면 실제 결과와 비교하여 모델의 예측 정확도나 성능을 측정할 수 있습니다. 이를 통해 모델이 얼마나 잘 작동하는지를 평가하고 향상시키는 데 도움을 줍니다.

2. 일반화 능력 평가: 모델을 학습하는 과정에서 모델은 학습 데이터에 적합하도록 조정됩니다. 하지만 이렇게 학습된 모델이 새로운, 이전에 보지 못한 데이터에 얼마나 잘 적용되는지 확인해야 합니다. 이를 통해 모델의 일반화 능력을 평가하고, 새로운 데이터에 대한 예측 정확도를 확인할 수 있습니다.

3. 과적합(Overfitting) 검사: 모델이 학습 데이터에 과도하게 맞추어져 실제 데이터에서 성능이 저하되는 과적합 현상을 방지하기 위해 모델을 평가합니다. 검증 데이터나 테스트 데이터에서 성능이 학습 데이터에서와 비슷하거나 더 좋은지 확인하여 과적합 여부를 판단합니다.

4. 모델 선택과 비교: 서로 다른 머신러닝 알고리즘이나 모델 구조를 비교하고 선택할 때도 모델의 예측 성능을 평가합니다. 이를 통해 어떤 모델이 주어진 문제에서 더 나은 예측을 제공할지 결정할 수 있습니다.

5. 의사 결정 및 의미 도출: 모델의 예측 결과를 통해 의사 결정을 지원하거나 데이터에 대한 의미 있는 인사이트를 도출할 수 있습니다. 예를 들어, 의료 분야에서 환자의 건강 상태를 예측하여 조기 진단에 도움을 줄 수 있습니다.

6. 모델 향상: 모델의 예측 성능이 낮거나 원하는 수준에 도달하지 못할 경우, 평가 결과를 분석하여 모델을 개선하고 최적화하는 방법을 찾을 수 있습니다.

이러한 이유로 모델을 예측하고 평가하여 모델의 신뢰성과 성능을 확인하며, 데이터 분석과 문제 해결에 활용 가능한지를 판단합니다.

 

교차검증을 시행해 성능과 정확도를 파악한다.

이렇게 하는 이유에 대해 gpt에 물어본 답변이다.

더보기

교차 검증은 머신러닝 모델의 성능을 더 신뢰성 있게 평가하고 일반화 능력을 평가하기 위한 중요한 기법입니다. 다음과 같은 이유로 교차 검증을 수행합니다:

1. 일반화 능력 평가: 모델을 학습할 때, 모델은 학습 데이터에 과적합(overfitting)되는 경향이 있습니다. 이로 인해 학습 데이터에서는 좋은 성능을 보이지만 새로운 데이터에서는 성능이 저하될 수 있습니다. 교차 검증을 사용하면 학습 데이터와 검증 데이터를 반복적으로 나누어 모델을 평가하므로 모델의 일반화 능력을 보다 정확하게 평가할 수 있습니다.

2. 데이터의 효과적 활용: 데이터가 제한적인 경우, 교차 검증을 사용하여 데이터를 여러 번 재활용하므로 모델의 평가가 더 효율적으로 이루어집니다. 데이터를 한 번만 나누어 평가하는 경우보다 더 많은 정보를 활용할 수 있습니다.

3. 하이퍼파라미터 튜닝: 교차 검증은 하이퍼파라미터 튜닝에도 사용됩니다. 모델의 성능은 하이퍼파라미터의 선택에 따라 달라질 수 있습니다. 교차 검증을 통해 다양한 하이퍼파라미터 조합을 비교하여 최적의 조합을 찾을 수 있습니다.

4. 편향 방지: 데이터가 불균형하게 분포되어 있는 경우, 일부 데이터만을 학습 데이터로 사용하거나 검증 데이터로 사용하는 것이 모델의 성능을 편향시킬 수 있습니다. 교차 검증을 사용하면 모든 데이터가 학습과 검증에 활용되므로 편향을 줄일 수 있습니다.

5. 신뢰성 있는 평가: 교차 검증은 모델의 성능을 여러 번 평가하므로 평가 결과가 더 신뢰성 있습니다. 이를 통해 모델의 성능을 더 정확하게 평가할 수 있습니다.

요약하면, 교차 검증은 모델의 성능을 신뢰성 있게 평가하고 일반화 능력을 평가하는 도구로써 모델 선택, 성능 향상, 과적합 방지 등의 목적으로 사용됩니다.

 

 

 

2. 교차검증?

위에서 교차검증을 하는 이유와 중요성을 gpt의 답변으로 꼼꼼하게 알 수 있었다.

그러면 교차검증을 어떻게 하는지를 알아보자.

일단 교차검증을 하려면 분류 모형에 대해 모델링이 확실히 되어 있어야 한다.

주로 많이 사용하는 교차검증으론 K-Fold와 Stratified K-Fold 가 있다.

수업시간에 사용하고 중요한 부분에 대해 설명을 들었지만, 처음부터 뭐가 뭔지 감이 잡히질 않아 gpt에 또 물어봤다..ㅋㅋ

 

먼저 쉽게 말하자면 Stratified K-Fold 는 데이터의 클래스에 불균형이 있을 경우 사용하고, K-Fold는 그 반대의 경우에 사용한다.

 

 

위 설명을 보면) K-Fold는 말그대로 랜덤한, 무작위와 비율을 고려하지 않는 것이 중점이다.

반대로 Stratified K-Fold는 애초에 데이터의 클래스에 불균형이 있다보니, 최대한 원본 데이터 그대로에서 클래스 비율 또한 그대로 유지하는 것이 중점이다.

 

 

3. 교차검증 그 이후

교차검증을 거친 후에는 다양한 것을 할 수 있다.

이때까지 배워오고 주로 사용해본 시각화가 그 예 일수도 있고, 결과를 분석하고 평가할 수도 있는 것이다.

그 중 오늘 배웠던 것은 주로 하는 하이퍼 파라미터 튜닝에 대해 배웠다.

 

하이퍼 파라미터란?

최적의 훈련 모델을 만들어 내기 위해 모델에 설정하는 변수이다.

한마디로, 머신러닝 모델을 학습하면서 만든 객체에서 정확도를 더 높이기 위해 우리가 수동적으로 조절하는 부분이다.

오늘 수업에 사용한 결정 트리 분류기에 대해 잠깐 코드를 보여주면 아래와 같다.

 

 

결정 트리 분류의 가지를 기본 갯수인 2가지로 설정을 할 경우 0.63333 이라는 정확도와 위와같은 그림이 나온다.

여기서 가지의 갯수와 결정 트리의 노드 갯수를 변동시키면, 정확도를 높일 수 있다.

 

이렇게 결정트리를 예시로 보면, 노드 1개를 기준으로 2가지의 선택지를 줄 때는 둘중에 속하지 않고 오류인 부분이 있는데, 노드 2개에 기본가지 갯수를 하나 더 추가할 경우 더 세밀한 조정이 가능해서 정확도가 1로 높아진 것이 확인된다.

이러한 과정을 거쳐 우리는 파라미터의 좋은 조합을 찾아내는 것도 해야하고, 이것을 최종적인 머신러닝 모델로 사용하게 된다.

728x90