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
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.
\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.
\Bigl[Rank^{-0.75}\Bigl]
Sans surprise, le plus grand impact est le classement de la compétition en privé. 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.
\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 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.
\frac{1}{\sqrt{N_{teammates}}}
Le nombre de coéquipiers est multiplié par le coefficient calculé par la formule ci-dessus.
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 |
\biggl[e^{-t/500}\biggl]
Le dernier terme est la décroissance sur le nombre de jours écoulés.
Il sera divisé par deux en 346 jours, soit moins d'un an.
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.
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.
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.
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.