[PYTHON] Comment fonctionnent les points de classement Kaggle

Comment fonctionnent les points de classement Kaggle

kaggle_ranking.png

Cet article est le 14ème jour du Calendrier de l'Avent 2019 sur la route du dojo AI "Kaggle" par Nikkei xTECH Business AI ① Calendrier de l'Avent 2019.

Kaggle dispose d'un système de classement en plus des niveaux Grand maître / Maître / Expert / Contributeur / Novice, qui sont déterminés par la couleur et le nombre de médailles remportées. Il semble que ce n'est pas si important par rapport à Tier, mais je vais vous expliquer comment cela fonctionne. (* Concours uniquement)

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

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

Qu'est-ce que le point Kaggle?

En plus des médailles d'or / d'argent / de bronze, la compétition de Kaggle comprend également des points de compétition, qui donnent des points aux participants lorsque le classement de la compétition est confirmé. Les points sont calculés par la formule suivante.

Mécanisme des points

 \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]

Tout d'abord, 100 000 points seront distribués sous forme de points de base. À partir de là, en fonction du nombre d'équipes participantes, du classement et du nombre de ses propres équipes, un coefficient de 0 à 1 sera appliqué pour déterminer les points finaux à gagner.

Effet du classement

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

Sans surprise, le plus grand impact est le classement de la compétition en privé. kaggle_points_rank.png Selon le rang, le coefficient diminuera comme indiqué dans le graphique ci-dessus.

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

La différence entre la 1ère et la 2ème place est très grande, et si vous êtes à la 2ème place, vous obtiendrez environ 60% des points gagnés en 1ère place. Vous ne pouvez obtenir qu'environ 18% à la 10e place et 3% à la 100e place.

Effet du nombre d'équipes participantes

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

Cette section change en fonction du nombre d'équipes participant à la compétition. Plus le nombre d'équipes participantes est élevé, plus le coefficient qui peut être multiplié est élevé, mais comme vous pouvez le voir sur le graphique ci-dessous, même si 10000 personnes participent (le plus élevé jusqu'à présent est de 8802 équipes), il est d'environ 0,7. Si 1000 équipes participent, il est d'environ 0,6, donc même si le nombre de participants augmente 10 fois, les points n'augmenteront que 1,16 fois. kaggle_points_teams.png

Kaggle management concept est écrit sur le blog officiel, mais 100 concours de participation d'équipe et 1 000 participation d'équipe Il semble que cela repose sur l'idée que les compétences requises pour gagner dans la compétition ne changeront pas tellement. J'avais l'habitude d'utiliser log10 (x) avant, il semble donc qu'il y avait une différence de 1,5 fois entre 100 équipes et 1000 équipes.

Effet du nombre de membres de l'équipe

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

Le nombre de coéquipiers est multiplié par le coefficient calculé par la formule ci-dessus.

kaggle_points_teammates.png

Deux personnes en prennent sept et quatre personnes environ la moitié. J'ai l'impression qu'il y a moins d'atténuation en raison du nombre de membres de l'équipe que ce à quoi je m'attendais.

Nombre de personnes coefficient
1 1.0
2 0.7071
3 0.5774
4 0.5
5 0.4472
8 0.3536

Effet des jours écoulés

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

Le dernier terme est la décroissance sur le nombre de jours écoulés. kaggle_ranking_days.png

Il sera divisé par deux en 346 jours, soit moins d'un an.

Relation entre le classement et le nombre d'équipes

Parmi ceux-ci, les seules choses que vous pouvez contrôler sont le nombre et le classement de vos coéquipiers. Bien que les points gagnés diminuent lors de la formation d'une équipe, en général, le classement a tendance à augmenter lors de la fusion d'équipe.Ainsi, lorsque l'augmentation des points gagnés en raison du classement plus élevé est importante, le classement final a été augmenté en formant une équipe. Vous pouvez obtenir plus de points. Il s'agit d'une carte thermique de la relation entre le classement et le nombre de membres de l'équipe. kaggle_ranking_heatmap.png

Par exemple, si la personne en 2e place fait équipe avec quelqu'un et devient 1ère place, les points gagnés augmenteront car 59,5% → 70,7%.

Eh bien, je ne pense pas que ce soit généralement nécessaire car il est vide de fusionner des équipes en y réfléchissant. .. Cela peut être important pour le top 30 du classement Kaggle ou pour les personnes de très haut rang.

Exemple d'acquisition de points

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

Si vous essayez de calculer certains cas avec cette formule, vous obtiendrez les points suivants.

Classement Nombre d'équipes participantes Nombre de coéquipiers Médaille Points gagnés
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

L'impact de la victoire en solo est énorme, et l'un d'eux équivaut à la 32e place du classement des compétitions de kaggle (* au 14 décembre 2019). À propos, M. bestfitting, qui occupe actuellement la première place du classement des compétitions kaggle dans la première image, a 20 médailles d'or en solo (!) Et 3 vainqueurs en solo (!!), ce qui est sans égal.

en conclusion

Je savais que cela changerait en fonction du nombre d'équipes et du classement, mais c'était étonnamment intéressant de visualiser le taux d'atténuation. Je pense qu'il existe de nombreuses façons de comprendre comment ajouter des points, mais j'espère que cela vous aidera à comprendre correctement la méthode de calcul.

Recommended Posts

Comment fonctionnent les points de classement Kaggle
Comment fonctionne Taple | Python
[Pour les non-programmeurs] Comment marcher Kaggle