2024. 2. 22. 19:29ㆍ부트캠프
이번 프로젝트로 캐글에서 진행중인 home credit- credit risk model stability competition에 참가하였다.
이때는 몰랐다. 벽을 심하게 느낄줄
대회 경험이 없었고, 실제 대회에 참가해 보는거 만으로도 얻어갈 수 있는게 많을거같아 참여하였다.
팀원은 나 포함 5명이다. 다들 열심히하시고 잘하신다. 나도 더 열심히 하게되는거같다.
우선 제출하는 평가 기준을 살펴보았다.
gini=2∗AUC−1
stability metric=𝑚𝑒𝑎𝑛(𝑔𝑖𝑛𝑖)+88.0⋅𝑚𝑖𝑛(0,𝑎)−0.5⋅𝑠𝑡𝑑(residuals)
최종적으로 stability metric을 구해야했다.
이게 지금은 문제가 많아 submit이 막히고 계산식도 바뀔거라고한다.
먼저 데이터를 살펴보았다. 이렇게 많은 데이터를 처음본다. 직관적이지 않고 해석하는데 어려움이 있었지만 차근차근해보았다.
depth = 0
특정 case_id에 직접 연결된 특징
depth = 1
case_id 마다 과거 기록이 있는데 이 기록이 num_group1로 묶인 데이터
depth = 2
case_id 마다 과거 기록이 있는데 이 기록이 num_group1과 num_group2로 묶인 데이터.
num_group1과 num_group2가 무엇을 뜻하는게 있나?
num_group1 또는 num_group2가 person index를 나타내는 경우(예측 변수 정의에서는 명확함) 0 지수는 특별한 의미를 갖습니다. num_groupN=0인 경우는 신청자(대출을 신청한 사람)입니다.
train_person1 에 num_group1 칼럼이 있음 값이 0-5까지 있는데 비슷한 값끼리 묶어놨을려나?
이런 고민들을 해보고 결론은 숫자에 집착하지말고 크게 봐서 이런식으로 구분을 지었구나 라고 판단하였다.
EDA 필사
Some features should be of dtype date (or datetime).
We cast columns ending D to datetime at read time. Also note that we use pl.scan_parquet() to save memory.
D로 끝나는게 date 타입이니 datetime으로 바꿔야함.
datetime은 날짜와 시간을 표시하고 있는 string 데이터 타입을 가진 피처이다.
시간제약이 있고 메모리를 아낄려고 pl.scan_parquet() 사용
polars도 여기서 처음보고 사용하게되었다. 큰 데이터 처리에 유용한 라이브러리다. 아직도 잘 모르겠다.어색하다
대회가 실제 데이터를 기반으로 하기때문에 저 시기가 코로나때여서 확 줄었다고 예상했는데 discussion에서도 covid 때문이라고 많은 의견이 있었다.
lastapprcommoditycat_1041M → 신청자가 마지막으로 대출 신청한 상품 카테고리.
a55475b1 이 값이 제일 많이 나오네. 이게 먼지모르겠지만..
M 으로 끝나는 값들은 마스킹값인데 정확하게 저게 뭔지는 모르지만 분포를 파악하는 용도로 사용해야할것같다.
competition host가 올린 스타터노트북과 각자 팀원이 EDA를 통해 추가할만한 feature를 넣고 우리 팀만의 베이스라인 코드를 만들었다. 노트북 투표수가 좀 생겨 동메달이 생겼다. 멋지다.
person_1 데이터를 맡았는데 데이터가 고루 분포된게 한개인가 두개정도 있어 이 feature를 추가했다.
그리고 베이스라인에 static 데이터는 다 추가하길래 이 데이터에 대한 처리도 필요해 보였다.
우선 올라와있는 EDA노트북을 참고하여 missing value들을 다 drop하고 모델을 돌려봤는데 오히려 성능이 떨어졌다. 칼럼 수가 줄어드니 모델 성능이 낮아졌다. 다른 의미있는 feature들을 고르는데 어려움이 있다.
'부트캠프' 카테고리의 다른 글
자체경진대회-regression (0) | 2024.04.03 |
---|---|
첫번째 그룹스터디 세미나 및 회고 (0) | 2024.03.15 |
ML (0) | 2024.02.02 |
통계 (1) | 2024.01.24 |
EDA (1) | 2024.01.12 |