Persaingan VK Sup. Lacak ML. Tempat ke-4. Bagaimana?

gambar

Dalam kontes ini, yang diadakan sebagai bagian dari babak kualifikasi VK 2020up 2020 , melacak ML , perlu untuk memperkirakan proporsi pemirsa potensial yang akan melihat iklan yang ditampilkan pada beberapa platform iklan dengan jumlah waktu tertentu: 1,2,3 di masa mendatang.

Ini bukan kompetisi klasik untuk mengirim prediksi akhir ke data uji yang diketahui, tetapi prediksi pada data yang sama sekali tidak dikenal yang dikirim ke model di buruh pelabuhan yang diluncurkan di situs kompetisi.

Secara umum, solusi semacam itu menyamakan peluang para peserta dan tidak memungkinkan mereka yang suka mengintip tes, memperkaya set data pelatihan dengan mereka, dan menyesuaikan model dengan distribusi data uji. Di sini semua orang memiliki kedudukan yang sama, karena tidak jelas apa yang mungkin ada dalam data: data "sampah", pencilan sporadis, pembatas tidak valid, dll. Tetapi semua nuansa ini sekaligus membuat kita berpikir untuk menangani pengecualian.

Dalam kontes ini, saya mengambil tempat ke-4 yang tidak mencolok dan saya ingin mengatakan bagaimana itu mungkin.

Ikhtisar Data


Data awal disajikan dalam bentuk berikut:

  1. users.tsv – : , , . , , , . ( ), .
  2. history.tsv β€” "-", ( ) . , , .
  3. File validate.tsv adalah file validasi untuk melatih model, hanya berisi data pada interval waktu berapa dan berapa harga iklan ditampilkan untuk audiens tertentu (platform dan pengguna). Pengguna dan situs diberikan dalam bentuk string dari formulir (1,5,7,3,14,6).
  4. File validate_answers.tsv - file jawaban terdiri dari tiga kolom: berapa persen (nilai 0 hingga 1), audiens terlihat diklasifikasikan 1, 2, 3 kali. Dengan demikian, urutan ini tidak meningkat.

Tujuan kompetisi : untuk memprediksi tiga set nilai untuk data baru dari masa depan (dalam format file validate.tsv ) - berapa proporsi audiens yang akan melihat iklan 1.2, 3 kali.

Rincian lebih lanjut tentang tugas di situs web kompetisi .

Prediktor


Prediktor terakhir yang saya gunakan adalah sekumpulan 2 kompleks:

  • prediktor berdasarkan riwayat dan perbandingannya dengan data baru
  • prediktor hanya pada data dari masa depan

Di antara kompleks pertama, berdasarkan pada file histori, statistik dasar dihasilkan untuk pasangan situs-pengguna yang dikelompokkan , dan kemudian agregasi mereka ke pasangan situs-pengguna dalam validasi dan file uji. Ini diikuti oleh pemilihan prediktor dengan cara yang berbeda - baik berdasarkan frekuensi menggunakan prediktor pada tahap partisi dan digunakan dalam model itu sendiri, dan pada validasi, dari atas ke bawah dan dari bawah ke atas. Terlepas dari skema seleksi yang berbeda, secara umum semuanya turun ke sekitar satu set alat prediksi dan sebagai hasilnya ada tujuh dari mereka.

Interpretasi dari prediktor kompleks kedua (ada tujuh di antaranya secara mengejutkan) umumnya jauh lebih sederhana:

1. Delta- perbedaan waktu. Apakah ini logis? Logikanya: semakin besar interval, semakin besar kemungkinan tampilan. Tentu saja, tidak ada ketergantungan langsung, tetapi secara fisik seharusnya seperti itu, apalagi ini adalah salah satu prediktor paling kuat jika kita menganggapnya secara terpisah.

2. Delta2 juga merupakan perbedaan waktu, tetapi dikonversi per hari (yaitu, divisi bilangan bulat oleh 24). Artinya, kita mengubah ketergantungan linier menjadi ketergantungan. Idenya di sini sederhana: kita tidak membedakan antara jam, tetapi di sini interval yang sangat lama (hari) akan menetapkan tren mereka sendiri.

3. cpm - harga itu sendiri, sama: semakin mahal harganya, semakin besar kemungkinan untuk melihat, sekali lagi, tentu saja, tidak ada ketergantungan langsung, tetapi dalam "menggoda" dengan prediktor lain berdasarkan sejarah, ketergantungannya jelas ditelusuri.

4-7. Ini adalah dosa dan cos dari waktu mulai dan akhir iklan, yang juga diterjemahkan ke dalam garis waktu 24 jam. Penggunaan fungsi-fungsi ini, berbeda dengan waktu linier, memungkinkan Anda untuk mempertimbangkan interval waktu akun yang melewati hari itu. Penggunaan prediktor ini segera memberi peningkatan 1,5 poin persentase.

Metrik dan respons


Metrik Rasio Akurasi Log Ber smoothing (selanjutnya disebut SMLAR ) yang disajikan oleh penyelenggara .

gambar

Di mana respons awal disajikan dalam proporsi audiens yang melihat iklan 1,2,3 kali, yaitu nilai dalam kisaran [0,1].

Omong-omong, KDPV menunjukkan perilaku metrik ini, atau lebih tepatnya, bukan seluruh metrik, tetapi bagiannya ( MAE untuk logaritma bias prediksi) untuk semua kombinasi prediksi dan nilai sebenarnya pada seluruh rentang [0,1].

Jika Anda hati-hati melihat rumus metrik, maka: di satu sisi, metrik ini kira-kira sesuai dengan rata-rata geometris rasio prediksi dan nilai sebenarnya (dengan bias), yang jelas lebih baik daripada metrik rata-rata aritmatika (karena hasil akhir yang lebih rendah). Di sisi lain, jika kita menghilangkan eksponen, yang pada nilai rendah berperilaku hampir seperti eksponen derajatnya, metrik diubah menjadi MAE oleh logaritma respons dengan offset. Jadi, untuk membangun model yang benar secara ideologis, perlu menggunakan respons awal dengan fungsi offset dan kerugian di mana terdapat logaritma dalam bentuk eksplisit, atau, sebaliknya, pertama-tama menggunakan logaritma respons offset dan fungsi kehilangan linier ( MAE , eps) Tetapi, mengingat model saya (di mana fungsi kerugian tidak ditentukan secara eksplisit), saya memilih transformasi respons yang optimal berdasarkan hasil dari model validasi.

Saya mempertimbangkan opsi respons berikut - share asli, logaritma share, transisi ke nilai absolut dari jumlah pengguna, logaritma mereka dengan offset yang berbeda (di sini ada upaya untuk menggunakan satu offset terpadu ketika pindah ke nilai absolut, karena offset 0,005 diindikasikan untuk share, dan penontonnya adalah berbeda, dari 300 hingga 2500, jadi offset harus dalam kisaran dari 1 hingga 12, tetapi saya hanya memeriksa nilai 1 dan 10), dan akar dari nilai absolut dari orang yang melihat iklan.

gambar

Gambar di atas menunjukkan hasil untuk dua model yang dilatih untuk respons yang berbeda: audiens awal berbagi dan jumlah absolut peserta.

Diagram atas menunjukkan nilai yang diurutkan dari respons sebenarnya (berdasarkan fraksi pemindaian pertama) dan nilai prediksi untuk kedua model. Jelas bahwa sebagian besar nilai respons cukup kecil, sehingga nilai median sekitar 5%, dan ini hanya untuk pemindaian pertama (untuk pemindaian kedua, median sudah kurang dari 1%, dan untuk pemindaian ketiga hampir 0%, dan untuk metrik ini nilai kecil dan kesalahan pada mereka sangat tidak menyenangkan). Dalam diagram ini juga terlihat jelas bahwa model dengan nilai absolut secara kualitatif lebih baik, penyebaran dalam estimasi cukup minimal, dan meskipun fakta bahwa penyimpangan hampir tidak terlihat pada grafik pada nilai kecil, akibatnya, kesalahan pada nilai-nilai kecil ini yang sangat mempengaruhi hasil akhir. Hal yang sama dapat dilihat pada KDPV, kelengkungan yang sangat tajam pada nilai rendah, terutama mendekati nol.

Diagram rata-rata menunjukkan kesalahan dari setiap prediksi yang diurutkan, kesalahan yang kuat pada nilai-nilai kecil dan penurunannya dengan meningkatnya nilai respons terlihat.

Di diagram bawah, diagram metrik yang ditargetkan langsung sedang dibangun dengan akumulasi total untuk semua nilai yang diurutkan. Apa kesimpulan dari semua ini? Yang pertama adalah bahwa respon yang dipilih sangat mempengaruhi hasil model, tetapi lebih pada yang di bawah, kesimpulan kedua, memberikan perhatian khusus pada nilai-nilai kecil, terutama mendekati nol, jelas bahwa model tidak akan selalu dapat memprediksi nol murni, oleh karena itu koreksi diperlukan. Dan kesalahan pada nilai besar tidak begitu penting, pertama, mereka relatif kecil, dan kedua, persentase kesalahan pada nilai besar akan kecil, dan pada saat yang sama itu akan membuat kontribusi total minimal ke metrik.

Akibatnya, menurut hasil berbagai eksperimen, pemenang dengan margin yang jelas adalah respons - akar dari nilai absolut pengguna. Pada saat yang sama, pada prediksi yang berbeda (oleh pandangan 1, 2, 3), kadang-kadang model dengan logaritma nilai absolut juga menang, hal ini disebabkan oleh dominasi 0 yang jelas dalam respons, dan, sebagai hasilnya, logaritma dengan beberapa bias lebih baik. Tetapi jika Anda menyamakannya, maka root sederhana tanpa bias menunjukkan hasil stabil yang baik, jadi saya tidak ingin menyulitkan keputusan, tetapi untuk berhenti pada metode terpadu yang sederhana - hanya akar dari orang-orang.

Apa alasan untuk fakta bahwa transisi ke orang secara signifikan meningkatkan hasil relatif terhadap pembagian (hampir 2 kali)?

Rupanya, faktanya adalah beralih ke orang, mengalikan bagian dengan audiens, atau hal yang sama seperti membagi semua prediktor dengan audiens yang sama, kita masuk ke dimensi relatif terhadap "satu orang", dan mengingat bahwa dasar model saya adalah regresi, estimasi akhir adalah jenis estimasi probabilitas tertimbang relatif terhadap masing-masing prediktor. Ada kemungkinan bahwa jika kita menormalkan hanya sebagian dari prediktor kepada audiens, misalnya, dari prediktor kelompok pertama (jumlah seluruh pasangan, misalnya), maka normalisasi ini akan membawa dimensi semua prediktor lebih dekat ke sistem pelaporan tunggal (per orang), dan regresi akhir , tanggapannya, tidak lebih dari jumlah rata-rata tertimbang dari kontribusi masing-masing prediktor (yang menjadi ciri satu orang) terhadap probabilitas total penglihatan, maka mungkin hasilnya akan lebih baik.Tetapi pada saat keputusan kontes, saya tidak mendekati dari sisi ini dan bekerja secara eksklusif dengan respon yang berubah.

Model


Bahkan, bagian ini harus diletakkan lebih tinggi, karena itu karena model ini kami harus memilih jenis respons dan prediktor yang diperlukan yang digunakan untuk itu (model disesuaikan dengan data) dan, dengan satu cara atau lain, adalah mungkin untuk mencapai yang dapat diterima pada prediksi yang berbeda hasilnya sekitar 15%. Tetapi saya ingin bahwa rata-rata ada beberapa pembenaran untuk memilih prediktor tertentu, oleh karena itu, kombinasi prediktor dipilih untuk validasi.

Saya menggunakan model dari keluarga pohon model regresi, yaitu model cubist (model 1992!), Dan implementasinya dalam paket dengan nama yang sama di R. Sebaliknya, hasil akhir adalah rata-rata geometris dari dua set model, yang masing-masing terdiri dari 3 model terpisah, tetapi dalam kaskade: prediksi model sebelumnya (untuk 1 tampilan) digunakan sebagai prediktor untuk model kedua dan ketiga, dan prediksi akhir untuk tampilan kedua sebagai prediktor untuk model ketiga. model. Kedua pasang model sedikit berbeda dalam prediktor dan penyesuaian menengah, dan rata-rata geometriknya digunakan berdasarkan akal sehat (well, validasi, dengan kursus publik), dan artinya sederhana: seperti yang saya tulis di atas, perhatian khusus diberikan pada nol prediksi, dan umumnya minimal , dan rata-rata geometris persis seperti yang dilakukannya: ia menghilangkan prediksi jika salah satunya sudah nol (dan ini logis jika salah satu model menunjukkan nol, jadi biarkan tetap,daripada kita akan "menunda" prediksi dari nol).

Dan berkat kaskade model, model tersebut secara tidak langsung β€œmemahami” (sejak regresi) bahwa setiap respons selanjutnya β€œmelekat” pada jawaban yang diprediksi sebelumnya dari estimasi sebelumnya, dan prediktor yang tersisa mengoreksi jawaban, yang seharusnya tidak lebih dari yang sebelumnya. Saya juga menguji tiga model terpisah yang memperkirakan respons secara individual. Hasilnya lebih lemah karena banyaknya angka nol pada pindaian kedua dan ketiga, keluarga regresi tidak bisa mencapai 0, dan ketika kita menambahkan "panduan" ke perkiraan sebelumnya, yang sudah 0 atau mendekati itu, keluarga regresi yang dihasilkan juga jatuh di sekitar ini nilai dan hanya menyesuaikan respons terhadap tampilan kedua dan ketiga.

Apa yang baik tentang model ini?

Ketika saya melihat tugas itu, saya langsung ingat tentang model ini, karena pada salah satu kompetisi sebelumnya dalam masalah yang sebanding (hubungan linier dan koreksi mereka) itu juga salah satu yang terbaik, dan secara umum, kami memiliki data yang cukup linier di sini, ada hubungan yang jelas antara jumlah pandangan (yang kedua kurang dari yang pertama, yang ketiga kurang dari yang kedua), ada sedikit data - hanya 1008 pengamatan, ada sejumlah kecil prediktor, mungkin beberapa jenis dependensi linear-rusak. Selain itu, model ini sangat cepat, konstruksinya memakan waktu beberapa detik, sehingga nyaman baginya untuk menguji banyak hipotesis. Namun, dia tidak memiliki hyperparameters (dengan pengecualian tetangga (parameter lain adalah perkiraan korektif), yang saya tidak gunakan), di mana saya bisa berlatih kembali.

Bagaimana prediksi dalam model ini untuk satu pohon?
, , 100 ( , , 10-20 ), , , , : ( ), , ( , ) .

, , .

Penyesuaian


Selain itu, penyesuaian kecil prediksi digunakan, yaitu: ketika beralih dari jumlah absolut orang ke saham mereka, situasi nilai yang sangat kecil (positif, sedikit lebih dari 0, atau lebih dari 1) berpotensi terjadi, dan jika dalam kasus nilai lebih dari 1, penyesuaian mereka tidak memainkan peran yang lebih besar. (mungkin ada beberapa penerbangan seperti itu, dan jika itu, maka tidak signifikan), tetapi dalam kasus nilai-nilai kecil, itu relatif kritis. Dengan alasan, diterima bahwa jika saya memprediksi, misalnya, 1 orang (atau 0,5 orang, pembulatan tidak dilakukan), maka dengan audiens maksimum 2.500 (ini sama sekali tidak diketahui dengan data yang diketahui di kereta, yang benar-benar terjadi pada data uji), yaitu 0,0004 (omong-omong, dan di kereta, nilai minimum adalah 0,0004),itu berarti di suatu tempat di sekitar nilai ini, perlu untuk mengubah nilai yang lebih rendah ke 0, dan mengingat bahwa model saya dibangun dalam sebuah rantai, konstruksi model berikutnya dan prediksinya tergantung pada prediksi nol, dll. itu banyak dipengaruhi.

Tidak masuk akal untuk memilih ambang untuk validasi (karena model tetap menyesuaikan dengan data ini, dan saya tahu distribusinya), jadi saya melirik publik (untuk beberapa nilai yang dipilih), tetapi pada akhirnya saya pergi ke salah satu dari tiga model ambang pembulatan indah 0,0005, dan untuk 0,0004 teoritis kedua.

Penyesuaian dari atas lebih mudah, nilai-nilai yang lebih besar dari 0,95 untuk membayar di 0.95, 0.95 dibuat berdasarkan pangsa maksimum data uji digunakan dengan sebuahdengan margin terbesar (maksimum 0,93 di kereta), penyesuaian ini praktis tidak berpengaruh pada publik (keberangkatan tunggal tampaknya di publik), dibiarkan khusus untuk keamanan secara pribadi. Dan juga koreksi terkait dengan nol ditambahkan, jika prediksi nol pada pemindaian pertama, maka terlepas dari prediksi model pada pemindaian kedua dan ketiga, prediksi mereka juga pergi ke 0, ini tidak mempengaruhi banyak, di suatu tempat tanda kedua (model praktis) selalu dan itu sendiri (kurang dari yang sebelumnya dan ke nol) lakukan), tetapi pergi untuk keamanan secara pribadi.

hasil


Hasilnya sangat tergantung pada jenis respons dan prediktor yang dipilih, misalnya, bahkan jika Anda memperkirakan fraksi, atau bahkan lebih baik daripada logaritma mereka, Anda dapat memilih prediktor lain dan hasilnya akan menjadi sekitar 16%, dan jika Anda pergi ke nilai absolut dan juga memilih kembali prediktor, kemudian semuanya dimulai sekitar 15%, jadi ini adalah garis dasar saya.

Dan omong-omong, hasil ini sudah cukup untuk tetap berada di lima besar, tetapi menarik untuk "meningkatkan" lebih banyak.

Jadi, apa yang secara dramatis meningkatkan 15% ini?

Secara umum, hanya menambahkan jam, hanya beberapa jam (waktu mulai dan waktu selesai) segera menghasilkan 13,97%, mengubahnya menjadi sinus-cosinus meningkat menjadi 13,44%, dan kemudian meningkat menjadi 13,25% membulatkan nilai-nilai kecil menjadi nol, dan rata-rata geometris rata-rata dari dua model, yaitu, sudah lebih tala untuk tes (publik), dan karena ini, saya masih mendapat sedikit mirip untuk umum.

Dalam kompetisi ini, perlu untuk memilih satu solusi. Sekarang, melihat dalam LC, saya melihat bahwa solusi yang saya pilih ternyata hampir yang terbaik di pribadi juga (tempat tidak berubah) (privat terbaik adalah kurang dari 0,02 poin persentase), tetapi jika Anda menerima kiriman yang jawabannya tidak begitu bulat, maka pada pribadi mereka sedikit lebih buruk - 13,6%, yaitu, tidak ada pelatihan ulang yang kuat untuk umum, tetapi penyesuaian ini tidak memainkan peran yang sangat besar juga.

Akibatnya, keberhasilan cadangan utama: prediktor dipilih di bawah model respon yang dipilih cubist , model Cascade (1-> 2-> 3) dan temporal s e prediktor ( sin , cos ).

Kesimpulan


Terlepas dari kenyataan bahwa pemenang dari lima tempat pertama menggunakan berbagai model, termasuk yang modern (1 tempat - SVR , 2 tempat - catboost , 3 tempat - jaring saraf , 5 tempat - lightgbm , meskipun pemenang ini memiliki prediktor yang jauh lebih kompleks) , Saya mengambil posisi ke-4 menggunakan salah satu model klasik tertua tahun 1992 (bahkan ide SVR muncul kemudian) pada prediktor yang cukup sederhana dan jelas, yang sekali lagi menegaskan: itu tidak selalu cukup untuk berjalan pada prediktor yang dihasilkan (pendekatan ini jauh lebih rendah di peringkat akhir, sekitar 20%), akal sehat prediktor, dan transformasi respons, dan pilihan fungsi kerugian dalam model (jika ada) memainkan peran penting di sini.

Secara umum, kompetisi ternyata menarik dan kreatif, dengan kesimpulan yang relevan.

Saya berharap bahwa pada tahap akhir (penuh waktu) kompetisi, tugasnya tidak akan kalah menarik.

All Articles