Sprid vidare: försening!
Languages en svNot: du får skicka in som mest 8 gånger på detta problem. Detta beror på att det inte finns en publik/privat indelning av testdatan.
Zimmer simmaren har ett utmattande jobb: han arbetar som en
förseningsvidarespridare. Det betyder
att han måste simma mellan alla städer i Tyskland för att hålla
dem informerade om potentiella förseningar i det nationella
tågnätet. Även om Zimmer i allmänhet tycker om att simma har
denna uppgift gått helt över styr de senaste åren, och Zimmer
har tvingats leverera nyheter om förseningar mer effektivt än
jultomten levererar presenter (trots att han - till skillnad
från Herr Claus - inte har en magisk släde!!). Antalet
förseningar har ökat under de senaste åren och Zimmer börjar nu
ge upp arbetet som han en gång älskade. Tyvärr har Zimmer
därför missat att märka ett par ($3\, 500\, 000$) förseningar under det
senaste ett och ett halvt året. Zimmer vill att du skriver en
AI-modell som, givet tågstationen och den planerade
ankomsttiden för tåget till stationen, gissar tågets försening.
För att hjälpa dig har han gett dig all annan data inklusive
förseningarna för de som han inte missade att märka.
Det är inte säkert att dessa tåg faktiskt är försenade, de kan
också vara tidiga!
Input
Attachments innehåller följande filer:
-
data.zip är en zip-fil som innehåller följande filer:
-
train.csv - träningsdatapunkter, med information om tågstation, tidpunkt när tåget skulle ha anlänt och hur stor den givna förseningen blev (i minuter).
-
test.csv - testdata, med information om endast tågstation och tidpunkt när tåget skulle ha anlänt.
-
license.txt - en licens vi måste ge för att få använda datan.
-
-
baseline.ipynb - En enkel grundlösning på problemet. Den lägger till sin egen källkod i slutet av inlämningen.
-
print_source_code.py - Ett hjälpskript för att skriva ut din källkod som en kommentar, användbart för att inkludera din lösning i inlämningsfilen. Fungerar inte i en Jupyter Notebook.
Output
För varje tåginformation (tågstation, tid) i test.csv, skriv ut en rad som innehåller ett enda heltal: den gissade förseningen för det tåget.
Scoring
Din lösning kommer att utvärderas baserat på hur exakt du gissade förseningarna jämfört med de faktiska.
Poängberäkningen görs enligt följande:
-
För varje tåg är ditt fel kvadraten på skillnaden mellan din gissning och den verkliga förseningen.
-
Mer exakt, anta att $x$ är din gissning och att $y$ är den verkliga förseningen. Ditt fel för det tåget är $(x-y)^2$.
-
Ditt övergripande fel $S$ är medelvärdet av alla individuella fel: det totala felet dividerat med antalet tåg.
Dina slutliga poäng bestäms genom att jämföra ditt fel $S$ med ett bas-fel (OBS: detta är INTE felet som baseline-lösningen får) och ett bästa fel:
-
Bas-fel: $90$
-
Bästa fel: $80$
Poängen beräknas med formeln:
\[ \text{Poäng} = 100 \cdot \max \left(0,\; \min \left(1,\; \frac{90 - S}{90 - 80} \right)\right) \]Det innebär:
-
Om ditt fel $S$ är $\ge 90$ får du 0 poäng.
-
Om ditt fel $S$ är $\le 80$ får du 100 poäng.
-
Annars får du en poäng mellan 0 och 100 proportionell mot din förbättring jämfört med bas-felet.
Testning
Under tävlingen poängsätts din lösning på all testdata. Din poäng under tävlingen är densamma som din slutliga poäng.
