Large Hadron Collider dan Odnoklassniki

Meneruskan tema pertandingan pembelajaran mesin di HabrΓ©, kami ingin memperkenalkan pembaca kepada dua lagi platform. Mereka sememangnya tidak sebesar kaggle, tetapi mereka pasti patut diberi perhatian.

Large Hadron Collider dan Odnoklassniki

Secara peribadi, saya tidak terlalu menyukai kaggle kerana beberapa sebab:

  • pertama, pertandingan di sana selalunya berlangsung selama beberapa bulan, dan penyertaan aktif memerlukan banyak usaha;
  • kedua, kernel awam (penyelesaian awam). Penganut Kaggle menasihatkan untuk melayan mereka dengan ketenangan sami Tibet, tetapi sebenarnya agak memalukan apabila sesuatu yang anda usahakan selama sebulan atau dua tiba-tiba ternyata diletakkan di atas pinggan perak untuk semua orang.

Nasib baik, pertandingan pembelajaran mesin diadakan pada platform lain, dan beberapa pertandingan ini akan dibincangkan.

IDAO SNA Hackathon 2019
Bahasa rasmi: Bahasa Inggeris,
penganjur: Yandex, Sberbank, HSE
Bahasa Rusia rasmi,
penganjur: Kumpulan Mail.ru
Pusingan Dalam Talian: 15 Jan β€” 11 Feb 2019;
Akhir Di Tapak: 4-6 Apr 2019
dalam talian - dari 7 Februari hingga 15 Mac;
luar talian - dari 30 Mac hingga 1 April.
Menggunakan set data tertentu tentang zarah dalam Large Hadron Collider (trajektori, momentum dan parameter fizikal lain yang agak kompleks), tentukan sama ada ia muon atau bukan
Daripada kenyataan ini, 2 tugasan telah dikenalpasti:
β€” dalam satu anda hanya perlu menghantar ramalan anda,
- dan yang lain - kod dan model lengkap untuk ramalan, dan pelaksanaannya tertakluk kepada sekatan yang agak ketat pada masa berjalan dan penggunaan memori
Untuk pertandingan Hackathon SNA, log paparan kandungan daripada kumpulan terbuka dalam suapan berita pengguna untuk Februari-Mac 2018 telah dikumpulkan. Set ujian mengandungi minggu terakhir setengah bulan Mac. Setiap entri dalam log mengandungi maklumat tentang perkara yang ditunjukkan dan kepada siapa, serta cara pengguna bertindak balas terhadap kandungan ini: menilainya, mengulas, mengabaikannya atau menyembunyikannya daripada suapan.
Intipati tugas SNA Hackathon adalah untuk meletakkan kedudukan setiap pengguna rangkaian sosial Odnoklassniki suapannya, menaikkan setinggi mungkin jawatan yang akan menerima "kelas".
Pada peringkat dalam talian, tugasan dibahagikan kepada 3 bahagian:
1. pangkat jawatan mengikut pelbagai ciri kerjasama
2. kedudukan jawatan berdasarkan imej yang terkandung di dalamnya
3. peringkat jawatan mengikut teks yang terkandung di dalamnya
Metrik tersuai yang kompleks, seperti ROC-AUC Purata ROC-AUC mengikut pengguna
Hadiah untuk peringkat pertama - T-shirt untuk N tempat, laluan ke peringkat kedua, tempat penginapan dan makanan dibayar semasa pertandingan
Fasa kedua - ??? (Atas sebab-sebab tertentu, saya tidak hadir pada majlis penganugerahan dan tidak dapat mengetahui apakah hadiah akhirnya). Mereka menjanjikan komputer riba kepada semua ahli pasukan yang menang
Hadiah untuk peringkat pertama - T-shirt untuk 100 peserta terbaik, laluan ke peringkat kedua, di mana perjalanan ke Moscow, penginapan dan makan semasa pertandingan dibayar. Juga, menjelang akhir peringkat pertama, hadiah diumumkan untuk yang terbaik dalam 3 tugasan pada peringkat 1: semua orang memenangi kad video RTX 2080 TI!
Peringkat kedua ialah peringkat pasukan, pasukan terdiri daripada 2 hingga 5 orang, hadiah:
Tempat pertama - 1 rubel
Tempat pertama - 2 rubel
Tempat pertama - 3 rubel
hadiah juri - 100 rubel
Kumpulan telegram rasmi, ~190 peserta, komunikasi dalam bahasa Inggeris, soalan terpaksa menunggu beberapa hari untuk jawapan Kumpulan rasmi dalam telegram, ~1500 peserta, perbincangan aktif tugas antara peserta dan penganjur
Penganjur menyediakan dua penyelesaian asas, mudah dan maju. Mudah memerlukan kurang daripada 16 GB RAM, dan memori lanjutan tidak sesuai dengan 16. Pada masa yang sama, melihat ke hadapan sedikit, para peserta tidak dapat mengatasi dengan ketara penyelesaian lanjutan. Tiada kesukaran dalam melancarkan penyelesaian ini. Perlu diingatkan bahawa dalam contoh lanjutan terdapat ulasan dengan petunjuk di mana untuk mula meningkatkan penyelesaian. Penyelesaian primitif asas telah disediakan untuk setiap tugas, yang mudah diatasi oleh peserta. Pada hari-hari awal pertandingan, para peserta menghadapi beberapa kesukaran: pertama, data diberikan dalam format Apache Parket, dan tidak semua gabungan Python dan pakej parket berfungsi tanpa ralat. Kesukaran kedua ialah memuat turun gambar dari awan mel; pada masa ini tidak ada cara mudah untuk memuat turun sejumlah besar data sekaligus. Akibatnya, masalah ini melambatkan peserta selama beberapa hari.

IDAO. Peringkat pertama

Tugasnya adalah untuk mengelaskan zarah muon/bukan muon mengikut ciri-cirinya. Ciri utama tugas ini ialah kehadiran lajur berat dalam data latihan, yang penganjur sendiri tafsirkan sebagai keyakinan terhadap jawapan untuk baris ini. Masalahnya ialah beberapa baris mengandungi pemberat negatif.

Large Hadron Collider dan Odnoklassniki

Selepas berfikir selama beberapa minit tentang garis dengan pembayang (petunjuk hanya menarik perhatian kepada ciri lajur berat ini) dan membina graf ini, kami memutuskan untuk menyemak 3 pilihan:

1) terbalikkan sasaran garisan dengan pemberat negatif (dan pemberat yang sewajarnya)
2) alihkan pemberat kepada nilai minimum supaya ia bermula dari 0
3) jangan gunakan pemberat tali

Pilihan ketiga ternyata yang paling teruk, tetapi dua yang pertama meningkatkan hasilnya, yang terbaik ialah pilihan No. 1, yang segera membawa kami ke tempat kedua semasa dalam tugas pertama dan pertama dalam tugas kedua.
Large Hadron Collider dan Odnoklassniki
Langkah seterusnya kami ialah menyemak data untuk nilai yang hilang. Penganjur memberi kami data yang telah disikat, di mana terdapat beberapa nilai yang hilang, dan ia digantikan dengan -9999.

Kami menemui nilai yang tiada dalam lajur MatchedHit_{X,Y,Z}[N] dan MatchedHit_D{X,Y,Z}[N] dan hanya apabila N=2 atau 3. Seperti yang kita faham, sesetengah zarah tidak lulus semua 4 pengesan , dan berhenti sama ada pada plat ke-3 atau ke-4. Data itu juga mengandungi lajur Lextra_{X,Y}[N], yang nampaknya menggambarkan perkara yang sama seperti MatchedHit_{X,Y,Z}[N], tetapi menggunakan beberapa jenis ekstrapolasi. Tekaan yang tidak seberapa ini mencadangkan bahawa Lextra_{X,Y}[N] boleh digantikan untuk nilai yang tiada dalam MatchedHit_{X,Y,Z}[N] (untuk koordinat X dan Y sahaja). MatchedHit_Z[N] dipenuhi dengan median. Manipulasi ini membolehkan kami mencapai tempat perantaraan pertama dalam kedua-dua tugasan.

Large Hadron Collider dan Odnoklassniki

Memandangkan mereka tidak memberikan apa-apa untuk memenangi peringkat pertama, kami boleh berhenti di sana, tetapi kami meneruskan, melukis beberapa gambar yang cantik dan menghasilkan ciri baharu.

Large Hadron Collider dan Odnoklassniki

Sebagai contoh, kami mendapati bahawa jika kita memplot titik persilangan zarah dengan setiap empat plat pengesan, kita dapat melihat bahawa titik pada setiap plat dikumpulkan kepada 5 segi empat tepat dengan nisbah aspek 4 hingga 5 dan berpusat pada titik (0,0), dan dalam Tiada titik dalam segi empat tepat pertama.

No. plat / dimensi segi empat tepat 1 2 3 4 5
Pinggan 1 500 Γ— 625 1000 Γ— 1250 2000 Γ— 2500 4000 Γ— 5000 8000 Γ— 10000
Pinggan 2 520 Γ— 650 1040 Γ— 1300 2080 Γ— 2600 4160 Γ— 5200 8320 Γ— 10400
Pinggan 3 560 Γ— 700 1120 Γ— 1400 2240 Γ— 2800 4480 Γ— 5600 8960 Γ— 11200
Pinggan 4 600 Γ— 750 1200 Γ— 1500 2400 Γ— 3000 4800 Γ— 6000 9600 Γ— 12000

Setelah menentukan dimensi ini, kami menambah 4 ciri kategori baharu untuk setiap zarah - bilangan segi empat tepat di mana ia bersilang setiap plat.

Large Hadron Collider dan Odnoklassniki

Kami juga menyedari bahawa zarah-zarah itu kelihatan berselerak ke tepi dari tengah dan idea timbul untuk menilai "kualiti" penyebaran ini. Sebaik-baiknya, adalah mungkin untuk menghasilkan beberapa jenis parabola "ideal" bergantung pada titik berlepas dan menganggarkan sisihan daripadanya, tetapi kami mengehadkan diri kami kepada garis lurus "ideal". Setelah membina garis lurus yang ideal untuk setiap titik kemasukan, kami dapat mengira sisihan piawai bagi trajektori setiap zarah daripada garis lurus ini. Oleh kerana sisihan purata untuk sasaran = 1 ialah 152, dan untuk sasaran = 0 ialah 390, kami secara tentatif menilai ciri ini sebagai baik. Dan sememangnya, ciri ini serta-merta berjaya mencapai bahagian atas yang paling berguna.

Kami gembira dan menambah sisihan semua 4 titik persilangan untuk setiap zarah daripada garis lurus yang ideal sebagai 4 ciri tambahan (dan ia juga berfungsi dengan baik).

Pautan ke artikel saintifik mengenai topik pertandingan, yang diberikan kepada kami oleh penganjur, mendorong idea bahawa kami jauh dari yang pertama untuk menyelesaikan masalah ini dan, mungkin, terdapat beberapa jenis perisian khusus. Setelah menemui repositori di github di mana kaedah IsMuonSimple, IsMuon, IsMuonLoose telah dilaksanakan, kami memindahkannya ke tapak kami dengan pengubahsuaian kecil. Kaedah-kaedah itu sendiri adalah sangat mudah: sebagai contoh, jika tenaga kurang daripada ambang tertentu, maka ia bukan muon, sebaliknya ia adalah muon. Ciri mudah sebegitu jelas tidak dapat meningkatkan kes penggunaan peningkatan kecerunan, jadi kami menambah satu lagi "jarak" yang ketara pada ambang. Ciri-ciri ini juga telah dipertingkatkan sedikit. Mungkin, dengan menganalisis kaedah sedia ada dengan lebih teliti, adalah mungkin untuk mencari kaedah yang lebih kuat dan menambahnya pada tanda.

Pada penghujung pertandingan, kami mengubah sedikit penyelesaian "cepat" untuk masalah kedua; pada akhirnya, ia berbeza daripada garis dasar dalam perkara berikut:

  1. Dalam baris dengan berat negatif sasaran telah disongsangkan
  2. Diisi dengan nilai yang tiada dalam MatchedHit_{X,Y,Z}[N]
  3. Kedalaman dikurangkan kepada 7
  4. Kadar pembelajaran dikurangkan kepada 0.1 (adalah 0.19)

Hasilnya, kami mencuba lebih banyak ciri (tidak begitu berjaya), parameter terpilih dan catboost terlatih, lightgbm dan xgboost, mencuba gabungan ramalan yang berbeza dan sebelum membuka peribadi kami dengan yakin menang pada tugasan kedua, dan pada yang pertama kami adalah antara pemimpin.

Selepas membuka persendirian kami berada di tempat ke-10 untuk tugasan pertama dan ke-1 untuk tugasan kedua. Semua pemimpin bercampur aduk, dan kelajuan secara peribadi adalah lebih tinggi daripada di libboard. Nampaknya data itu kurang berstrata (atau contohnya tiada baris dengan pemberat negatif dalam peribadi) dan ini agak mengecewakan.

SNA Hackathon 2019 - Teks. Peringkat pertama

Tugasnya adalah untuk meletakkan kedudukan jawatan pengguna di rangkaian sosial Odnoklassniki berdasarkan teks yang terkandung di dalamnya; sebagai tambahan kepada teks, terdapat beberapa lagi ciri siaran (bahasa, pemilik, tarikh dan masa penciptaan, tarikh dan masa tontonan ).

Sebagai pendekatan klasik untuk bekerja dengan teks, saya akan menyerlahkan dua pilihan:

  1. Memetakan setiap perkataan ke dalam ruang vektor n-dimensi supaya perkataan yang serupa mempunyai vektor yang serupa (baca lebih lanjut dalam artikel kami), kemudian sama ada mencari perkataan purata untuk teks atau menggunakan mekanisme yang mengambil kira kedudukan relatif perkataan (CNN, LSTM/GRU).
  2. Menggunakan model yang boleh berfungsi dengan serta-merta dengan keseluruhan ayat. Contohnya, Bert. Secara teori, pendekatan ini sepatutnya berfungsi dengan lebih baik.

Oleh kerana ini adalah pengalaman pertama saya dengan teks, adalah salah untuk mengajar seseorang, jadi saya akan mengajar diri saya sendiri. Ini adalah petua yang saya akan berikan kepada diri saya pada permulaan pertandingan:

  1. Sebelum anda berlari untuk mengajar sesuatu, lihat data! Sebagai tambahan kepada teks itu sendiri, data mempunyai beberapa lajur dan adalah mungkin untuk memerah lebih banyak daripada mereka daripada yang saya lakukan. Perkara yang paling mudah ialah melakukan pengekodan sasaran min untuk beberapa lajur.
  2. Jangan belajar daripada semua data! Terdapat banyak data (kira-kira 17 juta baris) dan sama sekali tidak perlu menggunakan kesemuanya untuk menguji hipotesis. Latihan dan prapemprosesan agak perlahan, dan saya jelas mempunyai masa untuk menguji hipotesis yang lebih menarik.
  3. <Nasihat kontroversi> Tidak perlu mencari model pembunuh. Saya menghabiskan masa yang lama untuk memikirkan Elmo dan Bert, dengan harapan mereka akan segera membawa saya ke tempat yang tinggi, dan akibatnya saya menggunakan pembenaman pra-latihan FastText untuk bahasa Rusia. Saya tidak dapat mencapai kelajuan yang lebih baik dengan Elmo, dan saya masih tidak mempunyai masa untuk memikirkannya dengan Bert.
  4. <Nasihat kontroversi> Tidak perlu mencari satu ciri pembunuh. Melihat data, saya perhatikan bahawa sekitar 1 peratus daripada teks sebenarnya tidak mengandungi teks! Tetapi terdapat pautan ke beberapa sumber, dan saya menulis penghurai mudah yang membuka tapak dan mengeluarkan tajuk dan penerangan. Ia kelihatan seperti idea yang baik, tetapi kemudian saya terbawa-bawa dan memutuskan untuk menghuraikan semua pautan untuk semua teks dan sekali lagi kehilangan banyak masa. Semua ini tidak memberikan peningkatan yang ketara dalam keputusan akhir (walaupun saya tahu berpunca, sebagai contoh).
  5. Ciri klasik berfungsi. Kami Google, sebagai contoh, "ciri teks kaggle", membaca dan menambah segala-galanya. TF-IDF memberikan peningkatan, begitu juga dengan ciri statistik seperti panjang teks, perkataan dan jumlah tanda baca.
  6. Jika terdapat lajur DateTime, adalah wajar menghuraikannya kepada beberapa ciri berasingan (jam, hari dalam seminggu, dsb.). Ciri yang harus diserlahkan hendaklah dianalisis menggunakan graf/beberapa metrik. Di sini, secara sesuka hati, saya melakukan segala-galanya dengan betul dan menyerlahkan ciri-ciri yang diperlukan, tetapi analisis biasa tidak akan menyakitkan (contohnya, seperti yang kita lakukan pada perlawanan akhir).

Large Hadron Collider dan Odnoklassniki

Hasil daripada pertandingan itu, saya melatih satu model keras dengan lilitan perkataan, dan satu lagi berdasarkan LSTM dan GRU. Kedua-duanya menggunakan benam FastText yang telah terlatih untuk bahasa Rusia (saya mencuba beberapa benam lain, tetapi ini adalah yang paling berkesan). Selepas membuat purata ramalan, saya mendapat tempat ke-7 terakhir daripada 76 peserta.

Selepas peringkat pertama ia diterbitkan artikel oleh Nikolai Anokhin, yang mengambil tempat kedua (dia mengambil bahagian di luar pertandingan), dan penyelesaiannya sehingga beberapa peringkat mengulangi saya, tetapi dia pergi lebih jauh kerana mekanisme perhatian nilai kunci pertanyaan.

Peringkat kedua OK & IDAO

Peringkat kedua pertandingan berlangsung hampir berturut-turut, jadi saya memutuskan untuk melihatnya bersama-sama.

Pertama, saya dan pasukan yang baru diambil alih berakhir di pejabat syarikat Mail.ru yang mengagumkan, di mana tugas kami adalah untuk menggabungkan model tiga trek dari peringkat pertama - teks, gambar dan kolaborasi. Lebih sedikit daripada 2 hari diperuntukkan untuk ini, yang ternyata sangat sedikit. Malah, kami hanya dapat mengulangi keputusan kami dari peringkat pertama tanpa menerima sebarang keuntungan daripada penggabungan. Akhirnya, kami mendapat tempat ke-5, tetapi kami tidak dapat menggunakan model teks. Selepas melihat penyelesaian peserta lain, nampaknya berbaloi untuk mencuba mengelompokkan teks dan menambahkannya pada model kolaborasi. Kesan sampingan peringkat ini ialah tanggapan baharu, bertemu dan berkomunikasi dengan peserta dan penganjur yang sejuk, serta kekurangan tidur yang teruk, yang mungkin menjejaskan keputusan peringkat akhir IDAO.

Tugas di peringkat Akhir IDAO 2019 adalah untuk meramalkan masa menunggu untuk pesanan untuk pemandu teksi Yandex di lapangan terbang. Pada peringkat 2, 3 tugasan = 3 lapangan terbang telah dikenalpasti. Bagi setiap lapangan terbang, data minit demi minit tentang bilangan pesanan teksi selama enam bulan diberikan. Dan sebagai data ujian, bulan seterusnya dan data minit demi minit mengenai pesanan selama 2 minggu yang lalu telah diberikan. Terdapat sedikit masa (1,5 hari), tugas itu agak spesifik, hanya seorang daripada pasukan yang datang ke pertandingan - dan hasilnya, ia adalah tempat yang menyedihkan menjelang akhir. Idea menarik termasuk percubaan untuk menggunakan data luaran: cuaca, kesesakan lalu lintas dan statistik pesanan teksi Yandex. Walaupun penganjur tidak menyatakan apakah lapangan terbang ini, ramai peserta menganggap bahawa ia adalah Sheremetyevo, Domodedovo dan Vnukovo. Walaupun andaian ini disangkal selepas pertandingan, ciri, contohnya, dari data cuaca Moscow meningkatkan keputusan kedua-dua pada pengesahan dan pada papan pendahulu.

Kesimpulan

  1. Pertandingan ML hebat dan menarik! Di sini anda akan mendapati penggunaan kemahiran dalam analisis data, dan dalam model dan teknik yang licik, dan hanya akal sehat dialu-alukan.
  2. ML sudah menjadi kumpulan besar pengetahuan yang nampaknya berkembang dengan pesat. Saya menetapkan matlamat diri saya untuk membiasakan diri dengan kawasan yang berbeza (isyarat, gambar, jadual, teks) dan sudah menyedari betapa banyak yang perlu dipelajari. Sebagai contoh, selepas pertandingan ini saya memutuskan untuk mengkaji: algoritma pengelompokan, teknik lanjutan untuk bekerja dengan perpustakaan meningkatkan kecerunan (khususnya, bekerja dengan CatBoost pada GPU), rangkaian kapsul, mekanisme perhatian nilai kunci pertanyaan.
  3. Bukan dengan kaggle sahaja! Terdapat banyak pertandingan lain di mana lebih mudah untuk mendapatkan sekurang-kurangnya kemeja-T, dan terdapat lebih banyak peluang untuk hadiah lain.
  4. Berkomunikasi! Sudah ada komuniti yang besar dalam bidang pembelajaran mesin dan analisis data, terdapat kumpulan tematik dalam telegram, kendur, dan orang yang serius dari Mail.ru, Yandex dan syarikat lain menjawab soalan dan membantu pemula dan mereka yang meneruskan laluan mereka dalam bidang ini pengetahuan.
  5. Saya menasihati semua orang yang terinspirasi oleh perkara sebelumnya untuk melawat pesta data β€” persidangan percuma utama di Moscow, yang akan berlangsung pada 10-11 Mei.

Sumber: www.habr.com

Tambah komen