Grutte Hadron Collider en Odnoklassniki

Trochgean mei it tema fan kompetysjes foar masine-learen op Habré, wolle wy lêzers noch twa platfoarms yntrodusearje. Se binne grif net sa grut as kaggle, mar se fertsjinje perfoarst omtinken.

Grutte Hadron Collider en Odnoklassniki

Persoanlik hâld ik om ferskate redenen net te folle fan kaggle:

  • firstly, kompetysjes dêr faak duorre foar ferskate moannen, en aktive dielname freget in soad muoite;
  • twadde, iepenbiere kernels (iepenbiere oplossings). Kaggle-oanhingers advisearje har te behanneljen mei de kalmte fan Tibetaanske muontsen, mar yn 'e realiteit is it nochal spitich as eat wêr't jo in moanne of twa oan wurke hawwe ynienen foar elkenien op in sulveren skûtel lein blykt te wêzen.

Gelokkich wurde kompetysjes foar masine-learen hâlden op oare platfoarms, en in pear fan dizze kompetysjes sille wurde besprutsen.

IDAO SNA Hackathon 2019
Offisjele taal: Ingelsk,
organisatoaren: Yandex, Sberbank, HSE
Offisjele Russyske taal,
organisatoaren: Mail.ru Group
Online ronde: 15 jannewaris - 11 febrewaris 2019;
Finale op it plak: 4-6 april 2019
online - fan 7 febrewaris oant 15 maart;
offline - fan 30 maart oant 1 april.
Mei help fan in bepaalde set gegevens oer in dieltsje yn 'e Large Hadron Collider (trajekt, momentum en oare frij komplekse fysike parameters), bepale oft it in muon is of net
Ut dizze ferklearring waarden 2 taken identifisearre:
- yn ien moasten jo gewoan jo foarsizzing stjoere,
- en yn 'e oare - de folsleine koade en model foar foarsizzing, en de útfiering wie ûnderwurpen oan frij strikte beheiningen op rinnende tiid en ûnthâldgebrûk
Foar de SNA Hackathon-kompetysje waarden logs fan ynhâld werjûn fan iepen groepen yn brûkersnijsfeeds foar febrewaris-maart 2018 sammele. De testset befettet de lêste en in heale wike fan maart. Elke yngong yn it log befettet ynformaasje oer wat waard toand en oan wa, en ek hoe't de brûker op dizze ynhâld reagearre: beoardiele, kommentearre, negearre of ferburgen fan 'e feed.
De essinsje fan 'e taken fan' e SNA Hackathon is om elke brûker fan it sosjale netwurk Odnoklassniki syn feed te rangearjen, sa heech mooglik de berjochten te ferheegjen dy't in "klasse" krije.
Op it online poadium wie de taak ferdield yn 3 dielen:
1. rank berjochten neffens ferskate gearwurkjende skaaimerken
2. rank berjochten basearre op de bylden dy't se befetsje
3. rank berjochten neffens de tekst dy't se befetsje
Komplekse oanpaste metryske, soksawat as ROC-AUC Gemiddelde ROC-AUC troch brûker
Prizen foar de earste etappe - T-shirts foar N plakken, trochgong nei de twadde etappe, wêr't akkommodaasje en iten waarden betelle tidens de konkurrinsje
Twadde faze - ??? (Om bepaalde redenen wie ik net oanwêzich by de priisútrikking en koe ik net útfine wat de prizen op it lêst wiene). Se hawwe laptops tasein oan alle leden fan it winnende team
Prizen foar de earste etappe - T-shirts foar de 100 bêste dielnimmers, trochgong nei de twadde etappe, wêr't reizgjen nei Moskou, akkommodaasje en iten yn 'e konkurrinsje waarden betelle. Tsjin 'e ein fan' e earste etappe waarden ek prizen bekend makke foar de bêste yn 3 taken op poadium 1: elkenien wûn in RTX 2080 TI-fideokaart!
De twadde etappe wie in teampoadium, teams bestie út 2 oant 5 minsken, prizen:
1e plak - 300 roebel
2e plak - 200 roebel
3e plak - 100 roebel
sjuerypriis - 100 roebel
Offisjele telegramgroep, ~190 dielnimmers, kommunikaasje yn it Ingelsk, fragen moasten ferskate dagen wachtsje op in antwurd Offisjele groep yn telegram, ~1500 dielnimmers, aktive diskusje oer taken tusken dielnimmers en organisatoaren
De organisatoaren levere twa basisoplossingen, ienfâldich en avansearre. Ienfâldich fereaske minder dan 16 GB RAM, en avansearre ûnthâld paste net yn 16. Tagelyk, in bytsje foarút sjen, wiene de dielnimmers net yn steat om de avansearre oplossing signifikant te prestearjen. D'r wiene gjin swierrichheden by it lansearjen fan dizze oplossingen. It moat opmurken wurde dat yn it avansearre foarbyld in opmerking wie mei in hint oer wêr't jo begjinne moatte mei it ferbetterjen fan de oplossing. Basis primitive oplossingen waarden levere foar elk fan 'e taken, dy't maklik waarden oertroffen troch de dielnimmers. Yn 'e iere dagen fan' e konkurrinsje, dielnimmers tsjinkaam ferskate swierrichheden: earst, de gegevens waarden jûn yn Apache Parquet formaat, en net alle kombinaasjes fan Python en it parket pakket wurke sûnder flaters. De twadde muoite wie it downloaden fan foto's út 'e e-postwolk; op it stuit is d'r gjin maklike manier om in grutte hoemannichte gegevens tagelyk te downloaden. As gefolch hawwe dizze problemen de dielnimmers in pear dagen fertrage.

IDAO. Earste faze

De taak wie om muon / net-muon dieltsjes te klassifisearjen neffens har skaaimerken. It wichtichste skaaimerk fan dizze taak wie de oanwêzigens fan in gewicht kolom yn de training gegevens, dy't de organisatoaren sels ynterpretearre as fertrouwen yn it antwurd foar dizze line. It probleem wie dat nochal in pear rigen befette negative gewichten.

Grutte Hadron Collider en Odnoklassniki

Nei in pear minuten te tinken oer de line mei de hint (de hint luts gewoan omtinken foar dizze funksje fan 'e gewichtkolom) en it bouwen fan dizze grafyk, besleaten wy 3 opsjes te kontrolearjen:

1) invertearje it doel fan rigels mei negative gewichten (en gewichten neffens)
2) ferpleatse de gewichten nei de minimale wearde sadat se begjinne fan 0
3) brûke gjin snaargewichten

De tredde opsje blykte de minste te wêzen, mar de earste twa ferbettere it resultaat, de bêste wie opsje nûmer 1, dy't ús fuortendaliks nei it hjoeddeiske twadde plak brocht yn 'e earste taak en earste yn 'e twadde.
Grutte Hadron Collider en Odnoklassniki
Us folgjende stap wie om de gegevens te besjen op ûntbrekkende wearden. De organisatoaren joegen ús al gekamde gegevens, dêr't nochal in pear ûntbrekkende wearden, en se waarden ferfongen troch -9999.

Wy fûnen ûntbrekkende wearden yn 'e MatchedHit_{X,Y,Z}[N] en MatchedHit_D{X,Y,Z}[N] kolommen, en allinich as N=2 of 3. Sa't wy begripe, hawwe guon dieltsjes net pass alle 4 detectors , en stoppe itsij op de 3e of 4e plaat. De gegevens befette ek Lextra_{X,Y}[N]-kolommen, dy't blykber itselde ding beskriuwe as MatchedHit_{X,Y,Z}[N], mar mei in soarte fan ekstrapolaasje. Dizze meagere gissingen suggerearren dat Lextra_{X,Y}[N] koe wurde ferfongen troch de ûntbrekkende wearden yn MatchedHit_{X,Y,Z}[N] (allinich foar X- en Y-koördinaten). MatchedHit_Z[N] wie goed fol mei de mediaan. Dizze manipulaasjes lieten ús yn beide taken it 1e tuskenplak berikke.

Grutte Hadron Collider en Odnoklassniki

Yn betinken nommen dat se net joegen neat foar it winnen fan de earste etappe, wy koenen hawwe stopje dêr, mar wy fierder, tekene in pear moaie plaatsjes en kaam mei nije funksjes.

Grutte Hadron Collider en Odnoklassniki

Wy fûnen bygelyks dat as wy de krusingspunten fan in dieltsje mei elk fan 'e fjouwer detektorplaten plotje, kinne wy ​​sjen dat de punten op elk fan 'e platen binne groepearre yn 5 rjochthoeken mei in aspektferhâlding fan 4 oant 5 en sintraal by it punt (0,0), en yn Der binne gjin punten yn de earste rjochthoeke.

Plate no. / rjochthoeke ôfmjittings 1 2 3 4 5
Plak 1 500x625 1000x1250 2000x2500 4000x5000 8000x10000
Plak 2 520x650 1040x1300 2080x2600 4160x5200 8320x10400
Plak 3 560x700 1120x1400 2240x2800 4480x5600 8960x11200
Plak 4 600x750 1200x1500 2400x3000 4800x6000 9600x12000

Nei it fêststellen fan dizze ôfmjittings, hawwe wy 4 nije kategoaryske funksjes tafoege foar elk dieltsje - it nûmer fan 'e rjochthoek wêryn it elke plaat snijt.

Grutte Hadron Collider en Odnoklassniki

Wy hawwe ek opmurken dat de dieltsjes lykje te fersprieden nei de kanten fan it sintrum en it idee ûntstie om de "kwaliteit" fan dizze fersprieding op ien of oare manier te evaluearjen. Ideaal soe it wierskynlik mooglik wêze om in soarte fan "ideale" parabool te kommen ôfhinklik fan it startpunt en de ôfwiking dêrfan te skatten, mar wy beheine ús ta de "ideale" rjochte line. Nei't wy sokke ideale rjochte linen foar elk yngongspunt konstruearre hawwe, koene wy ​​de standertdeviaasje fan it trajekt fan elk dieltsje fan dizze rjochte line berekkenje. Sûnt de gemiddelde ôfwiking foar doel = 1 wie 152, en foar doel = 0 wie it 390, hawwe wy dizze funksje tentatyf as goed beoardiele. En yndie, dizze funksje makke it fuortendaliks nei de top fan 'e nuttichste.

Wy wiene bliid en tafoege de ôfwiking fan alle 4 krusingspunten foar elk dieltsje fan 'e ideale rjochte line as in ekstra 4 funksjes (en se wurken ek goed).

Keppelings nei wittenskiplike artikels oer it ûnderwerp fan 'e kompetysje, jûn oan ús troch de organisatoaren, brocht it idee dat wy fier fan de earste binne om dit probleem op te lossen en, miskien, d'r is in soarte fan spesjalisearre software. Nei't wy in repository op github ûntdutsen hawwe wêr't de metoaden IsMuonSimple, IsMuon, IsMuonLoose waarden ymplementearre, hawwe wy se oerbrocht nei ús side mei lytse oanpassingen. De metoaden sels wiene hiel ienfâldich: bygelyks as de enerzjy minder is as in bepaalde drompel, dan is it gjin muon, oars is it in muon. Sokke ienfâldige funksjes koene fansels gjin ferheging jaan yn it gefal fan it brûken fan gradientfergrutting, dus hawwe wy in oare wichtige "ôfstân" tafoege oan 'e drompel. Dizze funksjes binne ek wat ferbettere. Faaks wie it mooglik, troch besteande metoaden yngeandiger te analysearjen, sterkere metoaden te finen en ta te foegjen oan 'e tekens.

Oan 'e ein fan' e kompetysje hawwe wy de "snelle" oplossing foar it twadde probleem in bytsje oanpast; op it lêst ferskilde it fan 'e basisline yn' e folgjende punten:

  1. Yn rigen mei negatyf gewicht waard it doel omkeard
  2. Untbrekkende wearden ynfolle yn MatchedHit_{X,Y,Z}[N]
  3. Fermindere djipte nei 7
  4. Fermindere learrate nei 0.1 (wie 0.19)

As gefolch hawwe wy mear funksjes besocht (net heul suksesfol), selekteare parameters en trained catboost, lightgbm en xgboost, besocht ferskate blendings fan foarsizzingen en foardat it privee iepene, wûnen wy mei fertrouwen de twadde taak, en op 'e earste wiene wy ​​ûnder de lieders.

Nei it iepenjen fan de privee stiene wy ​​op it 10e plak foar de 1e taak en 3e foar de twadde. Alle lieders rekke trochinoar, en de snelheid yn privee wie heger as op it libboard. It liket derop dat de gegevens wie min stratified (of bygelyks wiene der gjin rigen mei negative gewichten yn de privee) en dit wie in bytsje frustrerend.

SNA Hackathon 2019 - Teksten. Earste faze

De taak wie om brûkersberjochten op it sosjale netwurk fan Odnoklassniki te rangearjen op basis fan 'e tekst dy't se befette; neist de tekst wiene d'r in pear mear skaaimerken fan 'e post (taal, eigner, datum en tiid fan skepping, datum en tiid fan besjen ).

As klassike oanpak foar it wurkjen mei tekst, soe ik twa opsjes markearje:

  1. It yn kaart bringen fan elk wurd yn in n-diminsjonale fektorromte, sadat ferlykbere wurden ferlykbere fektors hawwe (lês mear yn ús artikel), dan it gemiddelde wurd foar de tekst te finen of meganismen te brûken dy't rekken hâlde mei de relative posysje fan wurden (CNN, LSTM/GRU).
  2. It brûken fan modellen dy't daliks mei hiele sinnen wurkje kinne. Bygelyks, Bert. Yn teory soe dizze oanpak better wurkje moatte.

Om't dit myn earste ûnderfining wie mei teksten, soe it ferkeard wêze om ien te learen, dat sil ik mysels leare. Dit binne de tips dy't ik mysels soe jaan oan it begjin fan 'e konkurrinsje:

  1. Foardat jo rinne om wat te learen, sjoch nei de gegevens! Neist de tekst sels hiene de gegevens ferskate kolommen en it wie mooglik om der folle mear út te knipen as ik. It ienfâldichste ding is om doelkodearring te dwaan foar guon fan 'e kolommen.
  2. Learje net fan alle gegevens! D'r wiene in protte gegevens (sawat 17 miljoen rigen) en it wie perfoarst net nedich om se allegear te brûken om hypotezen te testen. Training en foarferwurking wiene frij stadich, en ik soe fansels tiid hawwe hân om mear nijsgjirrige hypotezen te testen.
  3. <Kontroversjeel advys> Gjin needsaak om te sykjen nei in moardner model. Ik haw in lange tiid trochbrocht om Elmo en Bert út te finen, yn 'e hope dat se my daliks nei in heech plak bringe soene, en dêrtroch brûkte ik FastText pre-trained ynbêdingen foar de Russyske taal. Ik koe net berikke bettere snelheid mei Elmo, en ik hie noch gjin tiid om it út te finen mei Bert.
  4. <Kontroversjeel advys> Gjin needsaak om te sykjen nei ien killer funksje. As ik nei de gegevens seach, seach ik dat sawat 1 prosint fan 'e teksten eins gjin tekst befettet! Mar d'r wiene keppelings nei guon boarnen, en ik skreau in ienfâldige parser dy't de side iepene en de titel en beskriuwing útlutsen. It like in goed idee, mar doe waard ik meinommen en besleat om alle keppelings foar alle teksten te parsearjen en ferlear wer in soad tiid. Dit alles joech gjin signifikante ferbettering yn it einresultaat (hoewol't ik bygelyks stemming útfûn).
  5. Klassike funksjes wurkje. Wy Google, bygelyks, "tekstfunksjes kaggle", lêze en foegje alles ta. TF-IDF levere in ferbettering, lykas statistyske funksjes lykas tekstlingte, wurden en it bedrach fan ynterpunksje.
  6. As d'r DateTime-kolommen binne, is it de muoite wurdich om se te parsearjen yn ferskate aparte funksjes (oeren, dagen fan 'e wike, ensfh.). Hokker funksjes moatte wurde markearre moatte wurde analysearre mei grafiken / guon metriken. Hjir, op in bewolking, haw ik alles goed dien en de nedige funksjes markearre, mar in normale analyze soe net sear hawwe (bygelyks, lykas wy diene by de finale).

Grutte Hadron Collider en Odnoklassniki

As gefolch fan 'e konkurrinsje trainde ik ien kerasmodel mei wurdkonvolúsje, en in oar basearre op LSTM en GRU. Beide brûkten foarôf oplate FastText-ynbêden foar de Russyske taal (ik besocht in oantal oare ynbêdingen, mar dit wiene dejingen dy't it bêste wurken). Nei it gemiddelde fan de foarsizzings, helle ik it lêste 7e plak fan 76 dielnimmers.

Nei de earste etappe waard it publisearre artikel troch Nikolai Anokhin, dy't naam twadde plak (hy die mei út konkurrinsje), en syn oplossing oant in poadium werhelle mines, mar hy gie fierder troch de query-key-wearde oandacht meganisme.

Twadde etappe OK & IDAO

De twadde etappe fan 'e kompetysjes fûnen hast efterinoar plak, dus ik besleat om se tegearre te sjen.

Earst, ik en it nij oankocht team bedarre yn it yndrukwekkende kantoar fan it bedriuw Mail.ru, dêr't ús taak wie te kombinearjen de modellen fan trije spoaren út de earste etappe - tekst, ôfbyldings en collab. Hjirfoar waarden in bytsje mear as 2 dagen útlutsen, wat hiel lyts bliek te wêzen. Eins koene wy ​​ús resultaten allinich werhelje fan 'e earste etappe sûnder winst te krijen fan' e fúzje. Uteinlik kamen wy it 5e plak, mar wy koenen it tekstmodel net brûke. Nei it besjen fan de oplossingen fan oare dielnimmers liket it derop dat it de muoite wurdich wie om de teksten te klusterjen en ta te foegjen oan it gearwurkingsmodel. In side-effekt fan dit poadium wie nije yndrukken, moetsje en kommunisearje mei koele dielnimmers en organisatoaren, lykas ek in swier gebrek oan sliep, dy't it resultaat fan 'e lêste poadium fan IDAO beynfloede hawwe.

De taak by de IDAO 2019 Finale faze wie om de wachttiid foar in bestelling foar Yandex taksysjauffeurs op it fleanfjild te foarsizzen. Op poadium 2 waarden 3 taken = 3 fleanfjilden identifisearre. Foar elke fleanfjild wurde minút foar minút gegevens jûn oer it oantal taksybestellingen foar seis moannen. En as testgegevens waarden de folgjende moanne en minuut-foar-minút gegevens oer oarders foar de ôfrûne 2 wiken jûn. D'r wie net folle tiid (1,5 dagen), de taak wie frij spesifyk, mar ien persoan fan it team kaam nei de kompetysje - en as gefolch wie it in tryst plak tsjin 'e ein. Nijsgjirrige ideeën omfette besykjen om eksterne gegevens te brûken: waar, files en Yandex-taksybestellingstatistiken. Hoewol't de organisatoaren net seine wat dizze fleanfjilden wiene, in protte dielnimmers oannommen dat se wiene Sheremetyevo, Domodedovo en Vnukovo. Hoewol dizze oanname waard wjerlein nei de kompetysje, funksjes, bygelyks fan Moskou waargegevens, ferbettere de resultaten sawol op falidaasje as op it Leaderboard.

konklúzje

  1. ML-kompetysjes binne cool en ynteressant! Hjir fine jo it brûken fan feardichheden yn gegevens analyze, en yn slûchslimme modellen en techniken, en gewoan sûn ferstân is wolkom.
  2. ML is al in enoarm lichem oan kennis dy't eksponentiell liket te groeien. Ik haw my as doel steld om yn de kunde te kommen mei ferskate gebieten (sinjalen, foto's, tabellen, tekst) en realisearre al hoefolle der te studearjen is. Bygelyks, nei dizze kompetysjes besleat ik om te studearjen: clusteringalgoritmen, avansearre techniken foar it wurkjen mei gradientfersterkende biblioteken (benammen wurkjen mei CatBoost op 'e GPU), kapsulenetwurken, it query-key-wearde oandachtmeganisme.
  3. Net troch kaggle allinnich! Der binne in protte oare kompetysjes dêr't it is makliker te krijen op syn minst in T-shirt, en der binne mear kânsen foar oare prizen.
  4. Kommunisearje! D'r is al in grutte mienskip op it mêd fan masine learen en gegevensanalyse, d'r binne tematyske groepen yn telegram, slack en serieuze minsken fan Mail.ru, Yandex en oare bedriuwen beantwurdzje fragen en helpe begjinners en dyjingen dy't har paad op dit fjild trochgean fan kennis.
  5. Ik advisearje elkenien dy't ynspirearre waard troch it foarige punt om te besykjen datafest - in grutte fergese konferinsje yn Moskou, dy't plakfine sil op 10-11 maaie.

Boarne: www.habr.com

Add a comment