분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
CAT + LGBM + XGB with SKfold (0.17113)
안녕하세요 lastdefiance20입니다.
모델 학습에 필요한 최소한의 데이터 전처리 및 target의 범위로 Stratified Kfold & Soft voting한 코드를 올립니다.
순서는 데이터 불러오기 -> 데이터 전처리 -> 모델 생성 및 학습하기 -> 제출하기 순으로 이루어져있습니다.
피드백, 궁금증은 댓글로 남겨주시면 감사하겠습니다.
안녕하세요 분데데분님! Age 컬럼을 생성할때 2022에서 빼든, Dt_Customer'year에서 빼든 여기서는 Tree 모델을 사용하고 있기 때문에 상관없다고 생각합니다.
예를 들어 2022를 사용할 경우 Age의 범위가 20~80이라고 가정하고, Dt_Customer'year을 2014로 통일해 사용할 경우 Age의 범위가 8 작은 12~72의 범위가 나오게 될 것입니다. 여기에서 모델이 학습을 했다고 했을때, Tree 기반 모델이기 때문에 같은 조건이 주어진다면 2022를 사용했을때 60이상은 왼쪽 노드, 미만은 오른쪽 노드로 보내는 학습된 노드가 있다고 가정하겠습니다. 이 노드는 Dt_Customer'year를 사용하면 52이상은 왼쪽 노드, 미만은 오른쪽 노드로 보내게 된다고 학습하여 똑같은 결과가 나오게 될 것입니다.
따라서 Age 변수의 범위 자체가 달라지는게 아니기 때문에 특성의 정규화가 필요없는 Tree 모델에서는(변수의 scale에 영향을 받지 않음) 어느 방법을 사용해도 타당하다고 생각합니다.
맞네요, 트리 기반으로 학습하면 무리가 없군요, 감사합니다!
혹시 인코딩을 이렇게 하신 이유 여쭤봐도 될까요?
저도 Marital_Status 에서 인코딩을 하긴했으나 데이터의 수가 적었던 Alone, YOLO, Absurd만 single로 합쳤거든요.
어떤 이유로 아래처럼 인코딩 하게되셨는지 궁금합니다!
data['Education'] : label encoding 사용하여 학사->석사->박사 순으로 인코딩
data['Marital_Status'] : one hot encoding 사용하여 결혼 / 싱글 두가지로 인코딩
결론적으로는 쓸모없는 feature의 가짓수를 줄이고 싶어서 저렇게 인코딩했습니다.
married나 together 모두 [결혼]으로 묶일 수 있고, 나머지인 single, divorced, window, alone, yolo, absurd는 모두 [싱글]이라는 카테고리로 묶을 수 있기 때문에 feature의 가짓수를 늘리지 않고도 one-hot encoding으로 표현되어서 두가지로만 인코딩 하였습니다. 표현만 다르고 같은 범주를 나타낸다고 생각했기 때문입니다.
education 부분은 master, 2n cycle은 석사를 나타내는 다른 말들이고, basic이나 graduation은 둘 모두 학사를 지칭하는거 같아서 같은 그룹으로 묶게 되었습니다. 또한 학사->석사->박사는 순서가 있기 때문에 one-hot encoding을 통해 feature의 개수를 늘리는 대신, label encoding으로 진행하게 되었습니다.
친절한 답변 감사합니다!!! :)
코드 나눔 감사합니다. 언제나 많은 도움이 되고 있습니다!
Data is money님, 언제나 부족한 제 코드 읽어주셔서 감사합니다!
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
덕분에 공부할 수 있었습니다. 코드 공유 감사합니다.
Age 컬럼을 생성하는 방법을 저도 마련해보았습니다. age = (Dt_Customer' year) - (year_birth )로 생각해보았는데, 이건 어떻게 생각하시는지요?
2022에서 빼는 것도 생각해보았는데 어떤 게 타당한지 해서 도움을 받으려합니다.