Cara membagi kereta / tes dalam sistem yang direkomendasikan

8

Saya bekerja dengan dataset MovieLens10M, memprediksi peringkat pengguna. Jika saya ingin mengevaluasi algoritma saya dengan adil, bagaimana saya harus membagi data latihan v. Saya?

Secara default, saya percaya data dipecah menjadi set kereta v. Tes di mana 'tes' berisi film yang sebelumnya tidak terlihat dalam set pelatihan. Jika model saya mengharuskan setiap film untuk dilihat setidaknya satu kali dalam set pelatihan, bagaimana saya harus membagi data saya? Haruskah saya mengambil semua kecuali N dari setiap peringkat pengguna untuk semua data dan mengevaluasi kinerja saya pada peringkat NxUser_num yang bertahan?

jamesmf
sumber

Jawaban:

2

Leave-one-outvalidasi silang mungkin merupakan cara yang paling mudah untuk mengatasi hal ini. Jika Anda kebetulan menggunakan model yang membutuhkan banyak waktu untuk berlatih, maka tinggalkan n% keluar mungkin lebih tepat.

Metode ini melibatkan penghapusan satu peringkat yang diketahui dan mencoba untuk memprediksinya. Jika Anda ingin menghapus n persen dari peringkat, cukup pilih secara acak daripada memilih jumlah tertentu dari setiap peringkat pengguna. Dan tetap n kecil - di urutan 10% atau kurang.

Berikut ini adalah perlakuan yang baik untuk metode validasi silang untuk sistem rekomendasi . Umumnya:

Holdout adalah metode yang membagi dataset menjadi dua bagian: satu set pelatihan dan satu set tes. Set ini dapat memiliki proporsi yang berbeda. Dalam pengaturan sistem rekomendasi, partisi dilakukan dengan secara acak memilih beberapa peringkat dari semua (atau beberapa) pengguna. Peringkat yang dipilih merupakan set tes, sedangkan yang tersisa adalah set pelatihan. Metode ini juga disebut cuti-k-out. Dalam [17], Sarwar et al. pisahkan dataset menjadi 80% pelatihan dan 20% data uji. Dalam [18] beberapa rasio antara pelatihan dan tes (0,2-0,95 dengan peningkatan 0,05) dipilih dan untuk masing-masing percobaan diulang sepuluh kali dengan pelatihan dan set tes yang berbeda dan akhirnya hasilnya dirata-rata. Dalam [13] set tes dibuat oleh 10% pengguna: 5 peringkat untuk setiap pengguna dalam set tes ditahan.

Leave-one-out adalah metode yang diperoleh dengan menetapkan k = 1 pada metode leave-k-out. Diberikan pengguna aktif, kami menahan satu item yang dinilai. Algoritma pembelajaran dilatih pada data yang tersisa. Elemen yang dipotong digunakan untuk mengevaluasi kebenaran prediksi dan hasil dari semua evaluasi dirata-rata untuk menghitung estimasi kualitas akhir. Metode ini memiliki beberapa kelemahan, seperti overfitting dan kompleksitas komputasi yang tinggi. Teknik ini cocok untuk mengevaluasi kualitas rekomendasi model untuk pengguna yang sudah terdaftar sebagai anggota sistem. Karypis et al. [10] mengadopsi versi sepele dari leave-one-out yang membuat set tes dengan memilih secara acak salah satu entri yang tidak nol untuk setiap pengguna dan entri yang tersisa untuk pelatihan. Dalam [7], Breese et al.

Varian sederhana dari metode holdout adalah validasi silang m-fold. Ini terdiri dalam membagi dataset menjadi m lipatan independen (sehingga lipatan tidak tumpang tindih). Pada gilirannya, setiap lipatan digunakan tepat sekali sebagai set uji dan lipatan yang tersisa digunakan untuk melatih model. Menurut [20] dan [11], jumlah lipatan yang disarankan adalah 10. Teknik ini cocok untuk mengevaluasi kemampuan merekomendasikan model ketika pengguna baru (yaitu, pengguna yang belum termasuk dalam model) bergabung dengan sistem. Dengan memilih jumlah lipatan yang masuk akal, kita dapat menghitung rata-rata, varian, dan interval kepercayaan.

Semoga ini membantu!

AN6U5
sumber