Groot Hadron Collider en Odnoklassniki

Met die voortsetting van die tema van masjienleerkompetisies op Habré, wil ons lesers aan nog twee platforms voorstel. Hulle is beslis nie so groot soos kaggle nie, maar hulle verdien beslis aandag.

Groot Hadron Collider en Odnoklassniki

Persoonlik hou ek nie te veel van kaggle nie om verskeie redes:

  • eerstens duur kompetisies daar dikwels vir etlike maande, en aktiewe deelname verg baie moeite;
  • tweedens, openbare pitte (openbare oplossings). Kaggle-aanhangers raai aan om hulle met die kalmte van Tibetaanse monnike te behandel, maar in werklikheid is dit nogal 'n skande wanneer iets waaraan jy al 'n maand of twee gewerk het, skielik op 'n silwerbord vir almal blyk te wees.

Gelukkig word masjienleerkompetisies op ander platforms gehou, en 'n paar van hierdie kompetisies sal bespreek word.

IDAO SNA Hackathon 2019
Amptelike taal: Engels,
organiseerders: Yandex, Sberbank, HSE
Amptelike Russiese taal,
organiseerders: Mail.ru Group
Aanlyn rondte: 15 Januarie - 11 Februarie 2019;
Finaal op die terrein: 4-6 April 2019
aanlyn - van 7 Februarie tot 15 Maart;
vanlyn - van 30 Maart tot 1 April.
Deur 'n sekere stel data oor 'n deeltjie in die Large Hadron Collider (trajek, momentum en ander taamlik komplekse fisiese parameters) te gebruik, bepaal of dit 'n muon is of nie
Uit hierdie verklaring is 2 take geïdentifiseer:
- in een moes jy net jou voorspelling stuur,
- en in die ander - die volledige kode en model vir voorspelling, en die uitvoering was onderhewig aan redelik streng beperkings op looptyd en geheuegebruik
Vir die SNA Hackathon-kompetisie is logboeke van inhoudvertonings van oop groepe in gebruikersnuusstrome vir Februarie-Maart 2018 ingesamel. Die toetsstel bevat die laaste week en 'n half van Maart. Elke inskrywing in die log bevat inligting oor wat gewys is en aan wie, sowel as hoe die gebruiker op hierdie inhoud gereageer het: dit gegradeer, kommentaar gelewer, geïgnoreer, of weggesteek in die stroom.
Die essensie van die SNA Hackathon se take is om elke gebruiker van die sosiale netwerk Odnoklassniki sy voer te rangskik, om die plasings wat 'n "klas" sal ontvang so hoog as moontlik te verhoog.
Op die aanlyn stadium is die taak in 3 dele verdeel:
1. rangskik poste volgens verskeie samewerkende kenmerke
2. rangskik plasings op grond van die beelde wat hulle bevat
3. rangskik plasings volgens die teks wat dit bevat
Komplekse pasgemaakte metrieke, iets soos ROC-AUC Gemiddelde ROC-AUC per gebruiker
Pryse vir die eerste fase - T-hemde vir N plekke, deurgang na die tweede fase, waar verblyf en etes betaal is tydens die kompetisie
Tweede fase - ??? (Om sekere redes was ek nie by die prysuitdeling teenwoordig nie en kon ek nie uitvind wat die pryse op die ou end was nie). Hulle het skootrekenaars aan alle lede van die wenspan belowe
Pryse vir die eerste fase - T-hemde vir die 100 beste deelnemers, deurgang na die tweede fase, waar reis na Moskou, verblyf en etes tydens die kompetisie betaal is. Teen die einde van die eerste fase is pryse ook aangekondig vir die beste in 3 take by fase 1: almal het 'n RTX 2080 TI-videokaart gewen!
Die tweede fase was 'n spanfase, spanne het bestaan ​​uit 2 tot 5 mense, pryse:
1ste plek - 300 000 roebels
2ste plek - 200 000 roebels
3ste plek - 100 000 roebels
jurieprys - 100 000 roebels
Amptelike telegramgroep, ~190 deelnemers, kommunikasie in Engels, vrae moes etlike dae wag vir 'n antwoord Amptelike groep in telegram, ~1500 deelnemers, aktiewe bespreking van take tussen deelnemers en organiseerders
Die organiseerders het twee basiese oplossings verskaf, eenvoudig en gevorderd. Eenvoudig het minder as 16 GB RAM benodig, en gevorderde geheue het nie by 16 gepas nie. Terselfdertyd, as hulle 'n bietjie vorentoe kyk, kon die deelnemers nie beduidend beter as die gevorderde oplossing presteer nie. Daar was geen probleme met die bekendstelling van hierdie oplossings nie. Daar moet kennis geneem word dat daar in die gevorderde voorbeeld 'n opmerking was met 'n wenk oor waar om die oplossing te begin verbeter. Basiese primitiewe oplossings is vir elk van die take verskaf, wat maklik deur die deelnemers oortref is. In die vroeë dae van die kompetisie het deelnemers verskeie probleme ondervind: eerstens is die data in Apache Parket-formaat gegee, en nie alle kombinasies van Python en die parketpakket het sonder foute gewerk nie. Die tweede probleem was om foto's van die poswolk af te laai; op die oomblik is daar geen maklike manier om 'n groot hoeveelheid data op een slag af te laai nie. As gevolg hiervan het hierdie probleme die deelnemers vir 'n paar dae vertraag.

IDAO. Eerste fase

Die taak was om muon/nie-muon deeltjies volgens hul eienskappe te klassifiseer. Die sleutelkenmerk van hierdie taak was die teenwoordigheid van 'n gewigkolom in die opleidingsdata, wat die organiseerders self geïnterpreteer het as vertroue in die antwoord vir hierdie reël. Die probleem was dat 'n hele paar rye negatiewe gewigte bevat het.

Groot Hadron Collider en Odnoklassniki

Nadat ons vir 'n paar minute oor die lyn met die wenk gedink het (die wenk het bloot die aandag op hierdie kenmerk van die gewigkolom gevestig) en hierdie grafiek gebou het, het ons besluit om 3 opsies na te gaan:

1) keer die teiken van lyne met negatiewe gewigte om (en gewigte dienooreenkomstig)
2) skuif die gewigte na die minimum waarde sodat hulle vanaf 0 begin
3) moenie tougewigte gebruik nie

Die derde opsie blyk die slegste te wees, maar die eerste twee het die resultaat verbeter, die beste was opsie nr. 1, wat ons dadelik na die huidige tweede plek gebring het in die eerste taak en eerste in die tweede.
Groot Hadron Collider en Odnoklassniki
Ons volgende stap was om die data te hersien vir ontbrekende waardes. Die organiseerders het vir ons reeds gekamde data gegee, waar daar 'n hele paar ontbrekende waardes was, en hulle is vervang deur -9999.

Ons het ontbrekende waardes gevind in die MatchedHit_{X,Y,Z}[N] en MatchedHit_D{X,Y,Z}[N] kolomme, en slegs wanneer N=2 of 3. Soos ons verstaan, het sommige deeltjies nie slaag al 4 detektors, en stop óf op die 3de óf 4de plaat. Die data het ook Lextra_{X,Y}[N] kolomme bevat, wat blykbaar dieselfde ding beskryf as MatchedHit_{X,Y,Z}[N], maar met behulp van 'n soort ekstrapolasie. Hierdie karige raaiskote het voorgestel dat Lextra_{X,Y}[N] vervang kan word vir die ontbrekende waardes in MatchedHit_{X,Y,Z}[N] (slegs vir X- en Y-koördinate). MatchedHit_Z[N] was goed gevul met die mediaan. Hierdie manipulasies het ons in staat gestel om die 1ste intermediêre plek in beide take te bereik.

Groot Hadron Collider en Odnoklassniki

As in ag geneem word dat hulle niks gegee het om die eerste skof te wen nie, kon ons daar gestop het, maar ons het voortgegaan, 'n paar pragtige prente geteken en met nuwe kenmerke vorendag gekom.

Groot Hadron Collider en Odnoklassniki

Ons het byvoorbeeld gevind dat as ons die snypunte van 'n deeltjie met elk van die vier detektorplate plot, ons kan sien dat die punte op elk van die plate in 5 reghoeke gegroepeer is met 'n aspekverhouding van 4 tot 5 en gesentreer by die punt (0,0), en in Daar is geen punte in die eerste reghoek nie.

Plaat nr. / reghoek afmetings 1 2 3 4 5
Plaat 1 500 × 625 1000 × 1250 2000 × 2500 4000 × 5000 8000 × 10000
Plaat 2 520 × 650 1040 × 1300 2080 × 2600 4160 × 5200 8320 × 10400
Plaat 3 560 × 700 1120 × 1400 2240 × 2800 4480 × 5600 8960 × 11200
Plaat 4 600 × 750 1200 × 1500 2400 × 3000 4800 × 6000 9600 × 12000

Nadat ons hierdie afmetings bepaal het, het ons 4 nuwe kategoriese kenmerke vir elke deeltjie bygevoeg - die nommer van die reghoek waarin dit elke plaat sny.

Groot Hadron Collider en Odnoklassniki

Ons het ook opgemerk dat dit gelyk het of die deeltjies van die middel na die kante verstrooi het en die idee het ontstaan ​​om op een of ander manier die "kwaliteit" van hierdie verstrooiing te evalueer. Ideaal gesproke sou dit waarskynlik moontlik wees om met 'n soort "ideale" parabool vorendag te kom afhangende van die opstygpunt en die afwyking daarvan te skat, maar ons het ons tot die "ideale" reguit lyn beperk. Nadat ons sulke ideale reguitlyne vir elke toegangspunt gekonstrueer het, kon ons die standaardafwyking van die trajek van elke deeltjie vanaf hierdie reguitlyn bereken. Aangesien die gemiddelde afwyking vir teiken = 1 152 was, en vir teiken = 0 dit 390 was, het ons hierdie kenmerk tentatief as goed beoordeel. En inderdaad, hierdie kenmerk het dit dadelik boaan die bruikbaarste gemaak.

Ons was verheug en het die afwyking van al 4 snypunte vir elke deeltjie vanaf die ideale reguitlyn bygevoeg as 'n bykomende 4 kenmerke (en hulle het ook goed gewerk).

Skakels na wetenskaplike artikels oor die onderwerp van die kompetisie, wat deur die organiseerders aan ons gegee is, het die idee laat ontstaan ​​dat ons ver van die eerste is om hierdie probleem op te los, en miskien is daar 'n soort gespesialiseerde sagteware. Nadat ons 'n bewaarplek op github ontdek het waar die metodes IsMuonSimple, IsMuon, IsMuonLoose geïmplementeer is, het ons dit met geringe wysigings na ons webwerf oorgeplaas. Die metodes self was baie eenvoudig: as die energie byvoorbeeld minder as 'n sekere drempel is, dan is dit nie 'n muon nie, anders is dit 'n muon. Sulke eenvoudige kenmerke kon natuurlik nie 'n toename gee in die geval van die gebruik van gradiëntversterking nie, so ons het nog 'n beduidende "afstand" by die drumpel gevoeg. Hierdie kenmerke is ook effens verbeter. Miskien, deur bestaande metodes meer deeglik te ontleed, was dit moontlik om sterker metodes te vind en dit by die tekens te voeg.

Aan die einde van die kompetisie het ons die "vinnige" oplossing vir die tweede probleem effens aangepas; op die ou end het dit op die volgende punte van die basislyn verskil:

  1. In rye met negatiewe gewig is die teiken omgekeer
  2. Ontbrekende waardes ingevul in MatchedHit_{X,Y,Z}[N]
  3. Verminder diepte tot 7
  4. Verminder leertempo tot 0.1 (was 0.19)

Gevolglik het ons meer funksies probeer (nie baie suksesvol nie), parameters en opgeleide catboost, lightgbm en xgboost, verskillende vermengings van voorspellings probeer en voor die opening van die private het ons met selfvertroue gewen op die tweede taak, en op die eerste was ons onder die leiers.

Na die opening van die private was ons in die 10de plek vir die 1ste taak en 3de vir die tweede. Al die leiers het deurmekaar geraak, en die spoed in privaat was hoër as op die libboard. Dit blyk dat die data swak gestratifiseer is (of daar was byvoorbeeld geen rye met negatiewe gewigte in die private nie) en dit was 'n bietjie frustrerend.

SNA Hackathon 2019 - Tekste. Eerste fase

Die taak was om gebruikersplasings op die Odnoklassniki sosiale netwerk te rangskik op grond van die teks wat dit bevat; benewens die teks, was daar nog 'n paar kenmerke van die plasing (taal, eienaar, datum en tyd van skepping, datum en tyd van kyk). ).

As klassieke benaderings om met teks te werk, sal ek twee opsies uitlig:

  1. Kartering van elke woord in 'n n-dimensionele vektorruimte sodat soortgelyke woorde soortgelyke vektore het (lees meer in ons artikel), vind dan óf die gemiddelde woord vir die teks óf gebruik meganismes wat die relatiewe posisie van woorde in ag neem (CNN, LSTM/GRU).
  2. Gebruik modelle wat dadelik met hele sinne kan werk. Byvoorbeeld, Bert. In teorie behoort hierdie benadering beter te werk.

Aangesien dit my eerste ervaring met tekste was, sou dit verkeerd wees om iemand te leer, so ek sal myself leer. Hierdie is die wenke wat ek myself aan die begin van die kompetisie sal gee:

  1. Voordat jy hardloop om iets te leer, kyk na die data! Benewens die teks self, het die data verskeie kolomme gehad en dit was moontlik om baie meer daaruit uit te druk as ek. Die eenvoudigste ding is om teikenkodering vir sommige van die kolomme te doen.
  2. Moenie uit al die data leer nie! Daar was baie data (ongeveer 17 miljoen rye) en dit was absoluut nie nodig om almal te gebruik om hipoteses te toets nie. Opleiding en voorverwerking was redelik stadig, en ek sou natuurlik tyd gehad het om meer interessante hipoteses te toets.
  3. <Omstrede raad> Jy hoef nie 'n moordenaarmodel te soek nie. Ek het lank spandeer om Elmo en Bert uit te vind, met die hoop dat hulle my dadelik na 'n hoë plek sou neem, en gevolglik het ek FastText-voorafopgeleide inbeddings vir die Russiese taal gebruik. Ek kon nie beter spoed met Elmo behaal nie, en ek het steeds nie tyd gehad om dit saam met Bert uit te vind nie.
  4. <Omstrede raad> Jy hoef nie na een moordende kenmerk te soek nie. As ek na die data kyk, het ek opgemerk dat ongeveer 1 persent van die tekste nie eintlik teks bevat nie! Maar daar was skakels na sommige hulpbronne, en ek het 'n eenvoudige ontleder geskryf wat die webwerf oopgemaak het en die titel en beskrywing uitgehaal het. Dit het na 'n goeie idee gelyk, maar toe raak ek meegevoer en besluit om al die skakels vir al die tekste te ontleed en het weer baie tyd verloor. Dit alles het nie 'n beduidende verbetering in die finale resultaat gelewer nie (hoewel ek byvoorbeeld uitgepluis het om te stamp).
  5. Klassieke kenmerke werk. Ons Google byvoorbeeld “text features kaggle”, lees en voeg alles by. TF-IDF het 'n verbetering gelewer, asook statistiese kenmerke soos tekslengte, woorde en die hoeveelheid leestekens.
  6. As daar DatumTyd-kolomme is, is dit die moeite werd om dit in verskeie afsonderlike kenmerke te ontleed (ure, dae van die week, ens.). Watter kenmerke uitgelig moet word, moet met behulp van grafieke/sommige maatstawwe ontleed word. Hier het ek op 'n gril alles reg gedoen en die nodige kenmerke uitgelig, maar 'n normale ontleding sou nie skade gedoen het nie (soos byvoorbeeld by die eindstryd).

Groot Hadron Collider en Odnoklassniki

As gevolg van die kompetisie het ek een keras-model met woordkonvolusie opgelei, en 'n ander een gebaseer op LSTM en GRU. Beide van hulle het vooraf-opgeleide FastText-inbeddings vir die Russiese taal gebruik (ek het 'n aantal ander inbeddings probeer, maar dit was die wat die beste gewerk het). Nadat ek die voorspellings gemiddeld het, het ek die finale 7de plek uit 76 deelnemers behaal.

Na die eerste fase is dit gepubliseer artikel deur Nikolai Anokhin, wat die tweede plek behaal het (hy het buite kompetisie deelgeneem), en sy oplossing tot op 'n stadium het myne herhaal, maar hy het verder gegaan as gevolg van die navraag-sleutel-waarde-aandagmeganisme.

Tweede fase OK & IDAO

Die tweede fases van die kompetisies het amper agtereenvolgens plaasgevind, so ek het besluit om saam daarna te kyk.

Eers het ek en die nuutverworwe span in die indrukwekkende kantoor van die Mail.ru-maatskappy beland, waar ons taak was om die modelle van drie snitte van die eerste fase af te kombineer – teks, prente en saamwerk. 'n Bietjie meer as 2 dae is hiervoor afgestaan, wat baie min geblyk het te wees. Trouens, ons kon slegs ons resultate van die eerste fase af herhaal sonder om enige wins uit die samesmelting te ontvang. Op die ou end het ons die 5de plek behaal, maar ons kon nie die teksmodel gebruik nie. Nadat na die oplossings van ander deelnemers gekyk is, blyk dit dat dit die moeite werd was om die tekste te groepeer en by die samewerkingsmodel te voeg. ’n Newe-effek van hierdie stadium was nuwe indrukke, ontmoeting en kommunikasie met koel deelnemers en organiseerders, sowel as ernstige gebrek aan slaap, wat moontlik die resultaat van die finale stadium van IDAO beïnvloed het.

Die taak by die IDAO 2019 Finale stadium was om die wagtyd vir 'n bestelling vir Yandex-taxibestuurders by die lughawe te voorspel. Op stadium 2 is 3 take = 3 lughawens geïdentifiseer. Vir elke lughawe word minuut-vir-minuut data oor die aantal taxibestellings vir ses maande gegee. En as toetsdata is die volgende maand en minuut-vir-minuut data oor bestellings vir die afgelope 2 weke gegee. Daar was min tyd (1,5 dae), die taak was redelik spesifiek, net een persoon van die span het na die kompetisie gekom – en gevolglik was dit na die einde toe 'n hartseer plek. Interessante idees het pogings ingesluit om eksterne data te gebruik: weer, verkeersknope en Yandex-taxibestellingstatistieke. Alhoewel die organiseerders nie gesê het wat hierdie lughawens is nie, het baie deelnemers aangeneem dat dit Sheremetyevo, Domodedovo en Vnukovo was. Alhoewel hierdie aanname na die kompetisie weerlê is, het kenmerke, byvoorbeeld, van Moskou-weerdata die resultate verbeter op beide validering en op die puntelys.

Gevolgtrekking

  1. ML-kompetisies is cool en interessant! Hier vind jy die gebruik van vaardighede in data-analise, en in slinkse modelle en tegnieke, en bloot gesonde verstand is welkom.
  2. ML is reeds 'n groot hoeveelheid kennis wat blykbaar eksponensieel groei. Ek het myself 'n doelwit gestel om met verskillende areas (seine, prente, tabelle, teks) kennis te maak en het reeds besef hoeveel daar is om te bestudeer. Byvoorbeeld, na hierdie kompetisies het ek besluit om te studeer: groeperingsalgoritmes, gevorderde tegnieke om met gradiëntversterkende biblioteke te werk (veral om met CatBoost op die GPU te werk), kapsulenetwerke, die navraag-sleutel-waarde-aandagmeganisme.
  3. Nie deur kaggle alleen nie! Daar is baie ander kompetisies waar dit makliker is om ten minste 'n T-hemp te kry, en daar is meer kanse vir ander pryse.
  4. Kommunikeer! Daar is reeds 'n groot gemeenskap op die gebied van masjienleer en data-analise, daar is tematiese groepe in telegram, slap, en ernstige mense van Mail.ru, Yandex en ander maatskappye beantwoord vrae en help beginners en diegene wat hul pad in hierdie veld voortsit van kennis.
  5. Ek raai almal aan wat deur die vorige punt geïnspireer is om te besoek datafees - 'n groot gratis konferensie in Moskou, wat op 10-11 Mei sal plaasvind.

Bron: will.com

Voeg 'n opmerking