인프런 커뮤니티 질문&답변

Baek Kyun Shin님의 프로필 이미지

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

교차검증 - K-Fold와 Stratified K-Fold의 이해 - 01

Stratified K-fold 분할 결과 질문

해결된 질문

작성

·

177

3

안녕하십니까. 매번 좋은 강의에 감탄을 하며 열강을 하고 있습니다.

한가지 추가적으로 궁금한 점이 있어 질문을 합니다.

올려주신 코드의 Stratified K-fold 결과는 아래와 같습니다.

#1 교차 검증 정확도 :0.9804, 학습 데이터 크기: 99, 검증 데이터 크기: 51
#1 검증 세트 인덱스:[  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  50
  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66 100 101
 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116]

#2 교차 검증 정확도 :0.9216, 학습 데이터 크기: 99, 검증 데이터 크기: 51
#2 검증 세트 인덱스:[ 17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  67
  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 117 118
 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133]

#3 교차 검증 정확도 :0.9792, 학습 데이터 크기: 102, 검증 데이터 크기: 48
#3 검증 세트 인덱스:[ 34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  84  85
  86  87  88  89  90  91  92  93  94  95  96  97  98  99 134 135 136 137
 138 139 140 141 142 143 144 145 146 147 148 149]

## 교차 검증별 정확도: [0.9804 0.9216 0.9792]
## 평균 검증 정확도: 0.9604

학습 데이터와 검증 데이터가 정확히 2:1로 나뉘려면 학습 데이터 크기: 100, 검증 데이터 크기: 50이 되어야 할텐데, 99:51, 102:48 등 일부 차이가 납니다. 이 부분은 어떤 이유에서인지 설명해주실 수 있으신지요?

매번 친철한 답변 정말 감사드립니다.

답변 2

3

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

강의를 잘 듣고 계시다니 감사드립니다.

99:51, 102:48 로 일부 차이가 나는것은 학습 데이터와 검증 데이터가 정확히 2:1로 나뉠 경우 검증 데이타가 50건이 되기 때문입니다.

Iris의 데이터 건수가 전체 150건 입니다. 이를 n_splits=3 으로 나누면 학습과 검증 데이터 비율이 대략 100:50이 될 수 있을 것입니다. 그런데 검증 데이터를 50건으로 고정을 하면 Iris의 타겟값 유형이 3가지 이므로 이를 정확히 반영할 수 없습니다. Iris 0, 1, 2 가 각각 17건으로 51건을 2개의 Fold 세트로 만들면 마지막 Fold 세트는 각각 16건으로 총 48건이 되어야 제대로 StratifiedFold 형식으로 분리 될 수 있기 때문입니다.

n_splits을 5로 바꾸시면 학습과 검증 데이터 세트가 Fold 세트별로 120대 30으로 고정됨을 확인 하실수 있을 것입니다.

늘 소중한 질문 감사합니다.

0

완벽히 이해가 되었습니다!! 바쁘실텐데 매번 자세히 설명해주셔서 감사드립니다~