Katta adron kollayderi va Odnoklassniki

Habré-da mashina o'rganish musobaqalari mavzusini davom ettirib, biz o'quvchilarni yana ikkita platforma bilan tanishtirmoqchimiz. Ular, albatta, kaggle kabi katta emas, lekin ular, albatta, e'tiborga loyiqdir.

Katta adron kollayderi va Odnoklassniki

Shaxsan men bir necha sabablarga ko'ra kaggleni juda yoqtirmayman:

  • birinchidan, u erda musobaqalar ko'pincha bir necha oy davom etadi va faol ishtirok etish juda ko'p kuch talab qiladi;
  • ikkinchidan, ommaviy yadrolar (ommaviy yechimlar). Kaggle tarafdorlari ularga Tibet rohiblarining xotirjamligi bilan munosabatda bo'lishni maslahat berishadi, lekin aslida siz bir yoki ikki oy davomida ishlagan narsa to'satdan hamma uchun kumush laganga qo'yilgan bo'lsa, bu juda sharmandalik.

Yaxshiyamki, mashinani o'rganish musobaqalari boshqa platformalarda o'tkaziladi va bu musobaqalarning bir nechtasi muhokama qilinadi.

IDAO SNA Hackathon 2019
Rasmiy til: ingliz,
tashkilotchilar: Yandex, Sberbank, HSE
Rasmiy rus tili,
Tashkilotchilar: Mail.ru Group
Onlayn bosqich: 15 yil 11 yanvar - 2019 fevral;
Saytdagi final: 4 yil 6-2019 aprel
onlayn - 7 fevraldan 15 martgacha;
oflayn - 30 martdan 1 aprelgacha.
Katta adron kollayderidagi zarracha haqidagi ma'lum ma'lumotlar to'plamidan (traektoriya, impuls va boshqa murakkab jismoniy parametrlar) foydalanib, u muon yoki yo'qligini aniqlang.
Ushbu bayonotdan 2 ta vazifa aniqlandi:
- bittasida siz bashoratingizni yuborishingiz kerak edi,
- va boshqasida - bashorat qilish uchun to'liq kod va model, va bajarilishi ishlash vaqti va xotiradan foydalanish bo'yicha juda qattiq cheklovlarga duchor bo'ldi.
SNA Hackathon tanlovi uchun 2018-yilning fevral-mart oylari uchun foydalanuvchi yangiliklari tasmalaridagi ochiq guruhlardan kontent ko‘rsatish jurnallari to‘plangan. Test to'plami mart oyining so'nggi bir yarim haftasini o'z ichiga oladi. Jurnaldagi har bir yozuvda nima ko'rsatilgan va kimga, shuningdek, foydalanuvchi ushbu kontentga qanday munosabatda bo'lganligi haqida ma'lumot mavjud: uni baholagan, sharhlagan, e'tibor bermagan yoki tasmadan yashirgan.
SNA Hackathon vazifalarining mohiyati Odnoklassniki ijtimoiy tarmog'ining har bir foydalanuvchisini "sinf" oladigan postlarni iloji boricha yuqori darajaga ko'tarishdan iborat.
Onlayn bosqichda vazifa 3 qismga bo'lingan:
1. turli hamkorlik xususiyatlariga ko'ra lavozimlarni tartiblash
2. postlarni ulardagi rasmlarga qarab tartiblang
3. postlarni tarkibidagi matnga qarab tartiblang
ROC-AUC kabi murakkab maxsus ko'rsatkich Foydalanuvchi tomonidan o'rtacha ROC-AUC
Birinchi bosqich uchun sovrinlar - N o'rin uchun futbolkalar, ikkinchi bosqichga o'tish, musobaqa davomida turar joy va ovqatlanish to'lanadi.
Ikkinchi bosqich - ??? (Ma'lum sabablarga ko'ra men taqdirlash marosimida ishtirok etmadim va yakunda sovrinlar nima ekanligini bila olmadim). Ular g‘olib jamoaning barcha a’zolariga noutbuklar va’da qilishdi
Birinchi bosqich uchun sovrinlar - 100 ta eng yaxshi ishtirokchi uchun futbolkalar, ikkinchi bosqichga o'tish, Moskvaga sayohat, musobaqa davomida turar joy va ovqatlanish to'lanadi. Shuningdek, birinchi bosqich yakuniga ko‘ra, 3-bosqichda 1 ta vazifa bo‘yicha eng yaxshilar uchun sovrinlar e’lon qilindi: hamma RTX 2080 TI video kartasini yutib oldi!
Ikkinchi bosqich jamoaviy bosqich bo'lib, jamoalar 2 dan 5 kishigacha, sovrinlar:
1-o'rin - 300 000 rubl
2-o'rin - 200 000 rubl
3-o'rin - 100 000 rubl
hakamlar hay'ati mukofoti - 100 000 rubl
Rasmiy telegram guruhi, ~190 ishtirokchi, ingliz tilida muloqot, savollar javob uchun bir necha kun kutishga to'g'ri keldi Telegramdagi rasmiy guruh, ~1500 ishtirokchi, ishtirokchilar va tashkilotchilar o'rtasida vazifalarni faol muhokama qilish
Tashkilotchilar oddiy va ilg'or ikkita asosiy yechimni taqdim etdilar. Oddiy uchun 16 Gb dan kam operativ xotira talab qilinadi, kengaytirilgan xotira esa 16 Gb ga sig'maydi. Shu bilan birga, bir oz oldinga qarab, ishtirokchilar ilg'or yechimni sezilarli darajada oshira olmadilar. Ushbu echimlarni ishga tushirishda hech qanday qiyinchiliklar bo'lmadi. Shuni ta'kidlash kerakki, ilg'or misolda yechimni takomillashtirishni qaerdan boshlash kerakligi haqida maslahat berilgan. Ishtirokchilar tomonidan osonlik bilan oshib ketgan har bir vazifa uchun asosiy ibtidoiy echimlar taqdim etildi. Tanlovning dastlabki kunlarida ishtirokchilar bir qancha qiyinchiliklarga duch kelishdi: birinchidan, ma'lumotlar Apache Parket formatida berilgan va Python va parket paketining barcha kombinatsiyalari xatosiz ishlamagan. Ikkinchi qiyinchilik pochta bulutidan rasmlarni yuklab olish edi, hozirda bir vaqtning o'zida katta hajmdagi ma'lumotlarni yuklab olishning oson yo'li yo'q. Natijada, bu muammolar ishtirokchilarni bir necha kunga kechiktirdi.

IDAO. Birinchi bosqich

Vazifa muon/myuon bo'lmagan zarralarni xususiyatlariga ko'ra tasniflash edi. Ushbu vazifaning asosiy xususiyati o'quv ma'lumotlarida vazn ustunining mavjudligi bo'lib, tashkilotchilarning o'zlari ushbu chiziq uchun javobga ishonch sifatida talqin qilishdi. Muammo shundaki, bir nechta qatorlarda salbiy og'irliklar mavjud edi.

Katta adron kollayderi va Odnoklassniki

Maslahat bilan chiziq haqida bir necha daqiqa o'ylab ko'rganimizdan so'ng (maslahat shunchaki og'irlik ustunining ushbu xususiyatiga e'tibor qaratdi) va ushbu grafikni tuzib, biz 3 variantni tekshirishga qaror qildik:

1) manfiy og'irlikdagi (va shunga mos ravishda og'irlikdagi) chiziqlar nishonini teskari o'zgartiring
2) og'irliklarni minimal qiymatga o'tkazing, shunda ular 0 dan boshlanadi
3) torli og'irliklardan foydalanmang

Uchinchi variant eng yomoni bo'lib chiqdi, lekin birinchi ikkitasi natijani yaxshiladi, eng yaxshisi 1-variant bo'ldi, bu bizni darhol birinchi vazifada hozirgi ikkinchi o'ringa, ikkinchisida esa birinchi o'ringa olib keldi.
Katta adron kollayderi va Odnoklassniki
Bizning keyingi qadamimiz etishmayotgan qiymatlar uchun ma'lumotlarni ko'rib chiqish edi. Tashkilotchilar bizga allaqachon taralgan ma'lumotlarni berishdi, bu erda bir nechta etishmayotgan qiymatlar bor edi va ular -9999 bilan almashtirildi.

Biz MatchedHit_{X,Y,Z}[N] va MatchedHit_D{X,Y,Z}[N] ustunlarida etishmayotgan qiymatlarni topdik va faqat N=2 yoki 3 boʻlganda. Biz tushunganimizdek, baʼzi zarrachalar bunday boʻlmagan. barcha 4 detektordan o'tib, 3 yoki 4-plitada to'xtadi. Ma'lumotlar shuningdek, Lextra_{X,Y}[N] ustunlarini o'z ichiga olgan bo'lib, ular MatchedHit_{X,Y,Z}[N] bilan bir xil narsani tasvirlaydi, lekin qandaydir ekstrapolyatsiyadan foydalanadi. Ushbu noaniq taxminlar Lextra_{X,Y}[N] ni MatchedHit_{X,Y,Z}[N] da etishmayotgan qiymatlar oʻrniga qoʻyish mumkinligini koʻrsatdi (faqat X va Y koordinatalari uchun). MatchedHit_Z[N] median bilan yaxshi to‘ldirilgan. Ushbu manipulyatsiyalar ikkala vazifada ham 1-o'rinni egallashga imkon berdi.

Katta adron kollayderi va Odnoklassniki

Birinchi bosqichda g'alaba qozonish uchun hech narsa bermaganliklarini hisobga olsak, biz shu erda to'xtashimiz mumkin edi, lekin biz davom etdik, chiroyli rasmlar chizdik va yangi xususiyatlarni o'ylab topdik.

Katta adron kollayderi va Odnoklassniki

Misol uchun, agar biz to'rtta detektor plitasining har biri bilan zarrachaning kesishish nuqtalarini chizsak, har bir plastinkadagi nuqtalar tomonlar nisbati 5 dan 4 gacha bo'lgan 5 ta to'rtburchaklarga guruhlanganligini va markazda joylashganligini ko'rishimiz mumkin. nuqta (0,0) va birinchi to'rtburchakda nuqta yo'q.

Plitalar raqami / to'rtburchaklar o'lchamlari 1 2 3 4 5
Plitalar 1 500x625 1000x1250 2000x2500 4000x5000 8000x10000
Plitalar 2 520x650 1040x1300 2080x2600 4160x5200 8320x10400
Plitalar 3 560x700 1120x1400 2240x2800 4480x5600 8960x11200
Plitalar 4 600x750 1200x1500 2400x3000 4800x6000 9600x12000

Ushbu o'lchamlarni aniqlab, biz har bir zarracha uchun 4 ta yangi kategorik xususiyatni qo'shdik - har bir plastinkani kesib o'tadigan to'rtburchaklar soni.

Katta adron kollayderi va Odnoklassniki

Shuningdek, biz zarralar markazdan yon tomonlarga tarqalib ketganday tuyulganini va bu tarqalishning "sifatini" qandaydir tarzda baholash g'oyasi paydo bo'lganini payqadik. Ideal holda, parvoz nuqtasiga qarab qandaydir "ideal" parabolani o'ylab topish va undan chetlanishni taxmin qilish mumkin edi, lekin biz "ideal" to'g'ri chiziq bilan cheklanib qoldik. Har bir kirish nuqtasi uchun shunday ideal to'g'ri chiziqlarni qurib, biz ushbu to'g'ri chiziqdan har bir zarracha traektoriyasining standart og'ishini hisoblay oldik. Maqsad = 1 uchun o'rtacha og'ish 152, maqsad = 0 uchun esa 390 bo'lganligi sababli, biz bu xususiyatni taxminiy ravishda yaxshi deb baholadik. Va haqiqatan ham, bu xususiyat darhol eng foydali bo'lganlar qatoriga kirdi.

Biz xursand bo'ldik va har bir zarracha uchun barcha 4 kesishish nuqtasining ideal to'g'ri chiziqdan chetlanishini qo'shimcha 4 xususiyat sifatida qo'shdik (va ular ham yaxshi ishladi).

Tashkilotchilar tomonidan bizga berilgan tanlov mavzusiga oid ilmiy maqolalarga havolalar biz bu muammoni hal qilishda birinchilardan uzoqmiz va, ehtimol, qandaydir ixtisoslashtirilgan dasturiy ta'minot mavjud degan fikrni uyg'otdi. Github-da IsMuonSimple, IsMuon, IsMuonLoose usullari amalga oshirilgan omborni topib, biz ularni kichik o'zgartirishlar bilan saytimizga o'tkazdik. Usullarning o'zi juda oddiy edi: masalan, energiya ma'lum bir chegaradan kam bo'lsa, u muon emas, aks holda bu muon. Bunday oddiy xususiyatlar, shubhasiz, gradientni kuchaytirishdan foydalanishda o'sishni ta'minlay olmaydi, shuning uchun biz chegaraga yana bir muhim "masofa" qo'shdik. Bu xususiyatlar ham biroz yaxshilandi. Ehtimol, mavjud usullarni chuqurroq tahlil qilib, kuchliroq usullarni topish va ularni belgilarga qo'shish mumkin edi.

Musobaqa oxirida biz ikkinchi muammoning "tezkor" yechimini biroz o'zgartirdik; oxirida u quyidagi jihatlarda asosiy holatdan farq qildi:

  1. Salbiy og'irlikdagi qatorlarda nishon teskari edi
  2. MatchedHit_{X,Y,Z}[N] da etishmayotgan qiymatlar toʻldirilgan
  3. Chuqurlik 7 ga qisqartirildi
  4. O'rganish tezligi 0.1 ga kamaydi (0.19 edi)

Natijada, biz ko'proq xususiyatlarni sinab ko'rdik (juda ham muvaffaqiyatli emas), parametrlarni tanladik va catboost, lightgbm va xgboost-ni o'rgatdi, turli xil bashoratlarni aralashtirishni sinab ko'rdik va shaxsiyni ochishdan oldin biz ikkinchi vazifada ishonchli tarzda g'alaba qozondik va birinchisida biz boshqalar qatorida bo'ldik. yetakchilar.

Xususiyni ochganimizdan so'ng biz 10-topshiriq bo'yicha 1-o'rinda, ikkinchisi uchun 3-o'rinda edik. Barcha rahbarlar aralashib ketishdi va shaxsiy hayotdagi tezlik libborddagidan yuqori edi. Ko'rinib turibdiki, ma'lumotlar yomon tabaqalashtirilgan (yoki, masalan, shaxsiy sahifada salbiy og'irliklarga ega qatorlar yo'q edi) va bu biroz asabiylashdi.

SNA Hackathon 2019 - Matnlar. Birinchi bosqich

Vazifa Odnoklassniki ijtimoiy tarmog'idagi foydalanuvchi postlarini ulardagi matn asosida tartiblash edi; matndan tashqari, postning yana bir nechta xususiyatlari (til, egasi, yaratilgan sana va vaqt, ko'rilgan sana va vaqt) ).

Matn bilan ishlashga klassik yondashuv sifatida men ikkita variantni ajratib ko'rsataman:

  1. Har bir so'zni n o'lchovli vektor bo'shlig'iga o'xshash so'zlar o'xshash vektorlarga ega bo'lishi uchun xaritalash (batafsil o'qing bizning maqolamiz), keyin yoki matn uchun o'rtacha so'zni topish yoki so'zlarning nisbiy pozitsiyasini hisobga oladigan mexanizmlardan foydalanish (CNN, LSTM/GRU).
  2. Darhol butun jumlalar bilan ishlay oladigan modellardan foydalanish. Masalan, Bert. Nazariy jihatdan, bu yondashuv yaxshiroq ishlashi kerak.

Bu mening matnlar bilan birinchi tajribam bo'lgani uchun, kimgadir o'rgatish noto'g'ri bo'lar edi, shuning uchun men o'zim o'rgataman. Musobaqa boshida men o'zimga beradigan maslahatlar:

  1. Biror narsani o'rgatish uchun yugurishdan oldin, ma'lumotlarga qarang! Matnning o'ziga qo'shimcha ravishda, ma'lumotlar bir nechta ustunlarga ega edi va ulardan mendan ko'ra ko'proq siqib chiqarish mumkin edi. Eng oddiy narsa, ba'zi ustunlar uchun maqsadli kodlashni amalga oshirishdir.
  2. Barcha ma'lumotlardan o'rganmang! Ma'lumotlar juda ko'p edi (taxminan 17 million qator) va farazlarni sinab ko'rish uchun ularning barchasidan foydalanish mutlaqo shart emas edi. Mashg'ulotlar va dastlabki ishlov berish juda sekin edi va men qiziqroq farazlarni sinab ko'rishga vaqtim bor edi.
  3. <Qarama-qarshi maslahat> Qotil modelni izlashning hojati yo'q. Men Elmo va Bertni zudlik bilan baland joyga olib chiqishlariga umid qilib, ularni aniqlashga uzoq vaqt sarfladim va natijada rus tili uchun FastText-dan oldindan o'rgatilgan qo'shimchalardan foydalandim. Men Elmo bilan yaxshiroq tezlikka erisha olmadim va Bert bilan buni tushunishga hali vaqtim yo'q edi.
  4. <Qarama-qarshi maslahat> Bitta qotil xususiyatni izlashning hojati yo'q. Ma'lumotlarga qarab, matnlarning taxminan 1 foizida matn mavjud emasligini payqadim! Lekin ba'zi manbalarga havolalar bor edi va men saytni ochib, sarlavha va tavsifni chiqarib tashlagan oddiy tahlilchi yozdim. Bu yaxshi fikr bo'lib tuyuldi, lekin keyin men hayajonlandim va barcha matnlar uchun barcha havolalarni tahlil qilishga qaror qildim va yana ko'p vaqtni yo'qotdim. Bularning barchasi yakuniy natijada sezilarli yaxshilanishni ta'minlamadi (garchi men, masalan, stemmingni aniqlagan bo'lsam ham).
  5. Klassik xususiyatlar ishlaydi. Biz Google, masalan, "matn xususiyatlari kaggle", hamma narsani o'qiymiz va qo'shamiz. TF-IDF matn uzunligi, so'zlar va tinish belgilarining miqdori kabi statistik xususiyatlar kabi yaxshilanishni ta'minladi.
  6. Agar DateTime ustunlari mavjud bo'lsa, ularni bir nechta alohida xususiyatlarga (soatlar, haftaning kunlari va boshqalar) ajratishga arziydi. Qaysi xususiyatlarni ajratib ko'rsatish kerakligi grafiklar/ba'zi ko'rsatkichlar yordamida tahlil qilinishi kerak. Bu erda, injiqlik bilan, men hamma narsani to'g'ri qildim va kerakli xususiyatlarni ta'kidladim, lekin oddiy tahlil zarar keltirmaydi (masalan, biz finalda qilganimiz kabi).

Katta adron kollayderi va Odnoklassniki

Musobaqa natijasida men bitta keras modelini so'z birikmasi bilan, ikkinchisini esa LSTM va GRU asosida tayyorladim. Ularning ikkalasi ham rus tili uchun oldindan o'rgatilgan FastText o'rnatishdan foydalangan (men bir qator boshqa o'rnatishlarni sinab ko'rdim, lekin ular eng yaxshi ishlaganlar edi). Bashoratlarni o‘rtacha baholaganimdan so‘ng, 7 nafar ishtirokchi orasida yakuniy 76-o‘rinni egalladim.

Birinchi bosqichdan so'ng nashr etildi Nikolay Anoxinning maqolasi, ikkinchi o'rinni egallagan (u tanlovdan tashqari ishtirok etgan) va uning yechimi ma'lum bir bosqichga qadar menikini takrorladi, ammo so'rov-kalit-qiymatga e'tibor berish mexanizmi tufayli u uzoqroqqa ketdi.

Ikkinchi bosqich OK & IDAO

Musobaqalarning ikkinchi bosqichlari deyarli ketma-ket bo'lib o'tdi, shuning uchun men ularni birgalikda ko'rib chiqishga qaror qildim.

Birinchidan, men va yangi sotib olingan jamoa Mail.ru kompaniyasining ta'sirchan ofisiga keldik, bu erda bizning vazifamiz birinchi bosqichdan uchta trekning modellarini - matn, rasmlar va hamkorlikni birlashtirish edi. Buning uchun 2 kundan sal ko'proq vaqt ajratildi, bu juda oz bo'lib chiqdi. Darhaqiqat, biz birlashishdan hech qanday foyda olmasdan, faqat birinchi bosqichdagi natijalarimizni takrorlay oldik. Yakunda 5-o‘rinni egalladik, ammo matnli modeldan foydalana olmadik. Boshqa ishtirokchilarning yechimlarini ko'rib chiqqandan so'ng, matnlarni guruhlash va ularni hamkorlik modeliga qo'shishga harakat qilish kerak edi. Ushbu bosqichning nojo'ya ta'siri yangi taassurotlar, ajoyib ishtirokchilar va tashkilotchilar bilan uchrashish va muloqot qilish, shuningdek, IDAO yakuniy bosqichi natijasiga ta'sir ko'rsatishi mumkin bo'lgan qattiq uyqusizlik edi.

IDAO 2019 Yakuniy bosqichidagi vazifa aeroportda Yandex taksi haydovchilari uchun buyurtma kutish vaqtini bashorat qilish edi. 2-bosqichda 3 ta vazifa = 3 ta aeroport aniqlandi. Har bir aeroport uchun olti oy davomida taksi buyurtmalari soni to'g'risida daqiqama-daqiqa ma'lumotlar beriladi. Va sinov ma'lumotlari sifatida keyingi oy va oxirgi 2 haftadagi buyurtmalar bo'yicha daqiqama-daqiqa ma'lumotlari berildi. Vaqt oz edi (1,5 kun), vazifa juda aniq edi, jamoadan faqat bir kishi musobaqaga keldi - va natijada bu oxirigacha qayg'uli joy edi. Qiziqarli g'oyalar tashqi ma'lumotlardan foydalanishga urinishlarni o'z ichiga oladi: ob-havo, tirbandliklar va Yandex taksi buyurtmalari statistikasi. Tashkilotchilar bu aeroportlar nima ekanligini aytishmagan bo‘lsa-da, ko‘pchilik ishtirokchilar ularni Sheremetyevo, Domodedovo va Vnukovo deb taxmin qilishgan. Musobaqadan so'ng bu taxmin rad etilgan bo'lsa-da, xususiyatlar, masalan, Moskva ob-havo ma'lumotlari tekshirish natijalarini ham, peshqadamlar jadvalida ham yaxshiladi.

xulosa

  1. ML musobaqalari ajoyib va ​​qiziqarli! Bu erda siz ma'lumotlarni tahlil qilish va ayyor modellar va texnikada ko'nikmalardan foydalanishni topasiz va oddiy aqlga xush kelibsiz.
  2. ML allaqachon eksponent ravishda o'sib borayotgan katta bilim majmuasidir. Men o'z oldimga turli sohalar (signallar, rasmlar, jadvallar, matn) bilan tanishishni maqsad qilib qo'ydim va o'rganish uchun qanchalar borligini allaqachon tushunib etdim. Masalan, ushbu musobaqalardan so'ng men o'rganishga qaror qildim: klasterlash algoritmlari, gradient kuchaytiruvchi kutubxonalar bilan ishlashning ilg'or usullari (xususan, GPUda CatBoost bilan ishlash), kapsula tarmoqlari, so'rovlar-kalit-qiymat e'tibor mexanizmi.
  3. Faqat kaggle bilan emas! Ko'plab boshqa musobaqalar mavjud, ularda hech bo'lmaganda futbolka olish osonroq va boshqa sovrinlar uchun ko'proq imkoniyatlar mavjud.
  4. Muloqot qiling! Mashinani o'rganish va ma'lumotlarni tahlil qilish sohasida allaqachon katta hamjamiyat mavjud, telegramda tematik guruhlar mavjud, Mail.ru, Yandex va boshqa kompaniyalardan jiddiy odamlar savollarga javob berishadi va yangi boshlanuvchilar va ushbu sohada o'z yo'lini davom ettirayotganlarga yordam berishadi. bilimlardan.
  5. Oldingi nuqtadan ilhomlangan har bir kishiga tashrif buyurishni maslahat beraman datafest — 10-11 may kunlari Moskvada bo‘lib o‘tadigan yirik bepul konferensiya.

Manba: www.habr.com

a Izoh qo'shish