10 · Praktyka · 3 min czytania · aktualizacja
Jak zacząć konkurs na Kaggle i wysłać pierwsze zgłoszenie?
W skrócie
Praca na Kaggle to pętla: zrozum metrykę, zbuduj walidację podobną do testu, wyślij prosty baseline, ulepszaj według lokalnej CV, nie rankingu publicznego.
Co to jest
Kaggle to platforma konkursów predykcyjnych: organizator udostępnia zbiór uczący z etykietami i zbiór testowy bez etykiet, uczestnicy wysyłają predykcje, a system liczy wynik zadaną metryką. Część testu jest oceniana od razu (ranking publiczny), reszta dopiero po zakończeniu konkursu (ranking prywatny), i to ona decyduje o miejscu.
Skuteczny sposób pracy jest w gruncie rzeczy zwykłym przebiegiem projektu ML z jedną różnicą: metryka i zbiór testowy są narzucone z góry, a pokusa strojenia pod widoczny wynik — bardzo silna. Titanic jest klasycznym konkursem na start: 891 pasażerów w zbiorze uczącym, 418 w testowym, metryka to dokładność.
Mechanizm — dlaczego tak działa
Pierwszy krok to metryka i format zgłoszenia, bo one definiują problem. Inny model wygrywa przy dokładności, inny przy log-loss, inny przy AUC. Kto optymalizuje inną metrykę niż organizator, traci punkty, zanim zacznie modelować.
Drugi krok to lokalna walidacja, która naśladuje relację między zbiorem uczącym a testowym. Jeśli test pochodzi z innego okresu, walidacja musi ciąć po czasie; jeśli ci sami klienci występują wiele razy, foldy muszą grupować po kliencie (GroupKFold). Taka walidacja jest jedynym kompasem, bo ranking publiczny liczony jest na małej próbce i daje tylko jedną liczbę na zgłoszenie — a zgłoszeń dziennie jest mało.
Trzeci krok to szybkie, proste zgłoszenie. Sprawdza ono cały łańcuch (wczytanie, przetwarzanie, format pliku, kolejność identyfikatorów) i daje pierwszy punkt kalibracji: jeśli lokalna CV mówi 79%, a ranking 78%, walidacja jest prawdopodobnie sensowna. Jeśli różnica jest duża, trzeba szukać błędu, zanim zbuduje się cokolwiek złożonego.
Potem zaczyna się pętla: hipoteza → zmiana → lokalna CV → zapis w dzienniku. Wysyła się tylko to, co poprawiło CV, a wynik publiczny traktuje jako dodatkowy, zaszumiony punkt danych. Na końcu najlepsze modele łączy się w zespół, a jako ostateczne zgłoszenia wybiera te najlepsze według CV, nie według rankingu publicznego.
Na przykładzie
Pierwsze zgłoszenie na Titanicu: reguła „kobiety przeżywają”. Na zbiorze uczącym daje 78,7% i nie wymaga żadnego modelu, a sprawdza cały proces — plik z kolumnami PassengerId i Survived, 418 wierszy. Drugie zgłoszenie: pipeline z imputacją, one-hot i regresją logistyczną — 79,6% w 5-krotnej walidacji krzyżowej. Trzecie: gradient boosting — 81,5%.
Ile z tego zobaczy ranking? Zasymulowaliśmy konkurs, dzieląc 891 pasażerów z ustalonym ziarnem na 473 do uczenia i 418 „testowych”, a test po połowie na publiczny i prywatny. Reguła płci dała 78,5% na publicznym i 78,9% na prywatnym, zgodnie z lokalną oceną. Ale 209 osób to mało: jeden pasażer więcej lub mniej zmienia wynik o 0,48 punktu procentowego, a błąd standardowy dokładności rzędu 80% to około 2,8 punktu. Różnice między dobrymi modelami są mniejsze niż ten szum.
Dane: Titanic
W praktyce
- Przeczytaj stronę z danymi i metryką, zanim otworzysz notebook. Zapisz metrykę jako funkcję i używaj jej w
cross_val_score(..., scoring=...). - Zbuduj walidację podobną do testu:
StratifiedKFold,GroupKFoldalboTimeSeriesSplit— i trzymaj te same foldy przez cały konkurs. - Pierwsze zgłoszenie w ciągu godziny: baseline,
pd.DataFrame({'PassengerId': ids, 'Survived': pred}).to_csv('submission.csv', index=False). - Prowadź tabelę: zmiana, CV (średnia i odchylenie), wynik publiczny. Ich korelacja mówi, czy walidacja działa.
- Czytaj forum i publiczne notebooki dla pomysłów, ale weryfikuj je własną CV.
- Typowy błąd: wybór ostatecznych zgłoszeń według rankingu publicznego.
Najczęstsze pytania
- Dlaczego na szczycie rankingu Titanica są wyniki 100%?
- Lista ocalałych z Titanica jest publicznie dostępna, więc część zgłoszeń po prostu ją przepisuje. W naszej walidacji krzyżowej rzetelne modele dają od 78,7% (reguła płci) do około 82% — i taki zakres, a nie szczyt rankingu, jest uczciwym punktem odniesienia.
- Ile zgłoszeń dziennie warto wysyłać?
- Tyle, ile masz hipotez sprawdzonych lokalnie. Wysyłanie dziesiątek wariantów i wybieranie najlepszego na rankingu publicznym to dopasowywanie się do szumu tej małej próbki, które zwykle mści się na rankingu prywatnym.
- Notebook na Kaggle czy praca lokalna?
- Oba działają. Konkursy z kodem (code competitions) wymagają uruchomienia predykcji w notebooku Kaggle z limitem czasu i sprzętu, więc warto od początku pisać kod, który zmieści się w tych limitach.
Źródła
- Kaggle: „Titanic — Machine Learning from Disaster”, https://www.kaggle.com/c/titanic
- Dokumentacja scikit-learn: „Cross-validation: evaluating estimator performance”, https://scikit-learn.org/stable/modules/cross_validation.html
- James G., Witten D., Hastie T., Tibshirani R. „An Introduction to Statistical Learning”, 2nd ed., 2021, rozdz. 5 (Resampling Methods).
- Géron A. „Hands-On Machine Learning”, 3rd ed., O'Reilly 2022, rozdz. 2.