SNA Hackathon 2019

Ing Februari-Maret 2019, kompetisi dianakake kanggo peringkat feed jaringan sosial SNA Hackathon 2019, ing ngendi tim kita njupuk Panggonan pisanan. Ing artikel kasebut, aku bakal ngomong babagan organisasi kompetisi, cara sing dicoba, lan setelan catboost kanggo latihan babagan data gedhe.

SNA Hackathon 2019

SNA Hackathon

Iki kaping telune ana hackathon kanthi jeneng iki. Iki diatur dening jaringan sosial ok.ru, masing-masing, tugas lan data kasebut langsung ana hubungane karo jaringan sosial iki.
SNA (analisis jaringan sosial) ing kasus iki luwih bener dimangerteni ora minangka analisis grafik sosial, nanging minangka analisis jaringan sosial.

  • Ing 2014, tugas kanggo prédhiksi jumlah seneng sing bakal ditampa.
  • Ing 2016 - tugas VVZ (mungkin sampeyan wis kenal), luwih cedhak karo analisis grafik sosial.
  • Ing 2019, peringkat feed pangguna adhedhasar kemungkinan pangguna bakal seneng kiriman kasebut.

Aku ora bisa ngomong babagan 2014, nanging ing 2016 lan 2019, saliyane kemampuan analisis data, katrampilan nggarap data gedhe uga dibutuhake. Aku iki kombinasi learning machine lan masalah Processing data amba sing narik kawigaten kula kanggo kompetisi iki, lan pengalaman ing wilayah iki mbantu aku menang.

mlbootcamp

Ing 2019, kompetisi kasebut dianakake ing platform https://mlbootcamp.ru.

Kompetisi kasebut diwiwiti kanthi online tanggal 7 Februari lan ana 3 tugas. Sapa wae bisa ndaftar ing situs kasebut, download baseline lan mbukak mobil kanggo sawetara jam. Ing pungkasan panggung online tanggal 15 Maret, 15 ndhuwur saben acara lompat pertunjukan diundang menyang kantor Mail.ru kanggo panggung offline, sing ditindakake wiwit 30 Maret nganti 1 April.

Tujuan

Data sumber nyedhiyakake ID pangguna (userId) lan ID kiriman (objectId). Yen pangguna ditampilake kiriman, banjur data kasebut ngemot baris sing ngemot userId, objectId, reaksi pangguna marang kiriman iki (umpan balik) lan sakumpulan macem-macem fitur utawa pranala menyang gambar lan teks.

panggunaId objectId pemilikId saran images
3555 22 5677 [disenengi, diklik] [hash1]
12842 55 32144 [ora seneng] [hash2, hash3]
13145 35 5677 [diklik, bareng] [hash2]

Set data test ngemot struktur sing padha, nanging kolom umpan balik ora ana. Tugas kanggo prédhiksi anané reaksi 'disenengi' ing kolom umpan balik.
File kiriman nduweni struktur ing ngisor iki:

panggunaId Daftar Urut[objectId]
123 78,13,54,22
128 35,61,55
131 35,68,129,11

Metrik kasebut minangka rata-rata ROC AUC kanggo pangguna.

Katrangan sing luwih rinci babagan data bisa ditemokake ing situs web dewan. Sampeyan uga bisa ndownload data ing kana, kalebu tes lan gambar.

Tahap online

Ing tataran online, tugas dibagi dadi 3 bagean

  • Sistem kolaboratif - kalebu kabeh fitur kajaba gambar lan teks;
  • Gambar - mung kalebu informasi babagan gambar;
  • Teks - kalebu informasi mung babagan teks.

Tahap offline

Ing tataran offline, data nyakup kabeh fitur, dene teks lan gambar jarang. Ana 1,5 kaping luwih baris ing dataset, sing wis ana akeh.

Solusi saka masalah

Wiwit aku nindakake CV ing karya, aku miwiti perjalanan ing kompetisi iki kanthi tugas "Gambar". Data sing diwenehake yaiku userId, objectId, ownerId (grup ing ngendi kiriman kasebut diterbitake), cap wektu kanggo nggawe lan nampilake kiriman, lan, mesthi, gambar kanggo kiriman iki.
Sawise ngasilake sawetara fitur adhedhasar cap wektu, ide sabanjure yaiku njupuk lapisan penultimate neuron sing wis dilatih ing imagenet lan ngirim embeddings kasebut kanggo nambah.

SNA Hackathon 2019

Asil padha ora nyengsemaken. Embeddings saka neuron imagenet ora salaras, Aku panginten, Aku kudu nggawe autoencoder dhewe.

SNA Hackathon 2019

Butuh wektu akeh lan asile ora saya apik.

Generasi fitur

Nggarap gambar mbutuhake wektu akeh, mula aku mutusake kanggo nindakake sing luwih gampang.
Nalika sampeyan bisa langsung ndeleng, ana sawetara fitur categorical ing dataset, lan supaya ora keganggu banget, aku mung njupuk catboost. Solusi kasebut apik banget, tanpa setelan apa wae, aku langsung menyang baris pisanan ing leaderboard.

Ana cukup akèh data lan wis glethakaken metu ing format parket, supaya tanpa mikir kaping pindho, aku njupuk scala lan miwiti nulis kabeh ing spark.

Fitur paling gampang sing menehi wutah luwih akeh tinimbang embeddings gambar:

  • kaping pirang-pirang objectId, userId lan ownerId katon ing data (kudu sesambungan karo popularitas);
  • carane akeh kiriman userId wis katon saka ownerId (kudu hubungane karo kapentingan pangguna ing grup);
  • carane akeh userId unik sing ndeleng kiriman saka ownerId (nggambarake ukuran pamirsa grup).

Saka timestamp bisa diwenehi wektu dina nalika pangguna nonton feed (esuk / sore / sore / wengi). Kanthi nggabungake kategori kasebut, sampeyan bisa terus ngasilake fitur:

  • pira kaping userId mlebu ing wayah sore;
  • ing wektu apa kiriman iki paling kerep ditampilake (objectId) lan liya-liyane.

Kabeh iki mboko sithik nambah metrik. Nanging ukuran set data latihan kira-kira 20M cathetan, saéngga nambahake fitur banget nyuda latihan kasebut.

Aku wis mikir maneh pendekatan kanggo nggunakake data. Sanajan data gumantung karo wektu, aku ora weruh informasi sing jelas "ing mangsa ngarep", nanging, yen ngono, aku nyuwil kaya iki:

SNA Hackathon 2019

Set latihan sing diwenehake kanggo kita (Februari lan 2 minggu Maret) dibagi dadi 2 bagean.
Model kasebut dilatih ing data saka N dina pungkasan. Agregasi sing diterangake ing ndhuwur dibangun ing kabeh data, kalebu tes. Ing wektu sing padha, data wis muncul sing bisa nggawe macem-macem enkoding variabel target. Pendekatan sing paling gampang yaiku nggunakake maneh kode sing wis nggawe fitur anyar, lan mung feed data sing ora bakal dilatih lan target = 1.

Mangkono, kita entuk fitur sing padha:

  • Kaping pirang-pirang userId ndeleng kiriman ing ownerId grup;
  • Kaping pira userId seneng karo kiriman ing grup ownerId;
  • Persentase kiriman sing disenengi userId saka ownerId.

Yaiku, ternyata enkoding target tegese ing bagean saka dataset kanggo macem-macem kombinasi fitur kategori. Ing asas, catboost uga mbangun enkoding target lan saka sudut pandang iki ora ana gunane, nanging, contone, bisa ngetung jumlah pangguna unik sing seneng kiriman ing grup iki. Ing wektu sing padha, tujuan utama wis digayuh - dataset saya suda kaping pirang-pirang, lan bisa terus ngasilake fitur.

Nalika catboost bisa nggawe enkoding mung adhedhasar reaksi sing disenengi, umpan balik duwe reaksi liyane: dibagi maneh, ora disenengi, ora disenengi, diklik, diabaikan, enkoding sing bisa ditindakake kanthi manual. Aku ngitung maneh kabeh jinis agregat lan ngilangi fitur sing kurang penting supaya ora nggedhekake set data.

Nalika iku aku ana ing posisi pisanan kanthi wates sing amba. Siji-sijine sing mbingungake yaiku embeddings gambar meh ora ana wutah. Ide teka kanggo menehi kabeh kanggo catboost. Kita kluster gambar Kmeans lan entuk imageCat fitur kategoris anyar.

Ing ngisor iki sawetara kelas sawise nyaring manual lan nggabungake klompok sing dipikolehi saka KMeans.

SNA Hackathon 2019

Adhedhasar imageCat kita ngasilake:

  • Fitur kategori anyar:
    • ImageCat endi sing paling kerep dideleng dening userId;
    • ImageCat sing paling kerep nuduhake ownerId;
    • ImageCat sing paling kerep disenengi dening userId;
  • Macem-macem counter:
    • Carane akeh imageCat unik katon ing userId;
    • Udakara 15 fitur sing padha plus enkoding target kaya sing kasebut ing ndhuwur.

Teks

Asil ing kompetisi gambar cocog kula lan aku mutusaké kanggo nyoba tangan ing teks. Aku wis ora kerjo akeh karo teks sadurunge lan, bodho, aku matèni dina ing tf-idf lan svd. Banjur aku ndeleng garis dasar karo doc2vec, sing nindakake apa sing dibutuhake. Duwe rada nyetel paramèter doc2vec, aku entuk embeddings teks.

Banjur aku mung nggunakake kode kanggo gambar, ing ngendi aku ngganti embeddings gambar karo embeddings teks. Akibaté, aku njupuk Panggonan 2 ing lomba teks.

Sistem kolaboratif

Ana siji kompetisi kiwa aku durung "poked" karo kelet, lan menehi kritik dening AUC ing leaderboard, asil kompetisi tartamtu iki kudu duwe impact paling ing tataran offline.
Aku njupuk kabeh fitur sing ana ing data sumber, milih kategori lan ngetung aggregates padha kanggo gambar, kajaba fitur adhedhasar gambar piyambak. Mung nglebokake iki ing catboost aku entuk peringkat 2.

Langkah pisanan optimasi catboost

Siji pisanan lan loro panggonan pleased kula, nanging ana pangerten sing aku wis ora nindakake apa-apa khusus, kang tegese aku bisa nyana mundhut saka posisi.

Tugas kompetisi yaiku kanggo pangkat kiriman ing pangguna, lan kabeh wektu iki aku ngrampungake masalah klasifikasi, yaiku, ngoptimalake metrik sing salah.

Aku bakal menehi conto prasaja:

panggunaId objectId prediksi bebener lemah
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

Ayo nggawe rearrangement cilik

panggunaId objectId prediksi bebener lemah
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

Kita entuk asil ing ngisor iki:

Modele AUC Panganggo 1 AUC Panganggo 2 AUC tegese AUC
Opsi 1 0,8 1,0 0,0 0,5
Opsi 2 0,7 0,75 1,0 0,875

Kaya sing sampeyan ngerteni, nambah metrik AUC sakabèhé ora ateges nambah metrik AUC rata-rata ing pangguna.

Catboost ngerti carane ngoptimalake metrik peringkat saka kothak. Aku maca babagan metrik peringkat, crita sukses nalika nggunakake catboost lan nyetel YetiRankPairwise kanggo olahraga sewengi. Asil ora nyengsemaken. Nemtokake yen aku undertrained, Aku ngganti fungsi kesalahan kanggo QueryRMSE, kang, kang menehi kritik dening dokumentasi catboost, converges luwih cepet. Ing pungkasan, aku entuk asil sing padha nalika latihan kanggo klasifikasi, nanging ensembles saka rong model kasebut nambah apik, sing nggawa aku menyang posisi pertama ing kabeh telung kompetisi.

5 menit sadurunge penutupan panggung online kompetisi "Sistem Kolaboratif", Sergey Shalnov mindhah aku menyang papan liya. Kita mlaku ing dalan luwih bebarengan.

Nyiapake kanggo tahap offline

Kita padha dijamin kamenangan ing tataran online karo kertu video RTX 2080 TI, nanging hadiah utama 300 rubles lan, paling kamungkinan, malah Panggonan pisanan final meksa kita bisa kanggo iki 000 minggu.

Ternyata, Sergey uga nggunakake catboost. Kita ijol-ijolan ide lan fitur, lan aku sinau babagan laporan dening Anna Veronica Dorogush sing ngemot jawaban kanggo akeh pitakonanku, lan uga sing durung dakwenehi wektu iku.

Ndeleng laporan mimpin kula kanggo idea sing kita kudu bali kabeh paramèter menyang Nilai gawan, lan nindakake setelan kasebut kanthi teliti, lan mung sawise ndandani pesawat saka fitur. Saiki siji latihan njupuk udakara 15 jam, nanging siji model bisa entuk kacepetan sing luwih apik tinimbang sing dipikolehi ing gamelan kanthi peringkat.

Generasi fitur

Ing kompetisi Sistem Kolaboratif, akeh fitur sing ditaksir minangka penting kanggo model kasebut. Tuladhane, auditweights_spark_svd - tandha paling penting, nanging ora ana informasi babagan apa tegese. Aku panginten iku bakal migunani kanggo count macem-macem aggregates adhedhasar fitur penting. Contone, rata-rata auditweights_spark_svd dening pangguna, dening klompok, dening obyek. Sing padha bisa diitung kanthi nggunakake data sing ora ana latihan lan target = 1, yaiku rata-rata auditweights_spark_svd dening pangguna dening obyek sing disenengi. Pratandha penting liyane auditweights_spark_svd, ana sawetara. Ing ngisor iki sawetara:

  • auditweightsCtrGender
  • bobot auditCtrHigh
  • userOwnerCounterCreateLikes

Contone, rata-rata auditweightsCtrGender miturut userId iku dadi fitur penting, kaya nilai rata-rata userOwnerCounterCreateLikes dening userId+ownerId. Iki mesthine wis nggawe sampeyan mikir yen sampeyan kudu ngerti makna lapangan.

Uga fitur penting padha auditweightsLikesCount и auditweightsShowsCount. Dibagi siji liyane, fitur sing luwih penting dipikolehi.

Data bocor

Pemodelan kompetisi lan produksi minangka tugas sing beda banget. Nalika nyiapake data, angel banget kanggo njupuk kabeh rincian lan ora ngirim sawetara informasi non-sepele babagan variabel target ing test. Yen kita nggawe solusi produksi, kita bakal nyoba supaya ora nggunakake bocor data nalika nglatih model kasebut. Nanging yen kita pengin menang kompetisi, banjur bocor data minangka fitur sing paling apik.

Sawise sinau data, sampeyan bisa ndeleng manawa miturut nilai objectId auditweightsLikesCount и auditweightsShowsCount owah-owahan, sing tegese rasio nilai maksimum fitur kasebut bakal nggambarake konversi kirim luwih apik tinimbang rasio nalika ditampilake.

Bocor pisanan sing ditemokake yaiku auditweightsLikesCountMax/auditweightsShowsCountMax.
Nanging apa yen kita ndeleng data luwih cedhak? Ayo diurutake miturut tanggal pertunjukan lan entuk:

objectId panggunaId auditweightsShowsCount auditweightsLikesCount target (disenengi)
1 1 12 3 mbokmenawa ora
1 2 15 3 mbok ya
1 3 16 4

Kaget nalika aku nemokake conto sing sepisanan lan ternyata ramalanku ora kelakon. Nanging, kanthi nyathet kasunyatan manawa nilai maksimal karakteristik kasebut ing obyek kasebut nambah, kita ora kesed lan mutusake kanggo nemokake auditweightsShowsCountNext и auditweightsLikesCountNext, yaiku, nilai ing wayahe sabanjure. Kanthi nambahake fitur
(auditweightsShowsCountNext-auditweightsShowsCount)/(auditweightsLikesCount-auditweightsLikesCountNext) kita nggawe mlumpat kanthi cepet.
Bocor sing padha bisa digunakake kanthi nemokake nilai ing ngisor iki kanggo userOwnerCounterCreateLikes ing userId+ownerId lan, contone, auditweightsCtrGender ing objectId+userGender. Kita nemokake 6 kolom sing padha karo bocor lan ngekstrak informasi sing paling akeh.

Ing wektu iku, kita wis squeezed metu minangka akeh informasi saka fitur collaborative, nanging ora bali menyang gambar lan kompetisi teks. Aku duwe idea apik kanggo mriksa: pinten fitur langsung adhedhasar gambar utawa teks menehi ing kompetisi cocog?

Ora ana bocor ing kompetisi gambar lan teks, nanging ing wektu iku aku wis bali paramèter catboost standar, ngresiki kode lan nambah sawetara fitur. Gunggunge ana:

kaputusan enggal
Maksimum karo gambar 0.6411
Maksimal ora ana gambar 0.6297
Hasil nomer loro 0.6295

kaputusan enggal
Maksimum karo teks 0.666
Maksimal tanpa teks 0.660
Hasil nomer loro 0.656

kaputusan enggal
Maksimal ing kolaborasi 0.745
Hasil nomer loro 0.723

Iku dadi ketok yen kita ora bisa kanggo remet akeh metu saka teks lan gambar, lan sawise nyoba saperangan saka gagasan paling menarik, kita mandheg nggarap wong-wong mau.

Fitur generasi luwih ing sistem kolaborasi ora nambah, lan kita miwiti peringkat. Ing tataran online, klasifikasi lan rangking ensemble menehi saya mundhak cilik, amarga ternyata aku undertrained klasifikasi. Ora ana fungsi kesalahan, kalebu YetiRanlPairwise, diprodhuksi ing ngendi wae cedhak asil sing LogLoss (0,745 vs. 0,725). Isih ana pangarep-arep kanggo QueryCrossEntropy, sing ora bisa diluncurake.

Tahap offline

Ing tataran offline, struktur data tetep padha, nanging ana owah-owahan cilik:

  • pengenal userId, objectId, ownerId padha rerandomized;
  • sawetara pratandha dibusak lan sawetara diganti jeneng;
  • data wis tambah kira-kira 1,5 kaping.

Saliyane kesulitan sing kadhaptar, ana siji plus gedhe: tim kasebut diwenehi server gedhe kanthi RTX 2080TI. Aku wis suwe seneng htop.
SNA Hackathon 2019

Mung ana siji gagasan - mung ngasilake apa sing wis ana. Sawise nglampahi sawetara jam nyetel lingkungan ing server, kita mboko sithik wiwit verifikasi sing asil padha reproducible. Masalah utama sing kita adhepi yaiku nambah volume data. Kita mutusake kanggo nyuda beban sethithik lan nyetel parameter catboost ctr_complexity=1. Iki nyuda kacepetan sethithik, nanging modelku wiwit kerja, asile apik - 0,733. Sergey, ora kaya aku, ora misahake data dadi 2 bagean lan dilatih ing kabeh data, sanajan iki menehi asil paling apik ing tahap online, ing tahap offline ana akeh kesulitan. Yen kita njupuk kabeh fitur sing digawe lan nyoba kanggo push menyang catboost, banjur ora bakal bisa ing tataran online. Sergey nindakake optimasi jinis, contone, ngowahi jinis float64 dadi float32. Ing artikel iki, Sampeyan bisa nemokake informasi babagan optimasi memori ing panda. Akibaté, Sergey dilatih ing CPU nggunakake kabeh data lan entuk bab 0,735.

Asil kasebut cukup kanggo menang, nanging kita ndhelikake kacepetan sing sejatine lan ora yakin manawa tim liyane ora nindakake perkara sing padha.

Perang nganti pungkasan

Catboost tuning

Solusi kita direproduksi kanthi lengkap, kita nambahake fitur data teks lan gambar, supaya kabeh sing isih ana yaiku nyetel paramèter catboost. Sergey dilatih ing CPU karo nomer cilik saka iterasi, lan aku dilatih ing siji karo ctr_complexity = 1. Mung siji dina, lan yen sampeyan mung nambah iterasi utawa nambah ctr_complexity, esuk sampeyan bisa entuk kacepetan sing luwih apik lan mlaku sedina muput.

Ing tataran offline, kacepetan bisa gampang banget didhelikake dening mung milih ora solusi paling apik ing situs. Kita ngarepake owah-owahan drastis ing leaderboard ing menit pungkasan sadurunge kiriman ditutup lan mutusake ora mandheg.

Saka video Anna, aku sinau manawa kanggo nambah kualitas model, luwih becik milih paramèter ing ngisor iki:

  • learning_rate - Nilai standar diwilang adhedhasar ukuran dataset. Tambah learning_rate mbutuhake nambah jumlah iterasi.
  • l2_leaf_reg - Koefisien Regularization, Nilai standar 3, luwih milih saka 2 kanggo 30. Mudhun Nilai ndadékaké kanggo Tambah ing overfit.
  • bagging_temperature - nambah randomization kanggo bobot saka obyek ing sampel. Nilai standar yaiku 1, ing ngendi bobot digambar saka distribusi eksponensial. Ngurangi nilai ndadékaké kanggo nambah overfit.
  • random_strength - Ngaruhi pilihan pamisah ing pengulangan tartamtu. Sing luwih dhuwur ing random_strength, sing luwih dhuwur kasempatan saka pamisah wigati kurang dipilih. Ing saben pengulangan sakteruse, randomness sudo. Ngurangi nilai ndadékaké kanggo nambah overfit.

Parameter liyane duwe efek sing luwih cilik ing asil pungkasan, mula aku ora nyoba milih. Siji latihan latihan ing dataset GPU kanthi ctr_complexity = 1 njupuk 20 menit, lan paramèter sing dipilih ing set data sing dikurangi rada beda karo sing paling optimal ing set data lengkap. Pungkasane, aku nindakake babagan 30 iterasi ing 10% data, banjur udakara 10 maneh iterasi ing kabeh data. Ternyata kaya mangkene:

  • learning_rate Aku tambah 40% saka standar;
  • l2_leaf_reg ninggalake iku padha;
  • bagging_temperature и random_strength suda dadi 0,8.

Kita bisa nyimpulake manawa model kasebut kurang dilatih karo paramèter standar.

Aku kaget banget nalika ndeleng asil ing leaderboard:

Modele model 1 model 2 model 3 gamelan
Tanpa tuning 0.7403 0.7404 0.7404 0.7407
Kanthi tuning 0.7406 0.7405 0.7406 0.7408

Aku nyimpulake dhewe yen aplikasi cepet model ora dibutuhake, mula luwih becik ngganti pilihan paramèter kanthi ensemble sawetara model nggunakake paramèter sing ora dioptimalake.

Sergey ngoptimalake ukuran dataset kanggo mbukak ing GPU. Pilihan sing paling gampang yaiku ngethok bagean data, nanging iki bisa ditindakake kanthi sawetara cara:

  • mboko sithik mbusak data paling tuwa (wiwit Februari) nganti dataset wiwit pas menyang memori;
  • mbusak fitur sing paling penting;
  • mbusak userId sing mung ana siji entri;
  • ninggalake mung userId sing ana ing test.

Lan pungkasanipun, nggawe gamelan metu saka kabeh opsi.

Gamelan pungkasan

Ing wayah sore ing dina pungkasan, kita wis nggawe gamelan model sing ngasilake 0,742. Sewengi aku dibukak model karo ctr_complexity = 2 lan tinimbang 30 menit dilatih kanggo 5 jam. Mung ing 4 iki dietung, lan aku nggawe gamelan pungkasan, kang menehi 0,7433 ing leaderboard umum.

Amarga pendekatan sing beda-beda kanggo ngrampungake masalah kasebut, ramalan kita ora ana hubungane banget, sing menehi peningkatan apik ing gamelan. Kanggo entuk gamelan sing apik, luwih becik nggunakake prediksi model mentah (prediction_type = 'RawFormulaVal') lan nyetel scale_pos_weight = neg_count / pos_count.

SNA Hackathon 2019

Ing situs web sampeyan bisa ndeleng asil final ing leaderboard pribadi.

Solusi liyane

Akeh tim ngetutake kanon algoritma sistem rekomendasi. Aku, dudu pakar ing lapangan iki, ora bisa ngevaluasi, nanging aku ngelingi 2 solusi sing menarik.

  • Solusi Nikolay Anokhin. Nikolay, minangka karyawan Mail.ru, ora nglamar hadiah, mula tujuane ora entuk kacepetan maksimal, nanging entuk solusi sing gampang diukur.
  • Keputusan tim pemenang Hadiah Juri adhedhasar artikel iki saka facebook, diijini kanggo clustering gambar apik banget tanpa karya manual.

kesimpulan

Apa sing paling macet ing memoriku:

  • Yen ana fitur kategoris ing data, lan sampeyan ngerti carane nindakake enkoding target kanthi bener, luwih becik nyoba catboost.
  • Yen sampeyan melu kompetisi, sampeyan ora kudu mbuwang wektu kanggo milih paramèter kajaba learning_rate lan iterasi. Solusi sing luwih cepet yaiku nggawe gamelan saka sawetara model.
  • Boostings bisa sinau ing GPU. Catboost bisa sinau kanthi cepet ing GPU, nanging mangan akeh memori.
  • Sajrone ngembangake lan nguji gagasan, luwih becik nyetel rsm ~ = 0.2 cilik (CPU mung) lan ctr_complexity = 1.
  • Ora kaya tim liyane, gamelan model kita nambah banget. Kita mung ijol-ijolan ide lan nulis nganggo basa sing beda-beda. Kita duwe pendekatan sing beda kanggo pamisah data lan, aku mikir, saben duwe kewan omo dhewe.
  • Ora jelas kenapa optimasi peringkat luwih elek tinimbang optimasi klasifikasi.
  • Aku entuk sawetara pengalaman nggarap teks lan pangerten babagan cara nggawe sistem rekomendasi.

SNA Hackathon 2019

Matur nuwun kanggo panitia kanggo emosi, kawruh lan hadiah sing ditampa.

Source: www.habr.com

Add a comment