SVD'yi ortak bir filtreleme sorununa uyguladığınızda ne olur? İkisi arasındaki fark nedir?


21

İşbirlikçi filtrelemede, doldurulmamış değerlere sahibiz. Bir kullanıcının bir film izlemediğini varsayalım ve oraya bir 'na' koymamız gerektiğini varsayalım.

Eğer bu matrisin SVD'sini alacaksam, o zaman bir sayı koymalıyım - 0 diyelim. Şimdi matrisi çarparsam, benzer kullanıcıları bulmak için bir yöntemim var (hangi kullanıcıların birbirine daha yakın olduğunu bularak) küçültülmüş boyutsal alan). Ancak, öngörülen tercihin kendisi - bir kullanıcının bir öğeye sıfır olması. (çünkü bilinmeyen sütunlara girdiğimiz şey budur).

Bu yüzden, SVD'ye karşı işbirlikçi filtreleme sorunuyla sıkıştım. Neredeyse aynı gözüküyorlar ama tam değil.

Aralarındaki fark nedir ve ortak bir filtreleme sorununa SVD uyguladığımda ne olur? Yaptım ve sonuçlar yakındaki kullanıcıları bulmak açısından kabul edilebilir görünüyor, hangisi harika, ama nasıl?

Yanıtlar:


25

Tamam, SVD derken, muhtemelen bahsettiğin kesildi (yalnızca tuttuğum yer SVD büyük tekil değerler). Bir matrisin kesilmiş SVD'sine bakmanın iki farklı yolu vardır. Bunlardan biri standart tanım:k

Öncelikle : , burada ve , dönme matrisleridir ve , köşegen boyunca tekil değerlere sahiptir. Sonra en üst tekil değerleri seçin, gerisini sıfırlayın ve orijinaline değeri yaklaştırması için alakasız satırları ve sütunları çıkarın: UVΣkkX ˜ X = ˜ U n × k k × k ˜ Σ ˜ V T k × mXnxm=UnxnΣnxmVTmxmUVΣkkXX~=U~nxkΣ~kxkV~Tkxm

Bunların hepsi güzel ve zordur (ve R veya matlab'da uygulanması kolaydır), ancak eksik değerlere sahip matrislerden bahsetmek mantıklı gelmez. Bununla birlikte, kesilmiş SVD'nin ilginç bir özelliği var - Orijinaline en iyi krank yaklaşımı! Yani:kkk

X~=birrgmbennB:rbirnk(B)=kΣben,j(Xbenj-Bbenj)2

Bu özellik, eksik değer durumlarına genelleme yapmak kolay gibi görünüyor. Temel olarak bir aradığınız genelinde -rank matris o en aza indirir öğeye göre ortalama kare hatası bilinen orijinal matrisin girdileri. Yani, sistemi eğitirken, tüm eksik değerleri görmezden gelirsiniz . (Aslında bulma konusunda gidebilir ipuçları için bir -rank yaklaşım, burada olan bazı yerlerde görünümüne).kk

Sonra, orijinaline uygun bir "yakın" -rank yaklaşımı bulduğunuzda, eksik değerleri doldurmak için kullanırsınız. Yani, eğer eksikse, o zaman . Tada! Şimdi bitti.kXbenjX~benj


3

Eksik değerlerle nasıl başa çıkılacağı konusunda pek çok yaklaşım var gibi görünüyor. Bölüm 1.3'te gözden geçirilen aşağıdaki makale iyi bir başlangıç ​​noktası olabilir.


0

Stumpy Joe Pete'in cevabı hakkında yorum yapmak için daha fazla itibara ihtiyacım var;

Stumpy cevap için teşekkür ederim, biraz açıklama gerektirse de. Özellikle şu cümleyi kastediyorum:

Temel olarak, orijinal matrisin bilinen girişleri boyunca eleman-bilgili ortalama kare hatasını en aza indiren bir k aşamalı matris arıyorsunuz.

İlk - en yüksek rütbe bunu her zaman en aza indirmez mi, yoksa orijinal X matrisini yeniden yapılandırmaz mı? İkincisi - Neden sadece bilinen girişleri aldın ? Sezgisel olarak mantıklı ama prosedür aslında bazı makul sayılarla değiştirilen boş yerlere de uyuyor .

Benim yaklaşımım çapraz onaylama gibi bir şey yapmak olacaktır:

  1. Boş yerlere 0 veya araç ya da başka bir makul numara ile doldurun.
  2. Bilinen n elementlerden birini 0 veya makul bir sayıyla değiştirin.
  3. SVD rütbesi rütbesini gerçekleştirme
  4. Bilinen yeniden yapılandırılmış elemanın değerini kontrol edin .
  5. Bilinen tüm elementler için tekrar et ve MSE'yi hesapla
  6. tüm olası k için tekrarlayın ve en düşük MSE olanı seçin.

1. Fazla uydurmamak için düşük bir k seçmek istiyorsunuz (X'in boyutları ne olursa olsun). Bu temelde, doğrusal regresyonun 6 noktadan oluşan bir veri setini yerleştirmek için quintic'ten daha iyi bir seçim olması nedeniyle aynıdır. 2. Bilinmeyen girişlerin ne olması gerektiğini bilmiyorsunuz , bu nedenle bunların arasında "element-bilge MSE" yi ölçemezsiniz. Prosedürüm, eksik değerleri bilinen değerlere karşı hatayı minimize ederek (ve matrisin düşük dereceli olması gerektiğini sınırlayarak) türetilen sayıları dolduruyor.
Stumpy Joe Pete
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.