Pendahuluan

Iklan bergambar online adalah bisnis bernilai miliaran dolar saat ini, dengan pendapatan tahunan sebesar 31,7 miliar dolar AS pada tahun fiskal 2016, naik 29% dari tahun fiskal 2015. Salah satu masalah inti yang ingin dipecahkan oleh iklan bergambar adalah menayangkan iklan yang tepat kepada konsumen. orang yang tepat, dalam konteks yang tepat, pada waktu yang tepat. Memprediksi rasio klik-tayang (RKPT) secara akurat sangat penting untuk memecahkan masalah ini dan hal ini telah menarik banyak perhatian penelitian dalam beberapa tahun terakhir.

Data yang terlibat dalam prediksi RKT biasanya merupakan data kategorikal multibidang yang juga terdapat di mana-mana di banyak aplikasi selain iklan bergambar, seperti sistem pemberi rekomendasi. Data tersebut memiliki sifat-sifat berikut. Pertama, semua fitur bersifat kategoris dan sangat jarang karena banyak di antaranya merupakan pengidentifikasi. Oleh karena itu, jumlah total fitur dapat dengan mudah mencapai jutaan. Kedua, setiap fitur dimiliki oleh satu dan hanya satu bidang dan bisa ada puluhan hingga puluhan hingga ratusan bidang.

Karakteristik data kategorikal multibidang menunjukkan beberapa tantangan unik:

1- Interaksi fitur merupakan hal yang lazim dan perlu dimodelkan secara khusus.

2- Fitur dari satu bidang sering kali berinteraksi secara berbeda dengan fitur dari bidang lain yang berbeda.

3- Kompleksitas model yang berpotensi tinggi perlu diatasi.

Berdasarkan masalah yang disebutkan di atas, model klasifikasi yang biasanya tidak akan beroperasi dengan cukup baik pada jenis data ini. pada artikel ini, pertama-tama, kami akan menjelaskan karakteristik kumpulan data kami, kedua, kami akan menerapkan beberapa algoritma klasifikasi terkenal seperti regresi logistik, SVM, hutan acak, dan sebagainya.

Himpunan data

Kumpulan data yang akan kami kerjakan dipersembahkan untuk Anda berkat Yektanet (platform periklanan digital Iran). bagian kumpulan data yang diberi label 'pelatihan' terdiri dari lebih dari 4 juta data.

Kumpulan data ini terdiri dari 14 fitur + 1 target, yaitu 'Diklik'. Setiap kali pengguna dengan 'Id Pengguna' unik mengunjungi halaman web dengan 'Id Dokumen'akan ada tampilan halaman. Untuk setiap tampilan laman, 'Id Tampilan'yang unik akan dihasilkan. Pada setiap tampilan halaman, beberapa iklan akan ditampilkan kepada pengguna secara bersamaan. 'Stempel Waktu'menunjukkan waktu terjadinya peristiwa. Sesuai dengan judulnya, 'Hour Of Day' dan 'Day Of Week'menunjukkan waktu terjadinya suatu peristiwa. Setiap konten iklan ditampilkan oleh 'Id Materi Iklan',dan setiap konten ini termasuk dalam kampanye iklan yang ditampilkan oleh 'Id Kampanye', setiap kampanye termasuk dalam kepada pengiklan yang ditampilkan oleh 'Id Pengiklan'. Setiap pengguna menggunakan 'Perangkat' tertentu untuk mengunjungi laman web. Kita dapat dengan mudah mengenali bahwa kolom 'OS' menunjukkan sistem operasi yang digunakan oleh pengguna. Kolom 'Browser' menampilkan browser apa yang digunakan pengguna untuk mengunjungi halaman web. Setiap iklan ditampilkan pada bagian tertentu dari halaman web yang disebut widget, 'Id Widget'menunjukkan bagian halaman web mana yang dialokasikan untuk iklan tersebut. Setiap laman web memiliki 'Penerbit'dan 'Sumber'.

Anda Juga dapat Menggunakan semua pekerjaan yang kami lakukan di sini dengan kumpulan data prediksi RKT terkenal gratis lainnya. karena Hak Cipta, kami tidak dapat mempublikasikan konten data kami.

Pembersihan data

Pertama-tama, kita akan melihat 10 sampel data untuk mengetahui apa yang sedang kita tangani:

kemudian, Anda perlu mengulangi semua fitur dan menemukan nilai NaN atau Null:

count_missing = df_train.isnull().sum()
missing_value_df = pd.DataFrame({ ‘Count Missing’ : count_missing})
missing_value_df

cuplikan di atas akan menunjukkan kepada kita bahwa tidak banyak masalah pembersihan dengan kumpulan data kita:

Seperti yang Anda lihat, tidak banyak lagi yang perlu dibahas di sini, jadi kami hanya akan mencetak korelasi antar fitur. Kami ingin menghapus beberapa data dan kolom yang berlebihan. ini akan memberi kita beberapa wawasan tentang apa yang akan kita lakukan.

cor = df_train.corr()
plt.figure(figsize=(15,15))
sns.heatmap(cor, annot=True, cmap=plt.cm.Reds)
plt.show()

output dari cuplikan di atas akan menjadi seperti ini:

Seperti yang Anda lihat, beberapa fitur kami sangat berkorelasi sehingga kami dapat menghilangkan satu dari setiap pasangan.

Misalnya, kita melihat bahwa ('cap waktu', 'tampilan'), ('sumber', 'penerbit'), ('os', perangkat')' merupakan pasangan terpelintir di sini dan kami akan menghapus salah satu dari setiap fitur. tetapi seperti yang saya jelaskan di atas dan kita dapat melihat dalam deskripsi kumpulan data 'stempel waktu' dan 'displayId' adalah unik dalam kumpulan data dan kita dapat menafsirkan karakteristik ini sebagai indeks dan menghapus keduanya.

drop_columns = ['timestamp', 'publisher','os', 'displayId']
df_train = df_train.drop(columns=drop_columns, axis=1)

Apa yang telah kami lakukan sejauh ini hanyalah kriteria pembersihan normal dan jelas di setiap kumpulan data, tetapi dalam jenis data ini, kami perlu melakukan beberapa trik ajaib untuk meningkatkan interaksi fitur dan membuang data tidak berguna seperti 'userId' yang hanya kami lihat beberapa kali. di seluruh kumpulan data, atau 'docId' atau fitur lainnya dengan perilaku serupa.

Jatuhkan kolom yang tidak berguna

Pertama, kita akan menggambar beberapa diagram berguna tentang PDF dan CDF dari setiap fitur dan kemudian berdasarkan plot tersebut kita akan memilih ambang batas untuk setiap fitur dan membuang baris yang tidak berguna.

Misalnya keluaran dari kedua fungsi ini pada 'userId' akan seperti ini:

Berdasarkan apa yang kami lihat, kami memilih ambang batas untuk setiap fitur dan menghapus baris yang tidak berlaku untuk kondisi ini. Kemudian kami akan menggabungkan baris yang dipilih dan menghapus duplikat.

dengan pekerjaan ini sisa data akan memastikan kita bahwa setiap data setidaknya memiliki satu fitur bagus di dalamnya.

Kumpulan Data Ketidakseimbangan

Seperti yang mungkin Anda ketahui dalam kumpulan data jenis Prediksi Rasio Klik-Tayang, kami akan selalu kesulitan dengan format yang tidak seimbang. Saya tidak akan membahas apa itu dataset tidak seimbang, Anda dapat membaca tentang ini "di sini" dan "di sini" juga.

Untuk permasalahan ini, kita akan menggunakan pendekatan pengambilan sampel ke bawah (under-sampling).

bentuk kelas negatif sebelum downsampling: (2926235, 16)

bentuk kelas negatif setelah downsampling: (842181, 16)

Pengkodean satu-panas

Seperti yang Anda ketahui, semua fitur kami dalam jenis data ini bersifat kategoris, dalam kondisi ini Anda harus melakukan enkode fitur Anda secara langsung.

Masalah serius dalam kondisi ini adalah Anda harus mengelola rangkaian pelatihan dan pengujian agar memiliki fitur yang identik (untuk informasi lebih lanjut, Anda dapat membaca artikel singkat ini)

Regresi Logistik

Setelah semua pekerjaan yang telah kita lakukan sekarang kita akan mengimplementasikan metode klasifikasi kita.

Anda dapat melihat implementasi Regresi Logistik pada cuplikan di bawah ini:

SVM

SVM memiliki banyak dropback di area khusus ini, misalnya, Anda tidak dapat berlatih di SVM dengan lebih dari 20 ribu data dalam waktu yang memungkinkan, dan SVM juga berfungsi buruk pada data yang jarang.

Hutan Acak

Dropback RandomForest pada area khusus ini adalah tentang penggunaan matriks renggang dengan banyak fitur sehingga kami hanya dapat menggunakan sedikit kedalaman pada pepohonan dan ini menunjukkan bahwa kami mungkin tidak dapat memiliki akurasi yang baik.

Bagian validasi silang:

Evaluasi kereta:

evaluasi ujian:

XGBoost

XGBoost jauh lebih cepat dari metode sebelumnya dan hasil yang diperoleh juga dapat diterima. (tapi tidak cukup baik)

Evaluasi kereta:

Evaluasi ujian:

Kesimpulan

Seperti yang mungkin Anda perhatikan, semua metode yang dijelaskan tidak bekerja dengan baik pada kumpulan data ini, ada masalah besar dengan matriks renggang raksasa dalam metode ini, pada artikel berikutnya, kami akan memperkenalkan dua metode baru bernama, Model Faktorisasi dan Faktorisasi Bobot Lapangan Model yang berfungsi sempurna pada kumpulan data yang jarang.

Anda dapat melihat semua kode yang dijelaskan dan metode lain seperti FM, FWFM di tautan ini