SNA Hackathon 2019

Dina bulan Pebruari-Maret 2019, kompetisi diayakeun pikeun pangkat feed jaringan sosial SNA Hackathon 2019, dimana tim kami nyandak tempat kahiji. Dina tulisan kuring bakal ngobrol ngeunaan organisasi kompetisi, metode anu urang usahakeun, sareng setélan catboost pikeun latihan dina data gedé.

SNA Hackathon 2019

SNA Hackathon

Ieu mangrupikeun katilu kalina hackathon kalayan nami ieu dilaksanakeun. Éta diayakeun ku jaringan sosial ok.ru, masing-masing, tugas sareng data langsung aya hubunganana sareng jaringan sosial ieu.
SNA (analisa jaringan sosial) dina hal ieu langkung leres kahartos sanés salaku analisa grafik sosial, tapi salaku analisa jaringan sosial.

  • Dina 2014, tugasna pikeun ngaduga jumlah likes anu bakal ditampi.
  • Dina 2016 - tugas VVZ (meureun anjeun wawuh), ngadeukeutan ka analisis grafik sosial.
  • Dina 2019, ranking feed pamaké dumasar kana likelihood yén pamaké bakal resep pos.

Abdi henteu tiasa nyarios ngeunaan 2014, tapi dina 2016 sareng 2019, salian kamampuan analisis data, kaahlian dina damel sareng data ageung ogé diperyogikeun. Jigana éta kombinasi mesin learning jeung masalah ngolah data badag anu katarik kuring kompetisi ieu, sarta pangalaman kuring di wewengkon ieu mantuan kuring meunang.

mlbootcamp

Dina 2019, kompetisi diayakeun dina platform https://mlbootcamp.ru.

Kompetisi dimimitian online dina 7 Pébruari sarta diwangun ku 3 tugas. Saha waé tiasa ngadaptar dina situs éta, unduh dasar sareng muatkeun mobil anjeun sababaraha jam. Dina ahir panggung online dina 15 Maret, 15 luhur unggal acara jumping diondang ka kantor Mail.ru pikeun panggung offline, anu lumangsung ti 30 Maret nepi ka 1 April.

tugas

Data sumber nyadiakeun ID pamaké (userId) jeung ID pos (objectId). Upami pangguna ditingalikeun tulisan, maka datana ngandung garis anu ngandung userId, objectId, réaksi pangguna kana pos ieu (umpan balik) sareng sakumpulan sababaraha fitur atanapi tautan kana gambar sareng téks.

ID Pangguna objectId ownerId eupan balik gambar
3555 22 5677 [resep, diklik] [hash1]
12842 55 32144 [teu resep] [hash2, hash3]
13145 35 5677 [diklik, dibagikeun] [hash2]

Set data test ngandung struktur nu sarupa, tapi widang eupan balik leungit. Tugasna nyaéta pikeun ngaduga ayana réaksi 'resep' dina widang eupan balik.
Berkas kiriman ngagaduhan struktur ieu:

ID Pangguna Daptar Urut[objectId]
123 78,13,54,22
128 35,61,55
131 35,68,129,11

Métrik nyaéta rata-rata ROC AUC pikeun pangguna.

Katerangan anu langkung lengkep ngeunaan data tiasa dipendakan di ramatloka déwan. Anjeun oge bisa ngundeur data aya, kaasup tés jeung gambar.

Panggung online

Dina tahap online, tugas dibagi jadi 3 bagian

  • Sistem kolaborasi - kalebet sadaya fitur iwal gambar sareng téks;
  • Gambar - ngan ngawengku informasi ngeunaan gambar;
  • Téks - ngawengku informasi wungkul ngeunaan téks.

Panggung offline

Dina tahap offline, data kalebet sadaya fitur, sedengkeun téks sareng gambar jarang. Aya 1,5 kali langkung baris dina set data, anu parantos seueur.

Solusi tina masalah

Kusabab kuring ngalakukeun CV di tempat kerja, kuring ngamimitian perjalanan dina kompetisi ieu kalayan tugas "Gambar". Data anu disayogikeun nyaéta userId, objectId, ownerId (grup dimana postingan ieu diterbitkeun), timestamp pikeun nyiptakeun sareng nampilkeun tulisan, sareng, tangtosna, gambar pikeun tulisan ieu.
Saatos ngahasilkeun sababaraha fitur dumasar kana timestamp, ideu salajengna nyaéta nyandak lapisan penultimate neuron anu tos dilatih dina imagenet sareng ngirim embeddings ieu pikeun ningkatkeun.

SNA Hackathon 2019

Hasilna teu impressive. Embeddings tina neuron imagenet henteu relevan, panginten, abdi kedah ngadamel autoencoder sorangan.

SNA Hackathon 2019

Butuh loba waktu jeung hasilna teu ningkat.

Generasi fitur

Gawe sareng gambar butuh loba waktu, jadi kuring mutuskeun pikeun ngalakukeun hal basajan.
Sakumaha anjeun tiasa tingali langsung, aya sababaraha fitur categorical dina set data, sareng supados henteu ngaganggu teuing, kuring ngan ukur nyandak catboost. Leyuran éta alus teuing, tanpa setélan wae kuring langsung meunang ka garis kahiji leaderboard nu.

Aya seueur data sareng ditata dina format parket, janten tanpa mikir dua kali, kuring nyandak skala sareng ngamimitian nyerat sadayana dina spark.

Fitur pangbasajanna anu masihan langkung seueur kamekaran tibatan embeddings gambar:

  • sabaraha kali objectId, userId jeung ownerId mucunghul dina data (kedah correlate kalawan popularitas);
  • sabaraha tulisan userId geus katempo ti ownerId (kedah correlate kalawan kapentingan pamaké dina grup);
  • sabaraha userIds unik ditempo pos ti ownerId (reflects ukuran panongton grup urang).

Ti timestamps éta mungkin pikeun ménta waktu beurang nu pamaké diawaskeun feed (isuk / beurang / sore / wengi). Ku ngagabungkeun kategori ieu, anjeun tiasa neruskeun ngahasilkeun fitur:

  • sabaraha kali userId asup peuting;
  • jam sabaraha ieu pos paling sering ditémbongkeun (objectId) jeung saterusna.

Sadaya ieu laun-laun ningkatkeun métrik. Tapi ukuran set data latihan sakitar 20M rékaman, janten nambihan fitur-fiturna ngalambatkeun latihan.

Kuring geus rethought pendekatan kuring ngagunakeun data. Sanaos datana gumantung kana waktos, kuring henteu ningali inpormasi anu atra bocor "di hareup", tapi, bisi waé, kuring ngarobih sapertos kieu:

SNA Hackathon 2019

Set latihan anu disayogikeun ka urang (Pébruari sareng 2 minggu Maret) dibagi kana 2 bagian.
Modél ieu dilatih dina data ti N poé panungtungan. The aggregations ditétélakeun di luhur diwangun dina sakabéh data, kaasup test. Dina waktos anu sami, data parantos muncul dimana anjeun tiasa ngawangun rupa-rupa panyandian variabel target. Pendekatan anu pangbasajanna nyaéta nganggo deui kode anu parantos nyiptakeun fitur énggal, sareng ngan ukur tuang data anu henteu bakal dilatih sareng target = 1.

Janten, urang ngagaduhan fitur anu sami:

  • Sabaraha kali userId ningali tulisan dina group ownerId;
  • Sabaraha kali userId resep kana pos di group ownerId;
  • Persentase tulisan anu dipikaresep ku userId ti ownerId.

Hartina, tétéla mean target encoding dina bagian tina dataset pikeun sagala rupa kombinasi fitur categorical. Sacara prinsip, catboost ogé ngawangun target encoding sareng tina sudut pandang ieu henteu aya kauntungan, tapi, contona, dimungkinkeun pikeun ngitung jumlah pangguna unik anu resep tulisan dina grup ieu. Dina waktos anu sami, tujuan utama kahontal - set data kuring dikirangan sababaraha kali, sareng kamungkinan pikeun neruskeun ngahasilkeun fitur.

Bari catboost bisa ngawangun encoding ngan dumasar kana réaksi liked, eupan balik boga réaksi séjén: reshared, disliked, unlikeed, diklik, dipaliré, encodings nu bisa dipigawé sacara manual. Kuring ngitung deui sagala jinis agrégat sareng ngaleungitkeun fitur anu pentingna rendah supados henteu ngagedekeun set data.

Ku waktu éta kuring aya di tempat kahiji ku margin lega. Hiji-hijina hal anu matak ngabingungkeun nyaéta yén embeddings gambar nunjukkeun ampir henteu aya kamekaran. Ide datang ka masihan sagalana pikeun catboost. Urang kluster gambar Kmeans tur meunangkeun fitur categorical imageCat anyar.

Ieu sababaraha kelas saatos nyaring manual sareng ngahijikeun klaster anu dicandak tina KMeans.

SNA Hackathon 2019

Dumasar imageCat kami ngahasilkeun:

  • Fitur categorical anyar:
    • ImageCat mana anu paling sering ditingali ku userId;
    • Mana imageCat paling sering nembongkeun ownerId;
    • ImageCat mana anu paling sering disukai ku userId;
  • Rupa-rupa counters:
    • Sabaraha imageCat unik melong userId;
    • Sakitar 15 fitur anu sami sareng panyandi target sapertos anu dijelaskeun di luhur.

Téks

Hasil dina kompetisi gambar cocog kuring jeung kuring mutuskeun pikeun nyobaan leungeun kuring dina téks. Kuring henteu acan damel seueur sareng téks sateuacan na, bodo, kuring maéhan dinten dina tf-idf sareng svd. Teras kuring ningali garis dasar sareng doc2vec, anu ngalakukeun naon anu kuring peryogikeun. Sanggeus rada nyaluyukeun parameter doc2vec, kuring meunang embeddings téks.

Teras kuring ngan ukur nganggo deui kodeu pikeun gambar, dimana kuring ngagentos émbeddings gambar sareng émbeddings téks. Hasilna, kuring meunang juara 2 dina kompetisi téks.

Sistem kolaborasi

Aya hiji kompetisi ditinggalkeun nu kuring teu acan "poked" kalawan iteuk, sarta ditilik ku AUC on leaderboard nu, hasilna kompetisi husus ieu kudu boga dampak greatest dina panggung offline.
Kuring nyandak sagala fitur anu aya dina data sumber, dipilih categorical sarta diitung aggregates sarua pikeun gambar, iwal fitur dumasar kana gambar sorangan. Ngan nempatkeun ieu dina catboost ngagaduhan kuring ka tempat ka-2.

Léngkah mimiti optimasi catboost

Hiji tempat kahiji jeung dua kadua pleased kuring, tapi aya hiji pamahaman yen kuring geus teu dipigawé nanaon husus, nu hartina kuring bisa ngaharepkeun leungitna posisi.

Tugas kompetisi nyaéta pikeun pangkat tulisan dina pangguna, sareng salami ieu kuring ngarengsekeun masalah klasifikasi, nyaéta, ngaoptimalkeun métrik anu salah.

Hayu atuh masihan anjeun conto basajan:

ID Pangguna objectId prediksi bebeneran taneuh
1 10 0.9 1
1 11 0.8 1
1 12 0.7 1
1 13 0.6 1
1 14 0.5 0
2 15 0.4 0
2 16 0.3 1

Hayu urang nyieun susunan ulang leutik

ID Pangguna objectId prediksi bebeneran taneuh
1 10 0.9 1
1 11 0.8 1
1 12 0.7 1
1 13 0.6 0
2 16 0.5 1
2 15 0.4 0
1 14 0.3 1

Kami nampi hasil di handap ieu:

model AUC Pamaké1 AUC Pamaké2 AUC hartosna AUC
pilihan 1 0,8 1,0 0,0 0,5
pilihan 2 0,7 0,75 1,0 0,875

Sakumaha anjeun tiasa tingali, ningkatkeun métrik AUC sadayana sanés hartosna ningkatkeun métrik AUC rata-rata dina pangguna.

Catboost weruh kumaha carana ngaoptimalkeun metrics ranking tina kotak. Kuring maca ngeunaan metrics ranking, carita kasuksésan nalika nganggo catboost sareng nyetél YetiRankPairwise pikeun ngalatih sapeuting. hasilna teu impressive. Mutuskeun yén kuring undertrained, Kuring robah fungsi kasalahan QueryRMSE, nu, ditilik ku dokuméntasi catboost, converges gancang. Tungtungna, kuring meunang hasil anu sarua sakumaha nalika latihan pikeun klasifikasi, tapi ensembles dua model ieu masihan kanaékan alus, nu dibawa kuring ka tempat kahiji dina sakabéh tilu kompetisi.

5 menit sateuacan nutup panggung online kompetisi "Sistem Kolaboratif", Sergey Shalnov ngalihkeun kuring ka tempat kadua. Urang leumpang sapanjang jalur salajengna.

Nyiapkeun pikeun tahap offline

Kami dijamin kameunangan dina tahap online sareng kartu vidéo RTX 2080 TI, tapi hadiah utama 300 rubles sareng, paling dipikaresep, bahkan tempat munggaran anu terakhir kapaksa urang damel salami 000 minggu ieu.

Salaku tétéla, Sergey ogé dipaké catboost. Urang disilihtukeurkeun gagasan jeung fitur, sarta kuring diajar ngeunaan laporan ku Anna Veronica Dorogush anu ngandung jawaban kana seueur patarosan kuring, bahkan anu kuring henteu acan gaduh waktos éta.

Nempo laporan ngarah kuring ka gagasan yén urang kudu balik kabeh parameter kana nilai standar, sarta ngalakukeun setelan taliti pisan tur ngan sanggeus ngalereskeun sakumpulan fitur. Ayeuna hiji latihan nyandak ngeunaan 15 jam, tapi hiji modél junun ménta speed leuwih hade tinimbang nu diala dina ensemble kalawan ranking.

Generasi fitur

Dina kompetisi Sistem Kolaboratif, sajumlah ageung fitur ditaksir penting pikeun modél. Salaku conto, auditweights_spark_svd - tanda pangpentingna, tapi euweuh informasi ngeunaan naon hartina. Teu sangka eta bakal worthwhile mun cacah rupa aggregates dumasar kana fitur penting. Contona, rata-rata auditweights_spark_svd ku pamaké, ku grup, ku objék. Hal anu sami tiasa diitung nganggo data anu henteu aya latihan sareng target = 1, nyaéta rata-rata auditweights_spark_svd ku pamaké ku objék anjeunna resep. tanda penting sagigireun auditweights_spark_svd, aya sababaraha. Ieu sababaraha di antarana:

  • auditweightsCtrGender
  • auditweightsCtrHigh
  • pamakéOwnerCounterCreateLikes

Contona, rata auditweightsCtrGender nurutkeun userId tétéla éta fitur penting, kawas nilai rata pamakéOwnerCounterCreateLikes ku userId+ownerId. Ieu kedah parantos ngajantenkeun anjeun mikir yén anjeun kedah ngartos hartos lapangan.

Ogé fitur penting éta auditweightsLikesCount и auditweightsShowsCount. Ngabagi hiji-hiji, fitur anu langkung penting dicandak.

Data bocor

Kompetisi sareng modél produksi mangrupikeun tugas anu béda pisan. Nalika Nyiapkeun data, éta hésé pisan tumut kana akun sagala rinci tur teu nepikeun sababaraha informasi non-trivial ngeunaan variabel target dina tés. Upami urang nyiptakeun solusi produksi, urang bakal nyobian ngahindarkeun panggunaan data bocor nalika ngalatih modél. Tapi upami urang hoyong meunang kompetisi, maka bocor data mangrupikeun fitur anu pangsaéna.

Saatos ngulik data, anjeun tiasa ningali éta dumasar kana nilai objectId auditweightsLikesCount и auditweightsShowsCount robah, nu hartina babandingan nilai maksimum fitur ieu bakal ngagambarkeun konvérsi pos leuwih hadé ti rasio dina waktu tampilan.

Bocor munggaran anu urang mendakan nyaéta auditweightsLikesCountMax/auditweightsShowsCountMax.
Tapi kumaha lamun urang nempo data leuwih raket? Hayu urang nyortir dumasar tanggal acara sareng kéngingkeun:

objectId ID Pangguna auditweightsShowsCount auditweightsLikesCount target (dipikaresep)
1 1 12 3 meureun henteu
1 2 15 3 meureun enya
1 3 16 4

Éta héran nalika kuring mendakan conto sapertos anu munggaran sareng tétéla yén ramalan kuring henteu kajantenan. Tapi, nyokot kana akun kanyataan yén nilai maksimum tina ciri ieu dina obyék masihan paningkatan, urang teu puguh jeung mutuskeun pikeun manggihan. auditweightsShowsCountNext и auditweightsLikesCountNext, nyaeta, nilai dina momen salajengna dina waktu. Ku nambahkeun fitur
(auditweightsShowsCountNext-auditweightsShowsCount)/(auditweightsLikesCount-auditweightsLikesCountNext) urang gancang luncat seukeut.
Bocor anu sami tiasa dianggo ku milarian nilai-nilai ieu pikeun pamakéOwnerCounterCreateLikes dina userId+ownerId sareng, contona, auditweightsCtrGender dina objectId+userGender. Kami mendakan 6 widang anu sami sareng bocor sareng sasari saloba inpormasi anu mungkin ti aranjeunna.

Ku waktu éta, kami geus squeezed kaluar salaku loba informasi mungkin tina fitur kolaborasi, tapi teu balik deui ka kompetisi gambar na téks. Kuring ngagaduhan ide anu saé pikeun pariksa: sabaraha fitur langsung dumasar kana gambar atanapi téks masihan dina kompetisi anu relevan?

Teu aya bocor dina kompetisi gambar sareng téks, tapi dina waktos éta kuring parantos uih deui parameter standar catboost, ngabersihkeun kode sareng nambihan sababaraha fitur. Total éta:

kaputusan geura-giru
Maksimum kalawan gambar 0.6411
Maksimum euweuh gambar 0.6297
Hasil tempat kadua 0.6295

kaputusan geura-giru
Maksimum kalawan téks 0.666
Maksimum tanpa téks 0.660
Hasil tempat kadua 0.656

kaputusan geura-giru
Maksimum dina kolaborasi 0.745
Hasil tempat kadua 0.723

Éta janten écés yén urang sigana moal tiasa nyéépkeun seueur téks sareng gambar, sareng saatos nyobian sababaraha ideu anu paling pikaresepeun, urang lirén damel sareng aranjeunna.

Generasi salajengna fitur dina sistem kolaborasi teu masihan paningkatan, sarta kami ngamimitian ranking. Dina tahap online, klasifikasi jeung ranking ensemble masihan kuring kanaékan leutik, sabab tétéla sabab kuring undertrained klasifikasi. Euweuh sahiji fungsi kasalahan, kaasup YetiRanlPairwise, dihasilkeun mana deukeut hasil nu LogLoss tuh (0,745 vs 0,725). Masih aya harepan pikeun QueryCrossEntropy, anu henteu tiasa diluncurkeun.

Panggung offline

Dina tahap offline, struktur data tetep sarua, tapi aya parobahan leutik:

  • identifiers userId, objectId, ownerId diarandomisasi;
  • sababaraha tanda dihapus sarta sababaraha diganti;
  • data geus ngaronjat kurang leuwih 1,5 kali.

Salian kasusah didaptarkeun, aya hiji tambah badag: tim ieu disadiakeun server badag kalayan RTX 2080TI. Kuring geus lila ngarasakeun htop.
SNA Hackathon 2019

Aya ngan hiji gagasan - mun saukur baranahan naon geus aya. Saatos nyéépkeun sababaraha jam pikeun nyetél lingkungan dina server, kami laun-laun mimiti pariksa yén hasilna tiasa diulang. Masalah utama anu kami hadapi nyaéta kanaékan volume data. Urang mutuskeun pikeun ngurangan beban saeutik tur nyetel parameter catboost ctr_complexity = 1. Ieu lowers speed saeutik, tapi model kuring mimiti digawé, hasilna éta alus - 0,733. Sergey, teu siga kuring, henteu ngabagi data kana 2 bagian sareng ngalatih sadaya data, sanaos ieu masihan hasil anu pangsaéna dina tahap online, dina tahap offline aya seueur kasusah. Upami urang nyandak sadaya fitur anu urang hasilkeun sareng nyobian nyorong kana catboost, maka moal aya anu tiasa dianggo dina tahap online. Sergey ngalakukeun optimasi ngetik, contona, ngarobih jinis float64 ka float32. Dina tulisan ieu Anjeun tiasa mendakan inpormasi ngeunaan optimasi mémori dina pandas. Hasilna, Sergey dilatih dina CPU ngagunakeun sakabéh data jeung meunang ngeunaan 0,735.

Hasil ieu cukup pikeun meunang, tapi urang nyumputkeun speed sabenerna urang jeung teu bisa mastikeun yén tim séjén teu ngalakukeun hal nu sarua.

Tarung nepi ka ahir

Catboost tuning

Solusi kami parantos diproduksi sacara lengkep, kami nambihan fitur data téks sareng gambar, janten sadayana anu tetep nyaéta pikeun nyetél parameter catboost. Sergey dilatih dina CPU kalawan sajumlah leutik iteration, sarta kuring dilatih dina hiji kalawan ctr_complexity = 1. Aya hiji poé ditinggalkeun, sarta lamun ngan ditambahkeun iterasi atawa ngaronjat ctr_complexity, lajeng isuk-isuk anjeun bisa meunang hiji speed malah hadé tur leumpang sapopoe.

Dina tahap offline, speeds bisa pisan gampang disumputkeun ku saukur milih teu solusi pangalusna dina loka. Urang ngaharepkeun parobahan drastis dina leaderboard dina menit panungtungan saméméh kiriman ditutup sarta mutuskeun moal eureun.

Tina pidéo Anna, kuring diajar yén pikeun ningkatkeun kualitas modél, langkung saé milih parameter ieu:

  • learning_rate - Nilai standar diitung dumasar kana ukuran set data. Ngaronjatkeun learning_rate merlukeun ngaronjatna jumlah iterasi.
  • l2_daun_reg - Koéfisién Regularization, nilai standar 3, preferably milih ti 2 ka 30. Turunna nilai ngabalukarkeun kanaékan overfit.
  • bagging_temperature - nambahkeun randomization kana beurat objék dina sampel. Nilai standar nyaéta 1, dimana beuratna digambar tina distribusi eksponensial. Turunna nilai ngabalukarkeun kanaékan overfit.
  • random_strength - Mangaruhan pilihan pamisah dina Iteration husus. Nu leuwih luhur random_strength, nu leuwih luhur kasempetan hiji pamisah pentingna low dipilih. Dina unggal iteration saterusna, randomness nu ngurangan. Turunna nilai ngabalukarkeun kanaékan overfit.

Parameter sanésna gaduh pangaruh anu langkung alit dina hasil ahir, janten kuring henteu nyobian milihana. Hiji iterasi latihan dina dataset GPU kuring kalawan ctr_complexity = 1 nyandak 20 menit, sarta parameter dipilih dina dataset ngurangan éta rada béda ti nu optimal dina dataset pinuh. Tungtungna, kuring ngalakukeun ngeunaan 30 iterations on 10% tina data, lajeng ngeunaan 10 deui iterations on sakabéh data. Tétéla sapertos kieu:

  • learning_rate Kuring ngaronjat ku 40% ti standar;
  • l2_daun_reg ditinggalkeun eta sarua;
  • bagging_temperature и random_strength diréduksi jadi 0,8.

Urang bisa nyimpulkeun yén modél ieu undertrained kalawan parameter standar.

Kuring reuwas pisan nalika kuring ningali hasil dina leaderboard:

model modél 1 modél 2 modél 3 ensembel
Tanpa tuning 0.7403 0.7404 0.7404 0.7407
Kalawan tuning 0.7406 0.7405 0.7406 0.7408

Kuring nyimpulkeun sorangan yén upami aplikasi gancang modél henteu diperyogikeun, maka langkung saé ngagentos seleksi parameter sareng ensemble sababaraha modél nganggo parameter anu henteu dioptimalkeun.

Sergey ngaoptimalkeun ukuran set data pikeun ngajalankeun éta dina GPU. Pilihan pangbasajanna nyaéta motong bagian tina data, tapi ieu tiasa dilakukeun ku sababaraha cara:

  • saeutik demi saeutik miceun data pangkolotna (mimiti Pébruari) nepi ka susunan data mimiti pas kana mémori;
  • miceun fitur anu paling penting;
  • miceun userId nu ngan aya hiji entri;
  • tinggalkeun ngan userId anu aya dina tés.

Sarta pamustunganana, nyieun hiji ensemble kaluar tina sagala pilihan.

ensemble panungtungan

Nepi ka telat malem dinten panungtungan, urang geus diteundeun kaluar hiji ensemble model urang nu yielded 0,742. Sapeuting kuring ngaluncurkeun modél kuring sareng ctr_complexity = 2 sareng tibatan 30 menit dilatih 5 jam. Ngan dina jam 4 ieu diitung, sarta kuring nyieun ensemble panungtungan, nu masihan 0,7433 pa leaderboard umum.

Alatan pendekatan béda pikeun ngarengsekeun masalah, prediksi kami teu kuat correlated, nu masihan kanaékan alus dina ensemble nu. Pikeun meunangkeun ensemble alus, eta leuwih hade migunakeun prediksi model atah (prediction_type = 'RawFormulaVal') tur nyetel scale_pos_weight = neg_count / pos_count.

SNA Hackathon 2019

Dina ramatloka anjeun tiasa ningali hasil ahir dina leaderboard swasta.

Solusi sanésna

Seueur tim ngiringan kanon algoritma sistem anu nyarankeun. Kuring, lain ahli dina widang ieu, teu bisa evaluate aranjeunna, tapi kuring apal 2 solusi metot.

  • Solusi Nikolay Anokhin. Nikolay, jadi hiji pagawe Mail.ru, teu nerapkeun pikeun hadiah, jadi tujuanana teu ngahontal speed maksimum, tapi pikeun ménta hiji solusi gampang scalable.
  • kaputusan tim unggul Hadiah juri urang dumasar kana artikel ieu ti facebook, diwenangkeun pikeun clustering gambar pohara alus tanpa karya manual.

kacindekan

Anu paling nyangkut dina mémori kuring:

  • Upami aya fitur categorical dina data, sareng anjeun terang kumaha ngalakukeun encoding target anu leres, éta langkung saé nyobian catboost.
  • Upami anjeun ngiringan kompetisi, anjeun henteu kedah miceunan waktos milih parameter sanés ti learning_rate sareng iterasi. Solusi anu langkung gancang nyaéta ngadamel ensemble tina sababaraha modél.
  • Boostings tiasa diajar dina GPU. Catboost tiasa diajar gancang pisan dina GPU, tapi ngahakan seueur mémori.
  • Salami ngembangkeun sareng nguji ide, langkung saé nyetél rsm ~ = 0.2 (CPU wungkul) sareng ctr_complexity = 1.
  • Beda sareng tim sanés, ensemble modél urang masihan paningkatan anu ageung. Kami ngan ukur tukeur ide sareng nyerat dina basa anu béda. Kami ngagaduhan pendekatan anu béda pikeun ngabagi data sareng, kuring nyangka, masing-masing gaduh bug sorangan.
  • Teu jelas naha optimasi ranking dipigawé leuwih goreng ti optimasi klasifikasi.
  • Kuring ngagaduhan sababaraha pangalaman damel sareng téks sareng pamahaman kumaha sistem rekomendasi dilakukeun.

SNA Hackathon 2019

Hatur nuhun ka panitia pikeun émosi, pangaweruh jeung hadiah narima.

sumber: www.habr.com

Tambahkeun komentar