[PYTHON] So funktionieren Kaggle-Ranglistenpunkte

So funktionieren Kaggle-Ranglistenpunkte

kaggle_ranking.png

Dieser Artikel ist der 14. Tag des Adventskalenders 2019 auf dem Weg zum AI-Dojo "Kaggle" von Nikkei xTECH Business AI ① Adventskalender 2019.

Kaggle verfügt zusätzlich zu den Stufen Großmeister / Meister / Experte / Mitwirkender / Anfänger über ein Rangsystem, das sich nach der Farbe und Anzahl der gewonnenen Medaillen richtet. Es scheint, dass es im Vergleich zu Tier nicht so wichtig ist, aber ich werde erklären, wie es funktioniert. (* Nur Wettbewerb)

Kaggle notebook https://www.kaggle.com/d1348k/learn-aboout-competition-points

github https://github.com/uratatsu/kaggle_ranking

Was ist Kaggle Punkt?

Neben Gold-, Silber- und Bronzemedaillen umfasst der Wettbewerb von Kaggle auch Wettbewerbspunkte, die den Teilnehmern Punkte geben, wenn die Rangliste des Wettbewerbs bestätigt wird. Punkte werden nach der folgenden Formel berechnet.

Mechanismus der Punkte

 \Biggl[\frac{100000}{\sqrt{N_{teammates}}}\Biggl]\Bigl[Rank^{-0.75}\Bigl]\bigl[\log_{10} (1+\log_{10} (N_{teams})) \bigl]\biggl[e^{-t/500}\biggl]

Zunächst werden 100.000 Punkte als Basispunkte verteilt. Von hier aus wird abhängig von der Anzahl der teilnehmenden Teams, der Rangliste und der Anzahl der eigenen Teams ein Koeffizient von 0 bis 1 angewendet, um die endgültigen Punkte zu bestimmen, die verdient werden sollen.

Auswirkung des Rankings

\Bigl[Rank^{-0.75}\Bigl]

Es überrascht nicht, dass die Rangfolge des privaten Wettbewerbs die größte Auswirkung hat. kaggle_points_rank.png Abhängig vom Rang nimmt der Koeffizient ab, wie in der obigen Grafik gezeigt.

Rangfolge Koeffizient
1st 1.0
2nd 0.5946
3rd 0.4387
10th 0.1778
50th 0.05318
100th 0.03162

Der Unterschied zwischen dem 1. und 2. Platz ist sehr groß, und wenn Sie auf dem 2. Platz sind, erhalten Sie ungefähr 60% der auf dem 1. Platz verdienten Punkte. Sie können nur etwa 18% auf dem 10. Platz und 3% auf dem 100. Platz erhalten.

Auswirkung der Anzahl der teilnehmenden Teams

\bigl[\log_{10} (1+\log_{10} (N_{teams})) \bigl]

Dieser Abschnitt ändert sich abhängig von der Anzahl der am Wettbewerb teilnehmenden Teams. Je größer die Anzahl der teilnehmenden Teams ist, desto größer ist der Koeffizient, der multipliziert werden kann. Wie Sie jedoch aus der folgenden Grafik ersehen können, liegt der Wert selbst bei 10.000 Teilnehmern (der höchste Wert liegt bisher bei 8802 Teams) bei etwa 0,7. Wenn 1.000 Teams teilnehmen, sind es ungefähr 0,6. Selbst wenn sich die Teilnehmerzahl um das Zehnfache erhöht, erhöhen sich die Punkte nur um das 1,16-fache. kaggle_points_teams.png

Kaggle Management Konzept ist auf dem offiziellen Blog geschrieben, aber 100 Teambeteiligungswettbewerb und 1.000 Teambeteiligung Es scheint, dass es auf der Idee basiert, dass sich die Fähigkeiten, die erforderlich sind, um im Wettbewerb zu gewinnen, nicht so sehr ändern werden. Ich habe früher log10 (x) verwendet, daher scheint es einen 1,5-fachen Unterschied zwischen 100 Teams und 1000 Teams zu geben.

Auswirkung der Anzahl der Teammitglieder

 \frac{1}{\sqrt{N_{teammates}}}

Die Anzahl der Teammitglieder wird mit dem nach der obigen Formel berechneten Koeffizienten multipliziert.

kaggle_points_teammates.png

Zwei Leute nehmen sieben und vier Leute nehmen ungefähr die Hälfte. Ich habe den Eindruck, dass die Anzahl der Teammitglieder aufgrund der Anzahl der Teammitglieder geringer ist als erwartet.

Anzahl der Personen Koeffizient
1 1.0
2 0.7071
3 0.5774
4 0.5
5 0.4472
8 0.3536

Wirkung der verstrichenen Tage

\biggl[e^{-t/500}\biggl]

Der letzte Term ist der Zerfall über die Anzahl der verstrichenen Tage. kaggle_ranking_days.png

Es wird in weniger als einem Jahr in 346 Tagen halbiert.

Beziehung zwischen Rang und Anzahl der Teams

Von diesen können Sie nur die Anzahl und Rangfolge Ihrer Teamkollegen steuern. Obwohl die erzielten Punkte bei der Bildung eines Teams abnehmen, steigt die Rangfolge im Allgemeinen bei der Zusammenführung von Teams. Wenn also die Zunahme der verdienten Punkte aufgrund der höheren Rangfolge groß ist, wurde die endgültige Rangfolge durch die Bildung eines Teams erhöht. Sie können mehr Punkte bekommen. Es ist eine Heatmap der Beziehung zwischen dem Ranking und der Anzahl der Teammitglieder. kaggle_ranking_heatmap.png

Wenn sich beispielsweise die Person auf dem 2. Platz mit jemandem zusammenschließt und den 1. Platz belegt, erhöhen sich die Punkte, weil 59,5% → 70,7%.

Nun, ich denke nicht, dass es normalerweise notwendig ist, weil es leer ist, Teams zusammenzuführen, während man darüber nachdenkt. .. Es kann wichtig sein für Kaggle Ranking Top 30 oder Super High Rank Leute.

Beispiel für die Punkterfassung

def calculate_points(teammates, rank, teams, days):
    points = 100000 * 1/np.sqrt(teammates) * np.power(rank, -0.75) * np.log10(1+np.log10(teams)) * np.exp(days/500)
    return points

Wenn Sie versuchen, einige Fälle mit dieser Formel zu berechnen, erhalten Sie die folgenden Punkte.

Rangfolge Anzahl der teilnehmenden Teams Anzahl der Teamkollegen Medaille Verdiente Punkte
1 1000 1 Gold 60206
1 1000 5 Gold 26925
5 1000 1 Gold 18006
25 1000 1 Silver 5385
75 1000 1 Bronze 2362
100 1000 1 Bronze 1904

Die Wirkung des Solo-Gewinns ist enorm und einer von ihnen entspricht dem 32. Platz in der Rangliste der Kaggle-Wettbewerbe (* ab 14. Dezember 2019). Übrigens, im ersten Bild hat Mr. Bestfitting, der derzeit den 1. Platz in der Rangliste der Kaggle-Wettbewerbe belegt, 20 Solo-Goldmedaillen (!) Und 3 Solo-Gewinner (!!), was seinesgleichen sucht.

abschließend

Ich wusste, dass es sich abhängig von der Anzahl der Teams und der Rangliste ändern würde, aber es war überraschend interessant, die Dämpfungsrate zu visualisieren. Ich denke, es gibt viele Möglichkeiten zu verstehen, wie man Punkte hinzufügt, aber ich hoffe, es hilft Ihnen, die Berechnungsmethode richtig zu verstehen.

Recommended Posts

So funktionieren Kaggle-Ranglistenpunkte
Wie Taple funktioniert | Python
[Für Nicht-Programmierer] Wie man Kaggle läuft