Logo kursu
Na licencji Pixabay

L7, L8: Rozwiązywanie problemu

Efekty kształcenia laboratorium


  • Zastosowanie metod maszynowego uczenia do rozwiązania zadania konkursowego na platformie Kaggle

  • Zapoznanie się z platformą Kaggle

  • Zapoznanie się z podstawową strukturą biblioteki uczenia maszynowego

Konkurs

Zajęcia laboratoryjne na laboratorium 7 i 8 będą realizowane w formie zadania konkursowego.

Regulamin

  1. Konkurs jest realizowany z wykorzystaniem platform Kaggle i Github Classroom

  2. Każdy student może posiadać tylko jedno konto użytkownika na platformie Kaggle biorące udział w konkursie.

  3. Można przyjąć dowolną nazwę użytkownika za wyjątkiem obraźliwych lub narusząjących dobra osobiste. Nazwa użytkownika biorąca udział w konkursie powinna być wpisana do pliku README.md w przesłanym zadaniu na platformie Github Classroom.

  4. Obowiązuje zakaz dzielenia się kodu z pozostałymi uczestnikami konkursu

  5. Można wysłać maksymalnie 15 zgłoszeń konkursowych dziennie do ewaluacji

  6. Można wybrać tylko jedno zgłoszenie do końcowej oceny

  7. Konkurs trwa od 1.06 9:15 do 21.06 20:00

  8. Każda próba oszustwa (manipulacje na zbiorze danych, współdzielenie kodu itp.) będzie wiązała się z usunięciem z uczestinctwa i otrzymaniem 0 pkt za ostatnie zadanie

  9. Zgłoszenie jest uznawane za poprawne, jeżeli zajdą wszystkie poniższe punkty:

    • Wysłanie pliku csv z wynikami predykcji na zbiorze testowym na platformę Kaggle

    • Osiągnięcie na tablicy publicznej (public) wyniku przekraczające 0.55 uśrednionej metryki f1-score

    • Zamieszczenie na platformie Github Classroom kodu rozwiązania wraz z wysłanym plikiem submission

  10. Poprawne zgłoszenie konkursowe student otrzyma 13 pkt za zadanie.

  11. Student otrzyma 25 pkt (pełna punktacja) za zgłoszenie, którego wynik ewaluacji na publicznej tablicy wyników (public leaderboard) wyniesie więcej niż 0.75

  12. Trójka studentów, która znajdzie się w TOP 3 na prywatnej tablicy wyników, otrzyma 5 punktów dodatkowych do oceny z laboratorium. Osoby te będą poproszone na ostatnich zajęciach o krótkie zaprezentowanie rozwiązania. Nie obowiązuje tutaj podział na grupy, brany jest wynik obejmujący wszystkie grupy laboratoryjne.

Zgłoszenia rozwiązania

Pliki zgłoszeniowe powinny mieć dwie kolumny i być w formacie csv:

  • Id - identyfikator przypadku ze zbioru uczącego

  • Predicted - Predykowana klasa

Przykładowy plik rozwiązania:

Id,Predicted
1, 1
2, 0
3, 0
4, 1
5, 1
6, 0
etc.

Metryka

Zgłoszenie jest rankingowane na podstawie uśrednionej metryki f1-score (typ uśrednienia: micro)

Tablica wyników

Podczas realizacji konkursu będą dostępne dwie tablice wyników:

  • Publiczna, dostępna od momentu uruchomienia konkursu. Każdy uczestnik będzie mógł podejrzeć aktualne miejsce w rankingu i uzyskany wynik. Wyniki predykcji będą ewaluowane z wykorzystaniem 30% zbioru testowego.

  • Prywatna, dostępna po zakończenia konkursu. Każdy uczestnik, będzie mógł podejrzeć aktualne miejsce i uzyskany wynik dopiero po zakończeniu konkursu. Wyniki predykcji będą ewaluowane z wykorzystaniem 70% zbioru testowego.

W związku z tym, że ewaluacja w ramach danej tablicy wyników dokonywana jest na innej próbce danych, miejsce rankingowe może ulec zmianie. Podział danych na tablice publiczną i prywatną jest niejawny i ewaluacja wyników następuje po stronie platofrmy Kaggle

Zbiór danych

Zbiór danych tworzy lista projektów realizowanych z Funduszy Europejskich w Polsce w latach 2014-2020. Zbiór danych został wcześniej oczyszczony i wybrano podzbiór 15 cech. Cecha wyjściowa składa się z dwóch klas i z powodu prowadzenia konkursu została utajniona.

Podział zbioru

Podzbiór

Liczba przypadków

Czy podzbiór można modyfikować podzbiór

Czy posiada etykiety

Liczba przypadków klasy 0

Liczba przypadków klasy 1

Rozkład klas

Uczący (train)

46800

\(\surd\)

\(\surd\)

21857

24943

0.467 / 0.533

Walidacyjny (dev)

15600

\(\surd\)

\(\surd\)

7320

8280

0.469 / 0.531

Testowy (test)

15600

\(\times\)

\(\times\)

-

-

-

import sys
sys.path.append('../../pdiow-challenge/')

from pdiow.dataset import PDIOWChallengeDatasetLoader
from pandas_profiling import ProfileReport

ds = PDIOWChallengeDatasetLoader("../../pdiow-challenge/dataset/").load()
df = ds.x_train
df["target"] = ds.y_train

Kolumny w zbiorze danych

Nazwa

Opis

title

Tytuł projektu

description

Skrócony opis do 2000 znaków

beneficiary_name

Nazwa beneficjenta

fund

Fundusz

programme

Program

eu_financial_rate

Poziom unijnego dofinansowania w procentach w %

finance_form

Forma finansowania

territory_type

Typ obszaru, na którym realizowany jest projekt

start_date

Data rozpoczęcia realizacji projektu

end_date

Data zakończenia realizacji projektu

competitive_procedure

Projekt konkursowy czy pozakonkursowy

economic_activity_area

Dziedzina działalności gospodarczej, której dotyczy projekt

project_thematic_objective

Cel projektu

area_of_project_intervention

Obszar wsparcia projektu

teritorial_delivery_mechanism

Projekt realizowany w ramach terytorialnych mechanizmów wdrażania

y

brak*

*Opis będzie przedstawiony na ostatnich zajęciach

Raport z Pandas Profiling zbioru uczącego

report = ProfileReport(df)
report.to_notebook_iframe()