kaggle 경기[March Machine Learning Mania 2021-NCAAM] 체험기

7121 단어 체험PythonKaggle

이마


이 기사는 March Machine Learning Mania 2021 - NCAAM카글(카글)의 형식으로 2021/2/26~2021/4/7(최종submit은 2021/3/19)에서 열린 대회에 두 사람이 참가해 자신의 해결 방안을 공개하는 동시에 앞으로 대회에 참가하실 여러분께 어떤 참고 가치가 있을까 싶습니다.
(3/27시: 88/707 청동표 링 안)

경기 개요


개요를 대략적으로 설명하면 다음과 같은 경기가 있을 것이다.
· 미국 대학 대항 농구 토너먼트 본전을 치르는 팀의 승패 예측
· 남자 농구 경기만 개최여자 농구 결과 예측
• 매년 경연 대회 개최
· 예측 결과의 마지막 submit 이후 실제 경기 결과는 LeaderBoard에 반영되어 득점, 랭킹이 오르락내리락한다
· 최종 참가 팀 수 707개(메달 획득 ~ 100위)
실시간 경기 결과가 득점에 반영되기 때문에 리더보드 변동 방식은 개인적으로 흥미롭다.
맨날 카글 보러 가고 싶지?
매년 열리는 대회인 만큼 과거 상위 솔루션과 EDA는 참고 가치가 크다.
또 개최부터 최종 submit까지 기간이 짧고 참가 기간이 짧아 2021/3/5, 최종 submit까지 2주간 충분한 시간이 없기 때문에 대회 경험이 없는 초보자가 1부터 자신의 방식대로 EDA와 모형을 구축하면 따라잡을 수 없다고 생각한다.
그래서 나는 함께 팀을 꾸린 사람들과 상의해 다음과 같은 전략을 취하기로 했다.
1. 참조 노트 선별
2. 과거의 경기 정보·역지식 수집(데이터 파악 포함)
3. 수집한 정보에 따라 특징량 만들기
4. 모델의 매개변수를 사용하여 조정
5. 최종 조정
아마 그렇게 이상한 짓을 하지 않았을 거예요. 왕도의 전략이라고 생각해요. 이것에 대해 자세히 적어 놓을게요.

1. 참조 노트 선별


경기 개요를 간단히 파악한 뒤 참고 노트 선정에 들어갔다.
카글에서는 세계적으로 풍부한 경기 경험을 가진 사람들이'이제 경기를 시작하는 여러분에게'라는 의미에서 출발선을 돌파할 수 있도록 최소한의 노트를 공개했다.
이 가운데 필자는 다음 두 권의 공개노트를 바탕으로 개발하기로 했다.
1. NCAAM 2021 - Features only
2. NCAAM 2021 Feature Importance w/ GPU XGBoost SHAP
선택한 이유:
• 어느 노트든지 알기 쉽게 써서 편집하기 쉽다
• 경기 진행에 필요한 틀을 완성했다
• 라이트gbm를 비롯한 gbdt계 모델은 학습 속도가 빨라 어느 정도 정밀도에 도달할 수 있다
가장 큰 이유야.

2. 과거 정보·역지식 수집(데이터 파악 포함)


나는 노트의 기초를 정하고 더 깊이 있게 정보를 수집할 수 있도록 수집을 시작했다.
했던 일로.
• 제공된 데이터 내용 확인
영역 지식 수집
• 과거 같은 대회를 치른 상위자의 해결 방안, 점수 확인
주요 3개입니다.

제공된 데이터 내용 확인


여기.에서 다운로드할 수 있는 csv 데이터가 어떤 데이터 구조인지 확인하고 마지막으로 사용하는 데이터는 다음과 같은 csv 데이터입니다.
1. MNCAATourneyCompactResults.csv

2. MNCAATourneySeeds.csv

3. MRegularSeasonCompactResults.csv

4. MMasseyOrdinals.csv

영역 지식 수집


필자는 농구를 해 본 경험이 없고 솔직히 어떤 운동인지 잘 몰라서 아래 기사를 참고하여 농구 경기 분석과 승부에 관한 요소를 배웠습니다.
1. B.STATS+ 스택 용어집
각종 창고의 계산 방법이 쓰여 있어 참고 가치가 있다.
2. Re: 0부터 ML 생활 숫자로 농구를 본다
3. MARCH MADNESS PREDICTION USING MACHINE LEARNING TECHNIQUES
다 읽은 것은 아니지만 과거 경기의 득점과 효과적인 모델에 대해서는 논란이 일고 있다.송이경(신지현):이제 좀 더읽어줬으면 좋겠는데...
이런 형식으로 농구 경기에 관한 지식을 조사하고 저장했다.

과거 열린 동일 경기 상위자의 해결 방안, 득점 확인


이 점에 관해서는 이번 대회토론에서 과거 경기에서 최종 상위자의 득점, 지금까지의 상위자들이 대체로 어떤 해결 방안을 사용했는지 참고로 소개했다.

3. 수집한 정보에 따라 특징량 만들기


드디어 여기서부터 특징량 제작에 들어간다.경기의 기본 데이터를 제공했기 때문에.
  • B.STATS+ 스택 용어집
  • 이 글을 참고해'Four Factors'로 불리는 경기에서 중요한 요소를 필두로 응용적인 스태킹 특징량을 제작하면서 각 팀이 몇 년간 시드를 획득한 특징량을 부여했다.
    그 밖에
  • NCAAM 2021 - Features only
  • 우리 노트에는 과거 토너먼트에서의 경기 정보를 토대로 이듬해 토너먼트 결과를 예측하는 데이터가 구축돼 있어 정규시즌 경기 승패와 팀의 경기 결과를 토대로같은 해 토너먼트 결과를 예측하는 데이터 구축으로 변경했다.
    (예: 2020년 토너먼트 결과를 예측하고 싶다→2020년까지 정규시즌 결과를 공부에 활용하고 싶다)

    4. 모델의 매개변수를 사용하여 조정


    학습과 추산의 데이터 구축을 완성했기 때문에 아래 사이트를 참고하여'정밀도를 어떻게 유지하여 과도한 학습을 방지할 것인가'를 조정하였다.(이번 경기는 이곳에서 가장 많은 시간을 들인 것 같다.)
    1. 공식 문서
    2. 기계 학습: 초파라미터 조정 방법
    3. LightGBM을 사용하여 클래스 분류 모델 구축
    4. LightGBM(gbdt) 매개 변수/Tuning의 개인 요약
    최종적으로 공식 문서를 읽고 파라미터 조정의 입구로서 개인 경험을 정리한 사이트도 참고가 되었다.
    그리드서치와 오타나 등 탐색적인 조정도 논의됐지만, 이번 경기에 적합하지 않아 결론을 내지 못했다.(이유 후술)

    5. 최종 조정


    여기까지 온 단계와 한 쌍을 이룬 사람들은 다음과 같은 토론을 진행했다.
    ・이번에 사용한 기종에 대한 최적 매개 변수
    ・모델에 사용되는 피쳐 양의 조합
    ・ 최종 추정에 대한 예측 확률 분포의 형식 (결과는 여기가 가장 중요하다)
    이번 경기의 평가 지표logloss의 값을 줄이기 위해0~1까지 연속치의 확률 분포 형태는 정규 분포가 아닌'0.5 부근은 골짜기, 0, 1은 분포하는 산'이며 "0.5 이상을 승리 예측으로, 0.5 이하를 실패 예측으로 할 때는 0.5 이상 예측수와 0.5 이하 예측수가 가급적 같기 때문(토너먼트 승리수와 실패수가 일치하기 때문)"이라고 설명했다.반드시 이런 예측 결과가 있어야 한다.
    예측 결과를 이것에 더욱 가깝게 하기 위해서 매개 변수 조정은 반드시 수동적이어야 한다.
    (더 깊이 파고들면 탐색적 조정도 이뤄질 수 있다.)
    조화되기 전에는 이런 느낌의 분포다.

    이렇게 되면 실제 승패든 로고스의 값이든 개선되지 않을 것이다.
    팀은 이 조건을 충족시키는 분포된 모델 파라미터를 최종 제출 기한까지 출력했다.(돌이켜보면 이곳은 완전히 힘이다...)
    결과적으로 최종 제출 결과의 분포는 이렇다.

    이상적인 분포 형식과는 거리가 멀지만 이 분포라면 예측 중일 때logloss치의 개선이 진전될 수 있기 때문에 상위를 겨냥할 수 있는 모양에 가깝다고 생각합니다.(시합이 너무 심하거나 예상을 벗어나면 역효과가 난다.)

    끝말


    체험기 형식으로 경기 중 생각하고 실행하는 일 등을 써봤다.
    대회 출전 시간이 짧아서 "솔직히 할 일이 많구나~"라고 생각했다.
    앞으로 경기를 시작할 분들은 "참가했지만 어떻게 진행해야 할지 잘 모르겠다"는 분들을 참고해주시면 좋을 것 같습니다.
    한편 저자Github는 이번 대회에 출전할 원본 코드를 공개했으니 관심 있는 분들은 한번 보세요.
    3/27 집필은 현재 청동 메달 범위 내에 있지만 아직 경기가 남아 있어 어떻게 될지 모르겠다.메달 따면 좋겠다.

    좋은 웹페이지 즐겨찾기