Nagy hadronütköztető és Odnoklassniki

Folytatva a gépi tanulási versenyek témáját a Habrén, további két platformot szeretnénk megismertetni az olvasókkal. Természetesen nem olyan hatalmasak, mint a kaggle, de mindenképpen figyelmet érdemelnek.

Nagy hadronütköztető és Odnoklassniki

Én személy szerint nem szeretem túlságosan a kaggle-t, több okból is:

  • először is, a versenyek ott gyakran több hónapig tartanak, és az aktív részvétel sok erőfeszítést igényel;
  • másodsorban nyilvános kernelek (nyilvános megoldások). A kaggle hívei azt tanácsolják, hogy a tibeti szerzetesek higgadtságával bánjanak velük, de valójában nagyon szégyen, ha valamiről, amiért egy-két hónapja dolgozol, hirtelen kiderül, hogy mindenki számára ezüsttálcára rakják.

Szerencsére más platformokon is zajlanak gépi tanulási versenyek, és ezek közül néhány verseny szóba kerül majd.

IDAO SNA Hackathon 2019
Hivatalos nyelv: angol,
szervezők: Yandex, Sberbank, HSE
hivatalos orosz nyelv,
szervezők: Mail.ru Csoport
Online forduló: 15. január 11. – február 2019.;
Helyszíni döntő: 4. április 6-2019
online - február 7-től március 15-ig;
offline – március 30-tól április 1-ig.
A Large Hadron Colliderben lévő részecskére vonatkozó bizonyos adatok (pálya, impulzus és egyéb meglehetősen összetett fizikai paraméterek) felhasználásával határozzuk meg, hogy müonról van-e szó vagy sem.
Ebből a nyilatkozatból 2 feladatot azonosítottak:
- az egyikben csak el kellett küldenie a jóslatot,
- a másikban pedig az előrejelzés teljes kódja és modellje, valamint a végrehajtás meglehetősen szigorú futási idő és memóriahasználati korlátozások tárgyát képezte.
Az SNA Hackathon versenyhez a 2018. február-márciusban a felhasználói hírfolyamokban nyílt csoportokból származó tartalommegjelenítések naplóit gyűjtöttük össze. A tesztkészlet március utolsó másfél hetét tartalmazza. A napló minden bejegyzése információkat tartalmaz arról, hogy mit és kinek jelentett meg, valamint arról, hogy a felhasználó hogyan reagált erre a tartalomra: értékelte, kommentálta, figyelmen kívül hagyta vagy elrejtette a hírfolyamból.
Az SNA Hackathon feladatainak lényege, hogy az Odnoklassniki közösségi hálózat minden felhasználóját rangsorolja, a lehető legmagasabbra emelve azokat a bejegyzéseket, amelyek „osztályt” kapnak.
Az online szakaszban a feladatot 3 részre osztották:
1. rangsorolja a posztokat különböző együttműködési jellemzők szerint
2. rangsorolja a bejegyzéseket a bennük lévő képek alapján
3. rangsorolja a posztokat a bennük található szöveg szerint
Összetett egyéni mérőszám, például ROC-AUC Átlagos ROC-AUC felhasználó szerint
Díjak az első szakaszra - N helyekért pólók, továbbjutás a második szakaszba, ahol a szállást és az étkezést a verseny ideje alatt fizették
Második fázis - ??? (Bizonyos okok miatt nem voltam jelen a díjátadón, és nem tudtam megtudni, hogy végül mik voltak a díjak). A győztes csapat minden tagjának laptopot ígértek
Díjak az első szakaszban - pólók a 100 legjobb résztvevőnek, továbbjutás a második szakaszba, ahol Moszkvába utazás, szállás és étkezés a verseny ideje alatt fizetett. Emellett az első szakasz vége felé az 3. szakasz 1 feladatában díjakat hirdettek ki a legjobbak számára: mindenki nyert egy RTX 2080 TI videokártyát!
A második szakasz csapatszakasz volt, 2-5 fős csapatok, díjak:
1. hely - 300 000 rubel
2. hely - 200 000 rubel
3. hely - 100 000 rubel
zsűri díja - 100 000 rubel
Hivatalos táviratcsoport, ~190 résztvevő, angol nyelvű kommunikáció, a kérdésekre több napot kellett várni a válaszra Hivatalos csoport táviratban, ~1500 résztvevő, aktív feladatok megbeszélése a résztvevők és a szervezők között
A szervezők két alapvető megoldást kínáltak, az egyszerűt és a fejlettet. Az egyszerű 16 GB-nál kevesebb RAM-ot igényelt, a fejlett memória pedig nem fért bele a 16-ba. Ugyanakkor egy kicsit előre tekintve a résztvevők nem tudták jelentősen felülmúlni a fejlett megoldást. Nem okozott nehézséget ezeknek a megoldásoknak az elindítása. Meg kell jegyezni, hogy a haladó példában volt egy megjegyzés, amely utalt arra, hogy hol kezdjem el a megoldás fejlesztését. Mindegyik feladathoz olyan alapvető primitív megoldásokat adtak, amelyeket a résztvevők könnyedén felülmúltak. A verseny első napjaiban a résztvevők több nehézségbe ütköztek: először is Apache Parquet formátumban adták meg az adatokat, és a Python és a parkettacsomag nem minden kombinációja működött hiba nélkül. A második nehézséget a képek letöltése jelentette a levelezőfelhőből, jelenleg nincs egyszerű módja nagy mennyiségű adat letöltésének. Ennek eredményeként ezek a problémák néhány napig késleltették a résztvevőket.

IDAO. Első fázis

A feladat a müon/nem müon részecskék jellemzőik szerinti osztályozása volt. Ennek a feladatnak a legfontosabb jellemzője egy súlyoszlop jelenléte volt az edzésadatokban, amit maguk a szervezők úgy értelmeztek, mint az erre a sorra adott válaszba vetett bizalom. A probléma az volt, hogy jó néhány sor negatív súlyokat tartalmazott.

Nagy hadronütköztető és Odnoklassniki

Miután néhány percig gondolkodtunk a tippet tartalmazó vonalon (a tipp egyszerűen felhívta a figyelmet a súlyoszlop ezen tulajdonságára), és elkészítettük ezt a grafikont, úgy döntöttünk, hogy megvizsgálunk 3 lehetőséget:

1) fordítsa meg a negatív súlyú vonalak célját (és ennek megfelelő súlyozást)
2) tolja el a súlyokat a minimális értékre úgy, hogy 0-tól induljanak
3) ne használjon húrsúlyt

A harmadik lehetőség bizonyult a legrosszabbnak, de az első kettő javította az eredményt, a legjobb az 1-es volt, amivel az első feladatban azonnal a jelenlegi második, a másodikban pedig az első helyre kerültünk.
Nagy hadronütköztető és Odnoklassniki
Következő lépésünk az volt, hogy áttekintsük az adatok hiányzó értékeit. A szervezők már átfésült adatokat adtak meg, ahol jónéhány hiányzó érték volt, és -9999-et pótoltak.

Hiányzó értékeket találtunk a MatchedHit_{X,Y,Z}[N] és MatchedHit_D{X,Y,Z}[N] oszlopokban, és csak akkor, ha N=2 vagy 3. Mint tudjuk, egyes részecskék nem átmegy mind a 4 detektoron, és megáll a 3. vagy 4. lemezen. Az adatok Lextra_{X,Y}[N] oszlopokat is tartalmaztak, amelyek látszólag ugyanazt írják le, mint a MatchedHit_{X,Y,Z}[N], de valamilyen extrapolációt használnak. Ezek a csekély találgatások azt sugallták, hogy Lextra_{X,Y}[N] helyettesíthető a MatchedHit_{X,Y,Z}[N] hiányzó értékeivel (csak X és Y koordináták esetén). A MatchedHit_Z[N] jól meg volt töltve a mediánnal. Ezekkel a manipulációkkal mindkét feladatban az 1. köztes helyezést értük el.

Nagy hadronütköztető és Odnoklassniki

Tekintettel arra, hogy nem adtak semmit az első szakasz megnyeréséért, meg is állhattuk volna, de folytattuk, gyönyörű képeket rajzoltunk és újdonságokkal rukkoltunk elő.

Nagy hadronütköztető és Odnoklassniki

Például azt találtuk, hogy ha egy részecske metszéspontjait ábrázoljuk mind a négy detektorlemezzel, akkor láthatjuk, hogy az egyes lemezeken lévő pontok 5 téglalapba vannak csoportosítva, 4-5 oldalaránnyal és középpontjuk a pont (0,0), és a Az első téglalapban nincsenek pontok.

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

Miután meghatároztuk ezeket a méreteket, minden részecskéhez 4 új kategorikus jellemzőt adtunk - annak a téglalapnak a számát, amelyben az egyes lemezeket metszi.

Nagy hadronütköztető és Odnoklassniki

Azt is észrevettük, hogy a részecskék úgy tűnt, hogy a középpontból oldalra szóródnak, és felmerült az ötlet, hogy valahogy értékeljük ennek a szóródásnak a „minőségét”. Ideális esetben valószínűleg a felszállási ponttól függően lehetne valamilyen „ideális” parabolát kitalálni, és megbecsülni az attól való eltérést, de mi az „ideális” egyenesre szorítkoztunk. Miután minden egyes belépési ponthoz ilyen ideális egyeneseket állítottunk össze, ki tudtuk számítani az egyes részecskék pályájának szórását ettől az egyenestől. Mivel az átlagos eltérés a cél = 1 esetén 152, a cél = 0 esetén pedig 390, ezt a tulajdonságot előzetesen jónak értékeltük. És valóban, ez a funkció azonnal a leghasznosabbak élére került.

Nagyon örültünk, és további 4 jellemzőként hozzáadtuk az egyes részecskék mind a 4 metszéspontjának eltérését az ideális egyenestől (és ezek is jól működtek).

A verseny témájával foglalkozó tudományos cikkekre mutató linkek, amelyeket a szervezők adtak át nekünk, azt a gondolatot ébresztették, hogy korántsem mi vagyunk az elsők, akik megoldják ezt a problémát, és talán létezik valamilyen speciális szoftver. Miután felfedeztünk egy adattárat a githubon, ahol az IsMuonSimple, IsMuon, IsMuonLoose metódusokat implementálták, kisebb módosításokkal átvittük őket oldalunkra. Maguk a módszerek nagyon egyszerűek voltak: például ha az energia kisebb, mint egy bizonyos küszöb, akkor az nem müon, különben müon. Az ilyen egyszerű tulajdonságok nyilvánvalóan nem tudtak növekedést adni a gradiens boosting alkalmazása esetén, ezért a küszöbhöz még egy jelentős „távolságot” adtunk. Ezek a funkciók is némileg javultak. Talán a meglévő módszerek alaposabb elemzésével sikerült erősebb módszereket találni, és azokat a jelekhez adni.

A verseny végén a második feladat „gyors” megoldásán kicsit módosítottunk, végül a következő pontokban tért el az alapvonaltól:

  1. A negatív súllyal rendelkező sorokban a cél megfordult
  2. A MatchedHit_{X,Y,Z}[N] hiányzó értékeinek kitöltése
  3. 7-re csökkentett mélység
  4. A tanulási arány 0.1-re csökkent (0.19 volt)

Ennek eredményeként több funkciót kipróbáltunk (nem túl sikeresen), kiválasztott paramétereket és betanítottuk a catboost, lightgbm és xgboost, kipróbáltuk a jóslatok különböző keverékeit, és a privát megnyitása előtt magabiztosan nyertünk a második feladatnál, az elsőnél pedig a legjobbak közé kerültünk. vezetők.

A zártkör megnyitása után az 10. feladatnál a 1. helyen, a másodiknál ​​a 3. helyen álltunk. Az összes vezető összekeveredett, és a privátban nagyobb volt a sebesség, mint a libboardon. Úgy tűnik, hogy az adatok rosszul voltak rétegezve (vagy például nem voltak negatív súllyal rendelkező sorok a privátban), és ez kissé elkeserítő volt.

SNA Hackathon 2019 – Szövegek. Első fázis

A feladat az Odnoklassniki közösségi hálózat felhasználói bejegyzéseinek rangsorolása volt a bennük lévő szöveg alapján, a szövegen kívül még néhány jellemző volt a bejegyzésre (nyelv, tulajdonos, létrehozás dátuma és időpontja, megtekintés dátuma és időpontja) ).

A szöveggel való munka klasszikus megközelítéseként két lehetőséget emelnék ki:

  1. Minden szó leképezése egy n-dimenziós vektortérbe úgy, hogy a hasonló szavaknak hasonló vektorai legyenek (további információ: cikkünkben), majd megkeresi a szöveg átlagos szavát, vagy olyan mechanizmusokat használ, amelyek figyelembe veszik a szavak egymáshoz viszonyított helyzetét (CNN, LSTM/GRU).
  2. Olyan modellek használata, amelyek azonnal teljes mondatokkal működnek. Például Bert. Elméletileg ennek a megközelítésnek jobban kellene működnie.

Mivel ez volt az első tapasztalatom a szövegekkel, rossz lenne valakit tanítani, ezért magam fogom tanítani. Ezeket a tippeket adnám magamnak a verseny elején:

  1. Mielőtt rohansz tanítani valamit, nézd meg az adatokat! Az adatoknak magán a szövegen kívül több oszlopa volt, és sokkal többet lehetett kipréselni belőlük, mint én. A legegyszerűbb, ha egyes oszlopok célkódolását használjuk.
  2. Ne tanulj minden adatból! Rengeteg adat volt (kb. 17 millió sor), és egyáltalán nem volt szükség arra, hogy mindegyiket felhasználjuk hipotézisek teszteléséhez. A betanítás és az előfeldolgozás meglehetősen lassú volt, és nyilván lett volna időm érdekesebb hipotéziseket tesztelni.
  3. <Ellentmondásos tanács> Nem kell gyilkos modellt keresni. Sokáig kitaláltam Elmot és Bertet, abban a reményben, hogy azonnal előkelő helyre visznek, és ennek eredményeként az orosz nyelvhez FastText előre betanított beágyazásokat használtam. Elmóval nem tudtam jobb sebességet elérni, Berttel pedig még mindig nem volt időm kitalálni.
  4. <Ellentmondásos tanács> Nem kell egyetlen gyilkos funkciót keresni. Az adatokat nézegetve azt vettem észre, hogy a szövegek mintegy 1 százaléka valójában nem tartalmaz szöveget! De voltak linkek néhány forráshoz, és írtam egy egyszerű elemzőt, amely megnyitotta a webhelyet, és kihúzta a címet és a leírást. Jó ötletnek tűnt, de aztán elragadtattam, és úgy döntöttem, hogy elemzem az összes linket az összes szöveghez, és ismét sok időt vesztettem. Mindez nem hozott számottevő javulást a végeredményen (bár pl. szteminget találtam ki).
  5. A klasszikus funkciók működnek. Mi például a Google-on a „text features kaggle” kifejezést használjuk, mindent elolvasunk és hozzáadunk. A TF-IDF javított, csakúgy, mint a statisztikai jellemzők, például a szöveg hossza, a szavak és az írásjelek mennyisége.
  6. Ha vannak DateTime oszlopok, érdemes azokat több különálló jellemzőbe (óra, hét napjai stb.) elemezni. Azt, hogy mely jellemzőket érdemes kiemelni, grafikonok/néhány mérőszám segítségével kell elemezni. Itt egy szeszélyből mindent helyesen csináltam, és kiemeltem a szükséges tulajdonságokat, de egy normál elemzés nem ártott volna (például ahogy a döntőn is tettük).

Nagy hadronütköztető és Odnoklassniki

A verseny eredményeként egy szókonvolúciós kerasmodellt, egy másikat pedig LSTM és GRU alapján készítettem. Mindketten az orosz nyelvhez előre betanított FastText beágyazást használtak (számos más beágyazást is kipróbáltam, de ezek működtek a legjobban). A jóslatok átlagolása után a végső 7. helyet szereztem meg a 76 résztvevő közül.

Az első szakasz után megjelent Nyikolaj Anokhin cikke, aki második helyezést ért el (versenyen kívül vett részt), és megoldása egy bizonyos szakaszig megismételte az enyémet, de a lekérdezés-kulcs-érték figyelemmechanizmus miatt tovább ment.

Második szakasz OK & IDAO

A versenyek második szakaszai szinte egymás után zajlottak, ezért úgy döntöttem, hogy együtt nézem meg őket.

Először én és az újonnan megszerzett csapat a Mail.ru cég impozáns irodájában kötöttünk ki, ahol az volt a feladatunk, hogy az első szakaszból három szám modelljét kombináljuk - szöveg, kép és együttműködés. Erre valamivel több mint 2 nap jutott, ami nagyon kevésnek bizonyult. Valójában csak az első szakaszban elért eredményeinket tudtuk megismételni anélkül, hogy az összeolvadásból nyereséget kaptunk volna. Végül az 5. helyet szereztük meg, de nem tudtuk használni a szövegmodellt. Más résztvevők megoldásait áttekintve úgy tűnik, érdemes volt megpróbálni a szövegeket klaszterbe rakni és hozzáadni az együttműködési modellhez. Ennek a szakasznak a mellékhatása volt az új benyomások, a menő résztvevőkkel és szervezőkkel való találkozás és kommunikáció, valamint a súlyos alváshiány, ami befolyásolhatta az IDAO utolsó szakaszának eredményét.

A 2019-es IDAO utolsó szakaszának feladata az volt, hogy megjósolják a Yandex taxisofőrök megrendelésének várakozási idejét a repülőtéren. A 2. szakaszban 3 feladatot = 3 repülőteret azonosítottak. Minden repülőtérre vonatkozóan percenkénti adatokat adnak meg a taxirendelések számáról hat hónapra vonatkozóan. Tesztadatként pedig a következő havi és az elmúlt 2 hét rendeléseinek percenkénti adatait adták meg. Kevés volt az idő (1,5 nap), a feladat eléggé konkrét volt, a csapatból csak egy ember érkezett a versenyre - ebből adódóan szomorú hely volt a vége felé. Az érdekes ötletek között szerepelt a külső adatok felhasználásának kísérlete is: időjárás, forgalmi dugók és Yandex taxirendelési statisztikák. Bár a szervezők nem mondták el, mik ezek a repülőterek, sok résztvevő azt feltételezte, hogy Seremetyevói, Domodedovoi és Vnukovói repülőterekről van szó. Bár ezt a feltételezést a verseny után megcáfolták, a moszkvai időjárási adatokból származó jellemzők mind az érvényesítésben, mind a ranglistán javították az eredményeket.

Következtetés

  1. Az ML versenyek menők és érdekesek! Itt megtalálja az adatelemzésben, a ravasz modellekben és technikákban szerzett készségek felhasználását, és egyszerűen a józan észt is szívesen látjuk.
  2. Az ML már most is hatalmas tudásanyag, amely úgy tűnik, hogy exponenciálisan növekszik. Célul tűztem ki magamnak, hogy megismerkedjek a különböző területekkel (jelek, képek, táblázatok, szöveg), és már rájöttem, mennyit kell tanulnom. Például ezek után a versenyek után úgy döntöttem, hogy tanulmányozzam: klaszterezési algoritmusokat, fejlett technikákat a gradiensnövelő könyvtárakkal (különösen a CatBoosttal a GPU-n), a kapszulahálózatokat, a lekérdezés-kulcs-érték figyelemmechanizmust.
  3. Nem egyedül kaggle! Sok más verseny is van, ahol könnyebb legalább egy pólót szerezni, és több esély van más nyereményekre is.
  4. Kommunikálni! A gépi tanulás és adatelemzés terén már most nagy közösség alakult ki, vannak tematikus csoportok a táviratban, a lazaságban, a Mail.ru, a Yandex és más cégek komoly emberei válaszolnak a kérdésekre és segítenek a kezdőknek és az ezen a területen folytatóknak. tudásról.
  5. Mindenkinek ajánlom, akit az előző pont inspirált, látogassa meg datafest — nagyszabású ingyenes konferencia Moszkvában, amelyre május 10-11.

Forrás: will.com

Hozzászólás