• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

santander에서 레이블 값 분포 비율 관련 문의

21.02.25 14:09 작성 조회수 201

0

안녕하세요.

오늘도 강의 들으면서 재밌게 공부하고 있는데요! 궁금한 사항이 있어서 문의를 드립니다.

교재에는 P.256쪽에 있는 내용인데, 2가지 질문이 있습니다.

1) stratified k를 쓰지도 않았고 현재 train_test_split 밖에 한 것이 없는데, 자동적으로 알아서 train set 과 test set에서의 레이블 값 분포 비율이 0.96 vs 0.04 정도로  유지되는건, stratified를 사용하지 않아도 자동적으로 알아서 골고루 0 과 1 레이블 값들이 알아서 배분되는건가요?

2) 그리고 96%라고 설정하지 않았는데도 default 값이 96%, 4%로 나누게끔 되어있는건가요?

3) 위 그림에서 min_child_weight 는 min_samples_leaf라고 생각하면 될까요? 또한, auc를 구할 때 평균(average - macro)이 왜 쓰이는지 모르겠네요! 그리구 당연히 col_sample도 매번 돌릴 때마다 추출되는 column이 다르니 그럼 결과값이 달라지겟죠? 

답변 1

답변을 작성해보세요.

0

안녕하십니까,

1. 쪼개려는 데이터가 target값으로 random 하게 잘 분포되어 있으면 train_test_split()으로도 target값에 균일하게 잘 쪼개 집니다. 더 정확하게 target값 분포로 쪼개려면 train_test_split(,,,, stratify=y_labels) 와 같이 stratify 인자를 넣어 주시면 됩니다.

2. '96%라고 설정하지 않았는데도' 의 의미를 제가 잘 파악하지 못했지만, 원본 데이터가 target값으로 잘 섞여서 되어 있어서 쪼개진 데이터도 target값이 잘 섞인것 같습니다.

3. min_child_weight와 min_samples_leaf는 좀 다릅니다.

min_child_weight는 XGBoost에서 노드에 있는 데이터의 weight(가중치) 합을 보고 추가적으로 자식 노드를 만들건지를 결정하는 최소한의 weight를 의미합니다.

반면에 min_samples_leaf는 leaf 노드가 되기 위한 최소한의 데이터 건수입니다. 가중치와 데이터 건수는 다릅니다(하지만 일반적으로 노드에 데이터 건수가 많으면 가중치 합도 높을 수 있습니다)

roc_auc_score() average는 default가 macro입니다.

col_sample_bytree 가 컬럼 비율을 가져오는데 있어서 동일한 결과가 나오는지는 테스트 해보지 않았습니다. 아마  random_seed가 동작하면 동일한 결과를 가져올 수 도 있을 것 같습니다.

첫번 째 사진에 보시면 96%로 따로 설정한게 없는데 학습 세트와 테스트 세트의 레이블 분포가 둘다 각각 0.96 과 0.04으로 자동적으로 나뉘길래 그게 default값인가 했네요! ㅎㅎ

답변 너무 감사드립니다! 항상 친절하게 답변 달아주셔서 모르는 부분이 있어도 알아가는 재미에 공부할 수 있네요 ㅎㅎ 감사합니다!