Gedhe Hadron Collider lan Odnoklassniki

Terusake tema kompetisi machine learning ing Habré, kita pengin ngenalake para pamaca menyang rong platform liyane. Padha mesthi ora minangka ageng minangka kaggle, nanging mesthi pantes manungsa waé.

Gedhe Hadron Collider lan Odnoklassniki

Secara pribadi, aku ora seneng banget karo kaggle amarga sawetara alasan:

  • sepisanan, kompetisi ana asring tahan kanggo sawetara sasi, lan partisipasi aktif mbutuhake akèh gaweyan;
  • kapindho, kernels umum (solusi umum). Penganut Kaggle menehi saran kanggo nambani wong-wong mau kanthi tenang para biksu Tibet, nanging nyatane cukup isin yen ana sing wis ditindakake sajrone sewulan utawa rong sasi tiba-tiba katon ing piring perak kanggo kabeh wong.

Untunge, kompetisi machine learning dianakake ing platform liyane, lan sawetara kompetisi kasebut bakal dibahas.

IDAO SNA Hackathon 2019
Basa resmi: Inggris,
organizers: Yandex, Sberbank, HSE
Basa Rusia resmi,
organizers: Mail.ru Group
Babak Online: 15 Jan — 11 Feb 2019;
Pungkasan On-Site: 4-6 Apr 2019
online - saka 7 Februari nganti 15 Maret;
offline - saka 30 Maret nganti 1 April.
Nggunakake sakumpulan data tartamtu babagan partikel ing Large Hadron Collider (lintasan, momentum, lan paramèter fisik liyane sing rada rumit), nemtokake manawa iku muon utawa ora.
Saka statement iki, 2 tugas diidentifikasi:
- ing siji sampeyan mung kudu ngirim ramalan sampeyan,
- lan ing liyane - kode lengkap lan model kanggo prediksi, lan eksekusi tundhuk watesan cukup ketat ing wektu mlaku lan nggunakake memori
Kanggo kompetisi Hackathon SNA, log tampilan konten saka grup mbukak ing feed warta pangguna kanggo Februari-Maret 2018 diklumpukake. Set test ngemot minggu pungkasan lan setengah Maret. Saben entri ing log ngemot informasi babagan apa sing dituduhake lan marang sapa, uga kepiye pangguna nanggapi konten iki: menehi rating, menehi komentar, ora digatekake, utawa ndhelikake saka feed.
Inti saka tugas SNA Hackathon yaiku menehi peringkat saben pangguna jaringan sosial Odnoklassniki feed, ngunggahake kiriman sing paling dhuwur sing bakal nampa "kelas".
Ing tataran online, tugas dipérang dadi 3 bagean:
1. rangking kiriman miturut macem-macem ciri kolaborasi
2. rangking kiriman adhedhasar gambar sing ana
3. rangking kiriman miturut teks sing isine
Metrik khusus sing rumit, kaya ROC-AUC Rata-rata ROC-AUC dening pangguna
Hadiah kanggo tahap pisanan - T-shirt kanggo N panggonan, dalan menyang tahap kapindho, ing ngendi akomodasi lan dhaharan dibayar nalika kompetisi
Fase kapindho -??? (Kanggo alasan tartamtu, aku ora ana ing upacara penghargaan lan ora bisa ngerteni apa hadiah kasebut ing pungkasan). Dheweke janji laptop kanggo kabeh anggota tim sing menang
Hadiah kanggo tataran pisanan - T-shirts kanggo 100 peserta paling apik, wacana kanggo tahap kapindho, ngendi lelungan menyang Moskow, akomodasi lan jajanan sak kompetisi wis mbayar. Uga, ing pungkasan tahap pisanan, hadiah diumumake kanggo sing paling apik ing 3 tugas ing tahap 1: kabeh wong menang kertu video RTX 2080 TI!
Tahap kapindho yaiku tahap tim, tim dumadi saka 2 nganti 5 wong, hadiah:
Panggonan pisanan - 1 rubel
Panggonan pisanan - 2 rubel
Panggonan pisanan - 3 rubel
hadiah juri - 100 rubel
Grup telegram resmi, ~190 peserta, komunikasi ing basa Inggris, pitakonan kudu ngenteni sawetara dina kanggo jawaban Klompok resmi ing telegram, ~ 1500 peserta, diskusi aktif tugas antarane peserta lan panitia
Penyelenggara nyedhiyakake rong solusi dhasar, prasaja lan maju. Prasaja dibutuhake kurang saka 16 GB RAM, lan memori canggih ora cocog karo 16. Ing wektu sing padha, looking ahead sethitik, peserta ora bisa Ngartekno outperform solusi majeng. Ora ana alangan kanggo ngluncurake solusi kasebut. Perlu dicathet yen ing conto lanjut ana komentar kanthi pitunjuk babagan ngendi kanggo miwiti nambah solusi. Solusi primitif dhasar diwenehake kanggo saben tugas, sing gampang dikalahake dening para peserta. Ing dina wiwitan kompetisi, para peserta nemoni sawetara kesulitan: pisanan, data kasebut diwenehake ing format Apache Parket, lan ora kabeh kombinasi Python lan paket parket bisa digunakake tanpa kesalahan. Kesulitan nomer loro yaiku ndownload gambar saka awan mail; saiki ora ana cara sing gampang kanggo ndownload data sing akeh sekaligus. Akibaté, masalah iki tundha peserta kanggo sawetara dina.

IDAO. Tahap pisanan

Tugase yaiku ngelasake partikel muon/non-muon miturut karakteristike. Fitur utama tugas iki yaiku anané kolom bobot ing data latihan, sing diinterpretasikake dening panitia minangka kapercayan ing jawaban kanggo baris iki. Masalahe yaiku sawetara baris ngemot bobot negatif.

Gedhe Hadron Collider lan Odnoklassniki

Sawise mikir sawetara menit babagan garis kanthi pitunjuk (petunjuk mung narik kawigaten babagan fitur kolom bobot iki) lan mbangun grafik iki, kita mutusake kanggo mriksa 3 opsi:

1) ngowahi target garis kanthi bobot negatif (lan bobote sesuai)
2) ngalih bobot menyang nilai minimal supaya padha miwiti saka 0
3) ora nggunakake bobot string

Opsi katelu dadi sing paling awon, nanging loro pisanan nambah asil, sing paling apik yaiku pilihan No.
Gedhe Hadron Collider lan Odnoklassniki
Langkah sabanjure yaiku mriksa data kanggo nilai sing ilang. Penyelenggara menehi data sing wis disisir, ing ngendi ana sawetara nilai sing ilang, lan diganti karo -9999.

Kita nemokake nilai sing ilang ing kolom MatchedHit_{X,Y,Z}[N] lan MatchedHit_D{X,Y,Z}[N], lan mung nalika N=2 utawa 3. Kaya sing dingerteni, sawetara partikel ora pass kabeh 4 detektor, lan mandheg salah siji ing 3. utawa 4. piring. Data kasebut uga ngemot kolom Lextra_{X,Y}[N], sing katon padha karo MatchedHit_{X,Y,Z}[N], nanging nggunakake sawetara ekstrapolasi. Tebakan cilik iki nyaranake yen Lextra_{X,Y}[N] bisa diganti karo nilai sing ilang ing MatchedHit_{X,Y,Z}[N] (mung kanggo koordinat X lan Y). MatchedHit_Z[N] diisi kanthi apik karo median. Manipulasi kasebut ngidini kita tekan papan penengah 1 ing loro tugas kasebut.

Gedhe Hadron Collider lan Odnoklassniki

Ngelingi sing padha ora menehi apa-apa kanggo menang ing tataran pisanan, kita bisa wis mandegake ana, nanging kita terus, tarik sawetara gambar ayu lan teka munggah karo fitur-fitur anyar.

Gedhe Hadron Collider lan Odnoklassniki

Contone, kita nemokake yen kita ngrancang titik-titik persimpangan saka partikel karo saben papat piring detektor, kita bisa ndeleng yen titik ing saben piring diklompokaké dadi 5 persegi panjang kanthi rasio aspek 4 nganti 5 lan pusaté ing titik (0,0), lan ing Ora ana titik ing persegi dowo pisanan.

Plat nomer / ukuran persegi panjang 1 2 3 4 5
Papan 1 500h625 1000h1250 2000h2500 4000h5000 8000h10000
Papan 2 520h650 1040h1300 2080h2600 4160h5200 8320h10400
Papan 3 560h700 1120h1400 2240h2800 4480h5600 8960h11200
Papan 4 600h750 1200h1500 2400h3000 4800h6000 9600h12000

Sawise nemtokake dimensi kasebut, kita nambahake 4 fitur kategoris anyar kanggo saben partikel - jumlah persegi dowo sing intersects saben piring.

Gedhe Hadron Collider lan Odnoklassniki

Kita uga ngeweruhi sing partikel ketoke buyar menyang sisih saka tengah lan idea muncul kanggo piye wae ngira-ngira "kualitas" saka buyar iki. Saenipun, iku bakal mbokmenawa bisa teka munggah karo sawetara jinis "becik" parabola gumantung ing titik take-off lan ngira panyimpangan saka iku, nanging kita mbatesi dhéwé kanggo "becik" garis lurus. Sawise nggawe garis lurus sing cocog kanggo saben titik entri, kita bisa ngetung standar deviasi lintasan saben partikel saka garis lurus iki. Wiwit panyimpangan rata-rata kanggo target = 1 yaiku 152, lan kanggo target = 0 yaiku 390, kita kanthi tentatif ngevaluasi fitur iki minangka apik. Lan nyatane, fitur iki langsung dadi ndhuwur sing paling migunani.

Kita padha remen lan nambahake panyimpangan kabeh 4 titik persimpangan kanggo saben partikel saka garis lurus becik minangka tambahan 4 fitur (lan padha uga bisa uga).

Pranala menyang artikel ilmiah babagan topik kompetisi, sing diwenehake dening panitia, nyebabake gagasan yen kita adoh saka sing pisanan kanggo ngatasi masalah iki lan, mbok menawa, ana sawetara piranti lunak khusus. Sawise nemokake repositori ing github ing ngendi metode IsMuonSimple, IsMuon, IsMuonLoose dileksanakake, ditransfer menyang situs kanthi modifikasi cilik. Cara kasebut gampang banget: umpamane, yen energi kurang saka ambang tartamtu, mula dudu muon, yen ora muon. Fitur-fitur prasaja kasebut temenan ora bisa nambah ing kasus nggunakake gradient boosting, mula kita nambahake "jarak" sing signifikan ing ambang. Fitur iki uga wis rada apik. Mbok menawa, kanthi nganalisa metode sing wis ana kanthi luwih jero, bisa nemokake cara sing luwih kuat lan nambahake tandha-tandha kasebut.

Ing pungkasan kompetisi, kita rada ngapiki solusi "cepet" kanggo masalah nomer loro; ing pungkasan, beda karo garis dasar ing poin ing ngisor iki:

  1. Ing baris kanthi bobot negatif, target dibalik
  2. Diisi ing nilai sing ilang ing MatchedHit_{X,Y,Z}[N]
  3. Kedalaman dikurangi dadi 7
  4. Suda tingkat sinau dadi 0.1 (iku 0.19)

Akibaté, kita nyoba luwih akeh fitur (ora sukses banget), paramèter sing dipilih lan catboost sing dilatih, lightgbm lan xgboost, nyoba campuran prediksi sing beda-beda lan sadurunge mbukak pribadi, kita kanthi yakin menang ing tugas kapindho, lan ing pisanan kita ana ing antarane pimpinan.

Sawise mbukak pribadi kita ana ing posisi 10 kanggo tugas 1 lan 3 kanggo kaloro. Kabeh pimpinan dicampur, lan kacepetan ing pribadi luwih dhuwur tinimbang ing libboard. Iku misale jek sing data kurang stratified (utawa contone ora ana larik karo bobot negatif ing pribadi) lan iki rada mumetake.

SNA Hackathon 2019 - Teks. Tahap pisanan

Tugas kasebut yaiku kanggo menehi peringkat kiriman pangguna ing jaringan sosial Odnoklassniki adhedhasar teks sing ana; saliyane teks kasebut, ana sawetara karakteristik kiriman kasebut (basa, pemilik, tanggal lan wektu nggawe, tanggal lan wektu ndeleng. ).

Minangka pendekatan klasik kanggo nggarap teks, aku bakal nyorot rong pilihan:

  1. Pemetaan saben tembung menyang spasi vektor n-dimensi supaya tembung sing padha duwe vektor sing padha (waca liyane ing artikel kita), banjur nemokake tembung rata-rata kanggo teks utawa nggunakake mekanisme sing nimbang posisi relatif saka tembung (CNN, LSTM/GRU).
  2. Nggunakake model sing bisa langsung dianggo karo kabeh ukara. Contone, Bert. Ing teori, pendekatan iki kudu luwih apik.

Wiwit iki pengalaman pisanan karo teks, iku bakal salah kanggo mulang wong, supaya aku bakal mulang dhewe. Iki minangka tips sing bakal dakwenehake ing wiwitan kompetisi:

  1. Sakdurunge mlaku mulang, delengen datane! Saliyane teks dhewe, data wis sawetara kolom lan iku bisa kanggo remet metu luwih saka wong-wong mau saka aku. Sing paling gampang yaiku nindakake enkoding target kanggo sawetara kolom.
  2. Aja sinau saka kabeh data! Ana akeh data (udakara 17 yuta larik) lan pancen ora perlu nggunakake kabeh kanggo nguji hipotesis. Latihan lan preprocessing cukup alon, lan aku mesthi duwe wektu kanggo nyoba hipotesis sing luwih menarik.
  3. <Saran sing kontroversial> Ora perlu golek model pembunuh. Aku ngenteni wektu suwe kanggo ngerteni Elmo lan Bert, ngarep-arep yen dheweke bakal langsung nggawa aku menyang papan sing dhuwur, lan minangka asil aku nggunakake embeddings sing wis dilatih FastText kanggo basa Rusia. Aku ora bisa entuk kacepetan luwih apik karo Elmo, lan aku isih ora duwe wektu kanggo tokoh metu karo Bert.
  4. <Saran sing kontroversial> Ora perlu goleki siji fitur pembunuh. Deleng data kasebut, aku ngerteni manawa udakara 1 persen teks ora ngemot teks! Nanging ana pranala menyang sawetara sumber, lan aku nulis parser prasaja sing mbukak situs kasebut lan narik judhul lan deskripsi. Iku misale jek kaya idea sing apik, nanging banjur aku digawa lunga lan mutusaké kanggo parse kabeh pranala kanggo kabeh teks lan maneh ilang akèh wektu. Kabeh iki ora menehi asil dandan sing signifikan ing asil pungkasan (sanajan aku ngerti stemming, contone).
  5. Fitur klasik bisa digunakake. We Google, contone, "teks fitur kaggle", maca lan nambah kabeh. TF-IDF nyedhiyakake perbaikan, uga fitur statistik kayata dawa teks, tembung, lan jumlah tanda baca.
  6. Yen ana kolom DateTime, iku worth parsing menyang sawetara fitur kapisah (jam, dina minggu, etc.). Fitur sing kudu disorot kudu dianalisis nggunakake grafik / sawetara metrik. Ing kene, kanthi cepet, aku nindakake kabeh kanthi bener lan nyorot fitur sing dibutuhake, nanging analisis normal ora bakal lara (contone, kaya sing ditindakake ing final).

Gedhe Hadron Collider lan Odnoklassniki

Minangka asil saka kompetisi, aku dilatih siji model keras karo convolution tembung, lan siji liyane adhedhasar LSTM lan GRU. Loro-lorone nggunakake embeddings FastText sing wis dilatih kanggo basa Rusia (Aku nyoba sawetara embeddings liyane, nanging iki sing paling apik). Sawise rata-rata prediksi, aku njupuk Panggonan 7 final saka 76 peserta.

Sawise tataran pisanan diterbitake artikel dening Nikolai Anokhin, sing njupuk Panggonan liya (dheweke melu metu saka kompetisi), lan solusi nganti sawetara tataran bola-bali tambang, nanging banjur luwih amarga mekanisme manungsa waé query-key-nilai.

Tahap kapindho OK & IDAO

Tahap kapindho kompetisi kasebut meh terus-terusan, mula aku mutusake kanggo ndeleng bareng.

Kaping pisanan, aku lan tim sing mentas dituku rampung ing kantor perusahaan Mail.ru sing nyengsemake, ing ngendi tugas kita yaiku nggabungake model telung trek saka tahap pisanan - teks, gambar lan kolaborasi. Luwih saka 2 dina diwenehake kanggo iki, sing dadi sithik banget. Nyatane, kita mung bisa mbaleni asil saka tahap pisanan tanpa entuk asil saka penggabungan. Ing pungkasan, kita njupuk Panggonan 5th, nanging kita ora bisa nggunakake model teks. Sawise ndeleng solusi saka peserta liyane, misale jek kudu nyoba nglumpukake teks lan ditambahake menyang model kolaborasi. Efek samping saka tataran iki yaiku tayangan anyar, ketemu lan komunikasi karo peserta lan panitia sing keren, uga kurang turu sing abot, sing bisa nyebabake asil tahap pungkasan IDAO.

Tugas ing tahap Final IDAO 2019 yaiku prédhiksi wektu nunggu pesenan kanggo sopir taksi Yandex ing bandara. Ing tataran 2, 3 tugas = 3 bandara diidentifikasi. Kanggo saben bandara, data menit saben menit babagan jumlah pesenan taksi sajrone nem sasi. Lan minangka data tes, data sasi sabanjure lan menit saben menit babagan pesenan sajrone 2 minggu kepungkur diwenehake. Ora ana wektu sethithik (1,5 dina), tugas kasebut cukup spesifik, mung siji wong saka tim sing teka ing kompetisi - lan minangka asil, dadi papan sing sedhih ing pungkasan. Gagasan menarik kalebu upaya nggunakake data eksternal: cuaca, macet lan statistik pesenan taksi Yandex. Sanajan panitia ora ngandhani apa bandara kasebut, akeh peserta nganggep yen dheweke yaiku Sheremetyevo, Domodedovo lan Vnukovo. Sanajan asumsi iki dibantah sawise kompetisi, fitur, contone, saka data cuaca Moskow nambah asil ing validasi lan ing leaderboard.

kesimpulan

  1. Kompetisi ML keren lan menarik! Ing kene sampeyan bakal nemokake panggunaan katrampilan ing analisis data, lan ing model lan teknik sing licik, lan mung akal sehat.
  2. ML wis dadi akeh kawruh sing katon akeh banget. Aku nyetel dhewe goal kanggo njaluk kenalan karo macem-macem wilayah (sinyal, gambar, tabel, teks) lan wis temen maujud carane akeh ana kanggo sinau. Contone, sawise kompetisi iki aku mutusaké kanggo sinau: algoritma clustering, Techniques majeng kanggo nggarap perpustakaan nambah gradien (utamane, nggarap CatBoost ing GPU), jaringan kapsul, mekanisme manungsa waé query-key-nilai.
  3. Ora dening kaggle piyambak! Ana akeh kompetisi liyane ngendi iku luwih gampang kanggo njaluk paling T-shirt, lan ana luwih kasempatan kanggo hadiah liyane.
  4. Komunikasi! Wis ana komunitas gedhe ing bidang pembelajaran mesin lan analisis data, ana klompok tematik ing telegram, slack, lan wong serius saka Mail.ru, Yandex lan perusahaan liyane njawab pitakonan lan mbantu para pamula lan sing terus mlaku ing lapangan iki. saka kawruh.
  5. Aku menehi saran marang saben wong sing diilhami dening titik sadurunge kanggo ngunjungi datafest - konferensi gratis utama ing Moskow, sing bakal ditindakake tanggal 10-11 Mei.

Source: www.habr.com

Add a comment