카테고리 없음
머신러닝과 딥러닝(5)_로지스틱 회귀
teminam
2023. 6. 14. 15:30
1. hr 데이터셋 살펴보기
로지스틱 회귀(Logistic Regression)는 분류(Classification) 문제에 사용되는
통계적인 모델입니다. 주로 이진 분류(Binary Classification) 문제에 적용되며,
데이터의 특징을 기반으로 각 클래스에 속할 확률을 예측하는 모델입니다.
로지스틱 회귀는 선형 회귀(Linear Regression) 모델과는 다른 점이 있습니다.
선형 회귀는 입력 변수와 출력 변수 간의 선형 관계를 가정하여 연속적인 값을
예측하는 반면, 로지스틱 회귀는 입력 변수를 사용하여 이진 분류 문제에서
클래스에 속할 확률을 예측합니다.
로지스틱 회귀는 로지스틱 함수 또는 시그모이드 함수(Sigmoid Function)를
사용하여 입력 변수를 확률로 변환합니다. 로지스틱 함수는 S자 모양의
곡선으로, 입력 변수의 범위를 0과 1 사이의 확률 값으로 압축합니다. 이 확률은
어떤 클래스에 속할 확률을 나타냅니다. 일반적으로 0.5보다 크면 한 클래스에
속하고, 0.5보다 작으면 다른 클래스에 속한다고 판단합니다.
로지스틱 회귀는 최적화 알고리즘을 사용하여 모델을 학습시킵니다. 학습
과정에서 모델은 주어진 입력 변수와 실제 클래스 레이블을 기반으로 모델의
가중치와 편향을 조정하여 손실 함수를 최소화하는 방향으로 업데이트됩니다.
로지스틱 회귀는 해석력이 뛰어나고 간단한 모델입니다. 또한, 이진 분류뿐만
아니라 다중 클래스 분류(Multiclass Classification)에도 확장할 수 있습니다.
그러나 선형적인 결정 경계만 모델링할 수 있으며, 비선형 문제에는
제한적입니다. 비선형 문제에 대응하기 위해서는 로지스틱 회귀를 다항 회귀
(Polynomial Regression) 또는 다른 비선형 변환과 결합하여 사용해야 할 수
있습니다.
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
- employee_id: 임의의 직원 아이디
- department: 부서
- region: 지역
- education: 학력
- gender: 성별
- recruitment_channel: 채용 방법
- no_of_trainings: 트레이닝 받은 횟수
- age: 나이
- previous_year_rating: 이전 년도 고과 점수
- length_of_service: 근속 년수
- awards_won: 수상 경력
- avg_training_score: 평균 고과 점수
- is_promoted: 승진 여부
plt.figure(figsize=(14,10))
sns.barplot(x='region', y='is_promoted', data=hr_df)
plt.xticks(rotation=45)
2. 로지스틱 회귀(Logistic Regression)
- 둘 중의 하나를 결정하는 문제(이진 분류)를 풀기 위한 대표적인 알고리즘
- 도큐먼트
- 3개 이상의 클레스에 대한 판별을 하는 경우 OvR(One-vs-Rest), OnO(One-vs-One) 전략으로 판별
대부분 OvR 전략을 선호, 데이터가 한쪽으로 많이 치우친 경우 OvO를 사용(ADSD 시험에 나온 내용)
accuracy_score 함수는 예측값과 실제값을 비교하여 정확도를 계산하는
함수입니다. 여기서 반환된 0.9114262227702425는 예측값(pred)과 실제값(y_test)
을 비교한 결과로, 약 91.14%의 정확도를 나타냅니다.
정확도는 전체 예측 중 올바르게 예측한 비율을 나타내므로, 높은 값일수록
모델의 성능이 좋다고 할 수 있습니다. 하지만 정확도만으로 모델의 성능을
평가하는 것은 적절하지 않을 수 있습니다. 예를 들어, 데이터의 클래스
불균형이 심하거나 오분류의 비용이 큰 경우에는 다른 평가 지표(정밀도,
재현율, F1 점수 등)를 함께 고려해야 합니다.
따라서, 해당 모델의 성능을 완전히 평가하려면 다른 평가 지표와 함께
고려하거나, 데이터의 특성과 목표에 따라 적절한 평가 방법을 선택하는 것이
좋습니다.
accuracy_score가 신뢰도가 낮을 수 있는 이유는 다음과 같습니다:
1. 클래스 불균형 문제: 데이터의 클래스가 불균형하게 분포되어 있는 경우,
정확도는 높은 클래스의 예측 정확도가 높아지고 낮은 클래스의 예측 정확도가
낮아져서 신뢰성이 떨어질 수 있습니다. 예를 들어, 클래스 A의 샘플이 90%이고
클래스 B의 샘플이 10%인 경우, 모든 샘플을 클래스 A로 예측해도 90%의
정확도를 가지게 됩니다. 이런 경우에는 다른 평가 지표를 사용하는 것이 더
적절합니다.
2. 오차의 중요도: 모든 예측 오차가 동일한 중요도를 갖지 않는 경우,
정확도만으로 모델의 성능을 판단하기 어려울 수 있습니다. 예를 들어, 암 진단
모델의 경우 건강한 환자를 암 환자로 잘못 분류하는 것은 치명적인 오류일 수
있습니다. 이런 경우에는 다른 평가 지표(재현율, 정밀도 등)를 사용하여 모델의
성능을 평가하는 것이 중요합니다.
3. 데이터의 특성: 데이터 자체의 특성에 따라 정확도만으로는 모델의 성능을
정확하게 평가하기 어려울 수 있습니다. 예를 들어, 순서가 있는 시계열
데이터나 공간적으로 상관 관계가 있는 이미지 데이터의 경우에는 정확도보다는
다른 평가 지표를 사용하는 것이 더 적절합니다.
따라서, 정확도 외에도 다양한 평가 지표를 사용하고 데이터의 특성과 목표에
맞게 평가하는 것이 모델의 성능을 더 신뢰성있게 평가하는 데 도움이 됩니다.
3. 혼돈 행렬(Coufusion matrix)
- 정밀도와 재현율(민감도)을 활용하는 평가용 지수
혼동 행렬(Confusion Matrix)은 분류 모델의 예측 결과와 실제 결과를
비교하여 모델의 성능을 평가하는 데 사용되는 행렬입니다. 이는 이진 분류의
경우에는 2x2 행렬로 표현되며, 다중 클래스 분류의 경우에는 N x N 행렬로
표현될 수 있습니다. 혼동 행렬은 다음과 같은 네 가지 요소로 구성됩니다:
1. True Positive (TP): 실제 양성인 샘플을 양성으로 정확하게 예측한 수입니다.
2. False Positive (FP): 실제 음성인 샘플을 양성으로 잘못 예측한 수입니다.
3. False Negative (FN): 실제 양성인 샘플을 음성으로 잘못 예측한 수입니다.
4. True Negative (TN): 실제 음성인 샘플을 음성으로 정확하게 예측한 수입니다.
로지스틱 회귀는 통계학과 머신러닝에서 사용되는 분류 모델 중 하나로, 종속
변수가 범주형(이진 또는 다중 클래스)인 경우에 사용됩니다. 로지스틱 회귀는
선형 회귀와 달리 로지스틱 함수를 사용하여 예측을 수행합니다.
로지스틱 회귀는 독립 변수와 종속 변수 사이의 관계를 학습하는 모델로, 주로
최대 가능도 추정(Maximum Likelihood Estimation, MLE) 방법을 사용하여 모델
파라미터를 추정합니다. 로지스틱 회귀는 독립 변수의 선형 조합을 확률로
변환하기 위해 로지스틱 함수 또는 시그모이드 함수를 사용합니다.
로지스틱 회귀는 예측 결과를 확률로 제공하므로, 이를 기반으로 분류 결정을
내릴 수 있습니다. 예를 들어, 0.5보다 큰 확률을 가진 경우를 양성 클래스로
분류하고, 0.5보다 작은 확률을 가진 경우를 음성 클래스로 분류할 수 있습니다.
따라서, 혼동 행렬과 로지스틱 회귀는 분류 모델의 성능을 평가하고 개발하는 데
사용되는 다른 개념입니다. 혼동 행렬은 모델의 예측 결과와 실제 결과를
비교하여 모델의 성능을 평가하는 데 사용되는 행렬이며, 로지스틱 회귀는 종속
변수가 범주형인 경우에 사용되는 분류 모델입니다.
sns.heatmap(confusion_matrix(y_test, pred), annot=True, cmap='Blues')
# heatmap 연간관계를 찍어주는 표
# 색갈이 짙을 수록 연관성이 높음
heatmap은 데이터의 값을 색상으로 표현하여 시각적으로 표현하는 방법입니다.
주로 행렬 형태의 데이터를 시각화할 때 사용되며, 각 셀의 값을 색으로
표현하여 데이터의 패턴과 상관 관계를 쉽게 파악할 수 있게 해줍니다.
heatmap을 생성하기 위해서는 다음과 같은 단계를 거칩니다:
1. 데이터 준비: heatmap을 생성하기 위해 필요한 데이터를 준비합니다.
일반적으로 2차원 행렬 형태의 데이터가 필요하며, 각 셀에는 값이 할당되어
있어야 합니다.
2. 시각화 라이브러리 선택: heatmap을 생성하기 위해 시각화 라이브러리를
선택합니다. Python에서는 `matplotlib`, `seaborn` 등의 라이브러리를 주로
사용합니다.
3. Heatmap 생성: 선택한 시각화 라이브러리를 사용하여 heatmap을 생성합니다.
라이브러리에 따라 사용법이 다를 수 있으므로 해당 라이브러리의 문서를
참조하여 사용법을 확인합니다. 일반적으로 `imshow` 또는 `heatmap` 함수를
사용하여 heatmap을 생성합니다.
4. 색상 맵 설정: heatmap에서 사용할 색상 맵을 선택하거나 설정할 수
있습니다. 색상 맵은 데이터의 값에 따라 색상을 지정하는데 사용됩니다.
대표적인 색상 맵으로는 "viridis", "coolwarm", "jet" 등이 있습니다.
5. 라벨 및 제목 추가: heatmap에 필요한 라벨 및 제목을 추가하여 시각화의
의미를 더욱 명확하게 전달할 수 있습니다. 각 축에 대한 라벨을 추가하고, 전체
heatmap에 대한 제목을 설정할 수 있습니다.
6. 추가적인 설정: 필요에 따라 추가적인 설정을 수행할 수 있습니다. 예를
들어, 셀 간의 간격, 셀에 숫자 값 표시 등을 설정할 수 있습니다.
위의 단계를 따라 heatmap을 생성하면 데이터의 패턴과 상관 관계를 시각적으로
파악할 수 있습니다.
3-1. 정밀도(Precision)
- TP / (TP + FP)
- 무조건 양성으로 판단해서 계산하는 방법
- 실제 1인 것중에 얼마 만큼을 제대로 맞췄는가?
3-2. 재현율(Recall)
- TP / (TP + FN)
- 정확하게 감지한 양성 샘플의 비율
- 1 이라고 예측한 것 중, 얼마 만큼을 제대로 맞췄는가?|
- 민감도 또는 TPR(Ture Positive Rate)라고도 부름
정밀도(Precision)와 재현율(Recall)은 이진 분류 모델의 성능을 평가하는 데
사용되는 평가 지표입니다. 정밀도는 양성 클래스로 예측한 샘플 중 실제로
양성인 비율을 나타내며, 재현율은 실제 양성인 샘플 중 양성으로 예측한 비율을
나타냅니다.
수식으로 표현하면 다음과 같습니다:
정밀도 = TP / (TP + FP)
재현율 = TP / (TP + FN)
여기서 TP는 True Positive(실제 양성과 예측 양성 모두인 샘플), FP는 False
Positive(실제는 음성이지만 예측은 양성인 샘플), FN은 False Negative(실제는
양성이지만 예측은 음성인 샘플)를 의미합니다.
정밀도는 "정확하게 양성으로 예측한 것 중에서 실제로 양성인 비율"을
나타내므로, 높은 정밀도는 모델이 양성으로 예측한 것 중 실제로 양성인 비율이
높다는 것을 의미합니다. 정밀도가 중요한 경우는 False Positive(실제는
음성인데 양성으로 잘못 예측한) 오류가 비용이 크거나 원치 않는 결과를
초래하는 경우입니다.
재현율은 "실제 양성 중에서 양성으로 예측한 비율"을 나타내므로, 높은
재현율은 모델이 실제로 양성인 샘플을 놓치지 않고 잘 예측한다는 것을
의미합니다. 재현율이 중요한 경우는 False Negative(실제는 양성인데 음성으로
잘못 예측한) 오류가 비용이 크거나 실제 양성을 놓치면 안 되는 경우입니다.
정밀도와 재현율은 서로 상충하는 관계를 가지고 있습니다. 즉, 정밀도가 높으면
재현율이 낮아지고, 재현율이 높으면 정밀도가 낮아집니다. 이를 Trade-off
관계라고도 합니다. 모델의 목표와 상황에 따라 정밀도와 재현율 중 어떤 지표를
중요시하느냐에 따라 모델을 조정하고 최적의 성능을 달성할 수 있습니다.
정밀도와 재현율은 둘 다 단독으로 사용
하기보다는 다른 평가 지표와 함께 사용하는 것이 좋습니다. 예를 들어, F1
점수는 정밀도와 재현율의 조화 평균으로 계산되며, 두 평가 지표를 동시에
고려하는 지표로 사용됩니다.
`ir.coef_`와 수학에서의 기울기 (∇f) 사이에는 차이점이 있습니다.
1. ir.coef_: `ir.coef_`는 로지스틱 회귀 모델에서 각 입력 변수의 가중치를
나타내는 계수(coefficient)를 의미합니다. 로지스틱 회귀에서는 입력 변수와
가중치의 선형 조합을 로지스틱 함수에 입력으로 제공하여 예측값을 계산합니다.
`ir.coef_`는 모델이 학습한 가중치를 저장하고 있으며, 각 변수가 예측에 어떤
영향을 미치는지를 나타냅니다.
2. 수학에서의 기울기 (∇f): 수학에서의 기울기는 다차원 함수에서 각 변수의
변화에 따른 함수의 변화율을 나타내는 벡터입니다. 기울기는 함수의 경사를
나타내는 값으로서, 함수가 어느 방향으로 얼마나 빠르게 증가하거나
감소하는지를 나타냅니다. 기울기는 함수의 최적화, 경사하강법 등에서
사용되며, 함수의 최솟값 또는 최댓값을 찾는 데에 활용됩니다.
따라서, `ir.coef_`는 로지스틱 회귀 모델에서의 가중치를 나타내는 값이고,
수학에서의 기울기 (∇f)는 다차원 함수에서의 변수에 대한 변화율을 나타내는
벡터입니다. 이 두 개념은 서로 다른 의미를 가지고 있으며, 로지스틱 회귀
모델의 가중치와 수학에서의 기울기를 혼동하지 않아야 합니다.
`ir.coef_`가 기울기인 이유는 로지스틱 회귀 모델의 선형 부분에서 사용되는
가중치(weights)를 의미하기 때문입니다.
로지스틱 회귀는 선형 모델이며, 입력 변수(feature)와 가중치의 선형 조합을
사용하여 로지스틱 함수에 입력으로 제공합니다. 선형 모델에서는 입력 변수와
가중치의 곱을 합하여 예측값을 계산합니다. 따라서, 로지스틱 회귀 모델의 선형
부분에서는 각 입력 변수의 가중치가 예측에 영향을 미치는 중요한 요소입니다.
`ir.coef_`는 로지스틱 회귀 모델에서 각 입력 변수의 가중치를 나타내는 계수
(coefficient)를 나타냅니다. 일반적으로, `coef_` 속성은 학습된 모델의
가중치를 저장하고 있습니다. 가중치의 값이 양수인 경우 해당 입력 변수가
예측에 긍정적인 영향을 미치며, 음수인 경우에는 예측에 부정적인 영향을
미칩니다.
로지스틱 회귀에서는 기울기(gradient)와는 다른 개념입니다. 기울기는 함수의
경사를 나타내는 값이며, 주어진 점에서의 함수의 변화율을 나타냅니다. 반면에,
로지스틱 회귀에서의 `ir.coef_`는 입력 변수와 가중치의 관계를 나타내는
값입니다.
`predict_proba` 메서드는 분류 모델에서 사용되는 메서드로, 주어진 입력에
대한 각 클래스의 확률을 반환합니다. 이 경우, `proba`는 예측된 확률 값으로
이루어진 배열입니다.
각 행은 입력 데이터에 대한 예측 결과를 나타내며, 각 열은 클래스에 대한 예측
확률을 나타냅니다. 예를 들어, 주어진 입력 데이터에 대해 클래스 0과 클래스
1에 대한 예측 확률이 각각 `[0.89876806, 0.10123194]`로 나타난다는 것은 해당
데이터가 클래스 0일 확률이 약 89.9%, 클래스 1일 확률이 약 10.1%라는 것을
의미합니다. 마찬가지로, 다른 행에 대해서도 각 클래스에 대한 예측 확률을
확인할 수 있습니다.
주로 이진 분류 모델에서 사용되며, 각 클래스의 예측 확률을 통해 분류 결정을
내릴 수 있습니다. 일반적으로, 예측 확률이 높은 클래스를 최종 예측값으로
선택합니다. 예를 들어, 위의 결과에서 첫 번째 예측 결과는 클래스 0일 확률이
더 높으므로, 해당 입력 데이터는 클래스 0으로 분류될 가능성이 높다고 판단할
수 있습니다.
`predict_proba`를 사용하면 분류 모델의 예측 결과에 대한 불확실성을 파악할
수 있습니다. 예측 확률이 가까운 두 클래스의 경우, 모델이 불확실한 예측을 한
것으로 해석할 수 있습니다. 이를 기반으로 모델의 예측 결과를 해석하고
추가적인 의사결정을 내릴 수 있습니다.
4. 교차 검증(Cross Validation)
- train_test_split 에서 발생하는 데이터의 섞임에 따라 성능이 좌우되는 문제를 해결하기 위한 기술
- K겹(K-Fold) 교차 검증을 가장 많이 사용
교차 검증(Cross Validation)은 머신러닝 모델의 성능을 평가하기 위해 사용되는
통계적 평가 방법입니다. 기본 아이디어는 데이터를 훈련 세트와 검증 세트로
나누어 모델을 반복적으로 훈련하고 검증하는 것입니다. 이를 통해 모델의
일반화 성능을 더 정확하게 추정할 수 있습니다.
교차 검증은 일반적으로 다음과 같은 단계로 수행됩니다:
1. 데이터 분할: 먼저, 전체 데이터셋을 훈련 세트와 테스트 세트로 나눕니다.
일반적으로, 훈련 세트는 모델을 훈련하는 데 사용되고, 테스트 세트는 모델의
성능을 평가하는 데 사용됩니다.
2. K-Fold 교차 검증: 가장 일반적인 교차 검증 방법 중 하나는 K-Fold 교차
검증입니다. 이 방법은 데이터를 K개의 폴드(fold)로 나누고, K번의 반복을 통해
모델을 훈련 및 평가합니다. 각 반복에서는 하나의 폴드를 검증 세트로 사용하고
나머지 K-1개의 폴드를 훈련 세트로 사용합니다. 이렇게 K번의 반복을 통해
모델의 성능을 평균내어 최종 성능을 추정합니다.
3. 성능 측정: 각 반복에서 모델은 훈련 세트로 훈련된 후 검증 세트에서 성능을
평가합니다. 일반적으로 분류 모델에서는 정확도(accuracy), 정밀도(precision),
재현율(recall), F1 점수(F1 score) 등의 지표를 사용하여 모델의 성능을
측정합니다. 회귀 모델에서는 평균 제곱 오차(Mean Squared Error, MSE), 평균
절대 오차(Mean Absolute Error, MAE) 등을 사용할 수 있습니다.
4. 결과 평균화: K번의 반복을 통해 얻은 성능 지표를 평균화하여 최종 성능을
추정합니다. 이를 통해 모델의 일반화 성능을 보다 신뢰성 있게 평가할 수
있습니다.
교차 검증은 모델의 성능을 평가하고 하이퍼파라미터 튜닝 등의 모델 개선을
위해 사용됩니다. 모델의 일반화 성능을 더 정확하게 추정할 수 있기 때문에
단일 훈련/테스트 세트를 사용하는 것보다 신뢰할 수 있는 평가를 제공합니다.
또한, 데이터셋이 작거나 편향된 경우에도 모델의 성능을 평가하는 데
유용합니다.
acc_list = []
for train_index, test_index in kf.split(range(len(hr_df))):
X = hr_df.drop('is_promoted', axis=1)
y = hr_df['is_promoted']
X_train = X.iloc[train_index]
X_test = X.iloc[test_index]
y_train = y.iloc[train_index]
y_test = y.iloc[test_index]
lr = LogisticRegression()
lr.fit(X_train, y_train)
pred = lr.predict(X_test)
acc_list.append(accuracy_score(y_test, pred))
위의 코드는 `KFold`를 사용하여 데이터셋을 5개의 폴드로 나누고, 각 폴드에
대해 로지스틱 회귀 모델을 훈련하고 평가하는 과정을 보여줍니다. 각 반복마다
테스트 세트의 예측 결과를 저장한 후, `accuracy_score`를 사용하여 예측의
정확도를 계산하고, 이를 `acc_list`에 추가합니다.
1. 데이터 분할:
- `kf.split(range(len(hr_df)))`를 통해 데이터셋을 5개의 폴드로
분할합니다. `kf.split()` 메서드는 인덱스를 반환하며, `range(len(hr_df))
`는 데이터셋의 인덱스 범위를 나타냅니다.
- 각 반복에서 `train_index`와 `test_index`는 훈련과 테스트 세트의
인덱스를 나타냅니다.
2. 데이터 전처리:
- 훈련과 테스트 세트의 인덱스를 사용하여 입력 데이터 `X`와 타깃 데이터
`y`를 나눕니다. `hr_df.drop('is_promoted', axis=1)`로 입력 데이터에서
'is_promoted' 열을 제외하고 `hr_df['is_promoted']`로 타깃 데이터를
선택합니다.
- `X_train`, `X_test`, `y_train`, `y_test`에 각각 훈련 및 테스트 세트의
데이터를 할당합니다.
3. 모델 훈련 및 평가:
- `LogisticRegression()`을 사용하여 로지스틱 회귀 모델 객체 `lr`을
생성합니다.
- `lr.fit(X_train, y_train)`을 호출하여 훈련 세트로 모델을 훈련합니다.
- `lr.predict(X_test)`를 사용하여 테스트 세트의 예측값을 계산합니다.
- `accuracy_score(y_test, pred)`를 호출하여 예측의 정확도를 계산합니다.
- `accuracy_score`를 통해 계산된 정확도를 `acc_list`에 추가합니다.
위의 코드는 `KFold`를 사용하여 교차 검증을 수행하고, 각 폴드에서의 로지스틱
회귀 모델의 정확도를 평가합니다. 반복적으로 모델을 훈련하고 평가하여
`acc_list`에 정확도가 저장됩니다. 이렇게 모든 폴드에서의 평균 정확도를
계산하면 모델의 성능을 더 신뢰할 수 있습니다.
위의 출력은 `acc_list`에 저장된 정확도 값들을 나타냅니다. 각 값은 교차
검증의 각 폴드에서의 모델의 정확도를 나타냅니다. 각각의 값은 다른 테스트
세트에 대한 모델의 예측 정확도입니다.
따라서, 출력된 결과를 해석해보면 다음과 같습니다:
- 첫 번째 폴드에서의 정확도는 0.9114262227702425입니다.
- 두 번째 폴드에서의 정확도는 0.9094739005343198입니다.
- 세 번째 폴드에서의 정확도는 0.9173859432799013입니다.
- 네 번째 폴드에서의 정확도는 0.914406083025072입니다.
- 다섯 번째 폴드에서의 정확도는 0.9125565145910398입니다.
이러한 결과는 각 폴드에서 모델의 성능을 나타내며, 이를 평균내면 모델의
전체적인 정확도를 얻을 수 있습니다. 평균 정확도는 교차 검증을 통해 모델의
일반화 성능을 추정하는 데 사용될 수 있습니다. 이러한 방법을 통해 모델의
성능을 보다 신뢰할 수 있게 평가할 수 있습니다.
크로스 벨리데이션을 사용하는 이유는 결과를 좋게 하기 위함이 아니라 믿을만한 검증을 하기 위함
`np.array(acc_list).mean()`은 `acc_list`에 저장된 정확도 값들의 평균을
계산하는 코드입니다. 위에서 제시한 `acc_list`의 값들을 이용하여 계산하면,
평균 정확도는 0.913049732840115입니다.
이는 교차 검증을 통해 얻은 다섯 개의 폴드에서의 모델 정확도를 평균한
값으로, 전체 데이터셋에 대해 모델의 일반화 성능을 추정하는 데 사용될 수
있습니다. 평균 정확도가 높을수록 모델이 데이터를 잘 예측하는 경향을 가지고
있다고 해석할 수 있습니다.
따라서, 위의 결과에서는 다섯 개의 폴드에서 평균적으로 약 91.3%의 정확도를
가지는 로지스틱 회귀 모델을 얻을 수 있다는 것을 의미합니다.