Öneride örtük verilerle nasıl başa çıkılmalıdır?


10

Bir öneri sistemi, belirli bir kullanıcıya hangi önerilerin yapıldığının ve kullanıcının öneriyi kabul edip etmediğinin günlüğünü tutar. Gibi

user_id item_id result
1       4       1
1       7       -1
5       19      1
5       80      1

burada 1, kullanıcının öneriyi kabul ettiği, -1 ise kullanıcının öneriye yanıt vermediği anlamına gelir.

Soru: Yukarıda açıklanan günlük türüne göre bir grup kullanıcıya önerilerde bulunacaksam ve MAP @ 3 puanlarını en üst düzeye çıkarmak istiyorsam, örtük verilerle (1 veya -1) nasıl başa çıkmalıyım?

Benim fikrim 1 ve -1'i derecelendirme olarak ele almak ve faktorizasyon makineleri tipi algoritmaları kullanarak derecelendirmeyi tahmin etmektir. Ancak, örtük verilerin asimetrisi göz önüne alındığında, bu doğru görünmemektedir (-1, kullanıcının tavsiyeyi sevmediği anlamına gelmez).

Edit 1 Bir matris çarpanlara ayırma yaklaşımı bağlamında düşünelim. -1 ve 1'i derecelendirme olarak ele alırsak, bazı problemler olacaktır. Örneğin, kullanıcı 1, gizli faktör alanında bir faktörde yüksek puan alan (örn. Görkemli fon müziğine sahip) A filmini sever. Sistem, aynı zamanda "görkemli fon müziği" de yüksek puan alan B filmini önerir, ancak bir nedenden dolayı kullanıcı 1, öneriye bakmak için çok meşgul ve -1 dereceli bir film B var. 1 veya -1'e eşit davranırsak , sistem kullanıcı 1'e muhteşem BGM ile film önermekten vazgeçebilirken, kullanıcı 1 hala muhteşem BGM ile film sever. Bu durumdan kaçınılması gerektiğini düşünüyorum.


-1'in sevmediği anlamına gelmediği bir sorun yok. Bu, birisinin öğeyi gördüğünü ayırt etmenin bir yoludur. Bu anlamda eksik bir değerden daha fazla bilgi taşır. Aslında tavsiyenizin doğruluğunu artırabilir. Tavsiye ettiğiniz mesafe metriğinize bağlı olarak, mesafeyi çok fazla etkilememesi için -1'den hafif bir metrik değerine değiştirmeyi düşünebilirsiniz.
cwharland

1
Örtük geri bildirim için standart belge Hu, Koren ve Volinsky'dir . -1 hoşnutsuzluğunu ya da sadece bir "görmedim" anlamına gelen güveninizi tahmin etmek de dahil olmak üzere birçok iyi tavsiye var.
Trey

Yanıtlar:


6

Sisteminiz sadece önerilen ürünler konusunda eğitilmiyor değil mi? öyleyse burada büyük bir geri bildirim döngünüz var. Umarım tüm tıklama / görünümlerden öğrenmek istersiniz.

Bir öğeye bakmamanın olumsuz bir sinyal olduğunu öneriyorsunuz. Bu şekilde davranmamanızı şiddetle tavsiye ederim. Bir şeyle etkileşime girmemek neredeyse her zaman en iyi şekilde bilgi olarak değerlendirilmez. Aşağı oylama (veya belki bir videonun 10 saniyesini izleyip durdurma) gibi bir hoşlanmama durumunu gösteren açık bir sinyalin varsa, bu geçerli olabilir.

Bu girdiyi derecelendirmeye benzer veriler olarak yorumlamam. (Sizin durumunuzda, bununla birlikte kaçabilirsiniz.) Bunun yerine, bunları ağırlıklar olarak düşünün, ki bu tam olarak @Trey'in bir yorumda bahsettiği ALS hakkındaki Hu Koren Volinsky gazetesinde tedavi. Bu, pozitif / negatif etkileşimlerin göreli gücünü kaydetmenizi sağlar.

Son olarak, bu makalenin aradığınız şey olması muhtemel olsa da, olumsuz ağırlıklar sağlamadığını belirtmek isterim. Bu şekilde genişletmek kolaydır. Eğer bu kadar ileri giderseniz, Spark ve Oryx'te bildiğim iki uygulamada var olan kolay uzantıya işaret edebilirim .


2
Bence defalarca görülen ama hiç seçilmeyen öğeler için hafif negatif değerler ima etmek mantıklı. OP, bu olumsuz empütasyonları niteleyen verilere erişimi olduğunu göstermez, ancak bunu tamamen taklit edemezdim. Negatif değerin optimal büyüklüğü verilerden belirlenebilir. Bunu recsys senaryolarında yapmaktan küçük kazançlar elde ettim. Her halükarda ... bir kez görülen ve seçilmeyen ve N kez görülen ve negatif çarpma dışında asla seçilmeyen öğeler arasında ayrım yapmanın başka yollarını önerir misiniz?
cwharland
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.