Tavsiye Sistemleri — Makine Öğrenimi Modelleri İçin Eksiksiz Bir Kılavuz

Nov 25 2022
Kullanıcıların yeni içerik keşfetmelerine yardımcı olmak için verilerden yararlanma Öneri Sistemleri: Neden ve Nasıl? Öneri sistemleri, her kullanıcı için en alakalı öğeler için kişiselleştirilmiş öneriler sağlayan algoritmalardır. Mevcut çevrimiçi içeriklerin muazzam büyümesiyle, kullanıcılar seçeneklerle dolup taştı.

Kullanıcıların yeni içerik keşfetmesine yardımcı olmak için verilerden yararlanma

Unsplash'ta Javier Allegue Barros'un fotoğrafı

Tavsiye Sistemleri: Neden ve Nasıl?

Öneri sistemleri , her kullanıcı için en alakalı öğeler için kişiselleştirilmiş öneriler sağlayan algoritmalardır. Mevcut çevrimiçi içeriklerin muazzam büyümesiyle, kullanıcılar seçeneklerle dolup taştı. Bu nedenle, kullanıcı memnuniyetini ve katılımını artırmak için web platformlarının her kullanıcıya öğe önerileri sunması çok önemlidir.

YouTube, çok sayıda mevcut içeriğin ortasında kendileriyle alakalı içeriği keşfetmelerine ve izlemelerine yardımcı olmak için kullanıcılara videolar önerir. (Yazara Göre Resim)

Aşağıdaki liste, kullanıcıların ilgisini çekmek için etkili tavsiye sistemlerine ihtiyaç duyan, çok sayıda mevcut içeriğe sahip iyi bilinen web platformlarının örneklerini göstermektedir.

  1. . _ İnsanlar her dakika 500 saatlik video yüklüyor , yani bir kullanıcının son bir saat içinde yüklenen tüm videoları izlemesi 82 ​​yıl sürer.
  2. . _ Kullanıcılar 80 milyondan fazla şarkı parçasını ve podcast'i dinleyebilir .
  3. amazon _ Kullanıcılar 350 milyondan fazla farklı ürünü satın alabilirler .

Açık Geri Bildirim ve Örtülü Geri Bildirim

Tavsiye sistemlerinde, makine öğrenimi modelleri, bir u kullanıcısının i öğesi üzerindeki derecelendirmesini ( rᵤᵢ ) tahmin etmek için kullanılır . Çıkarım zamanında, her kullanıcıya tahmin edilen en yüksek derecelendirmeye rᵤ sahip öğeleri öneriyoruz .

Bu nedenle, modellerimizi eğitmek ve değerlendirmek için temel bir gerçeğe sahip olabilmemiz için kullanıcı geri bildirimlerini toplamamız gerekiyor. Burada açık geri bildirim ile örtük geri bildirim arasında önemli bir ayrım yapılmalıdır .

Tavsiye sistemleri için açık ve örtük geri bildirim. (Yazara Göre Resim)

Açık geri bildirim , kullanıcı tarafından bir öğeyle ilgili memnuniyetlerini ifade etmek için açıkça verilen bir derecelendirmedir. Örnekler: bir ürünü satın aldıktan sonra verilen 1'den 5'e kadarbir ölçekte verilen yıldız sayısı, bir videoyu izledikten sonra verilen başparmak yukarı/aşağı vb . çoğu kullanıcı genellikle satın aldıkları her ürün için inceleme yazmaz veya açık bir derecelendirme vermez.

Öte yandan örtük geri bildirim , kullanıcı-öğe etkileşimlerinin tercihlerin bir göstergesi olduğunu varsayar. Örnekler şunlardır: bir kullanıcının satın alma/tarama geçmişi ,kullanıcının çaldığı şarkıların listesi vb. başkası). Bununla birlikte, bu türden mevcut verilerin büyük boyutuyla karşılaştırıldığında bu gürültü ihmal edilebilir hale gelir ve çoğu modern Tavsiye Sistemi örtülü geri bildirime güvenme eğilimindedir .

Açık geri bildirim ve örtük geri bildirim veri kümeleri için kullanıcı öğesi derecelendirme matrisi. (Yazara Göre Resim)

Açık veya örtülü geri bildirimleri topladıktan sonra, kullanıcı-öğe derecelendirme matrisini rᵤᵢ oluşturabiliriz . Açık geri bildirim için, rᵤᵢ'daki her giriş sayısal bir değerdir; örneğin rᵤᵢ = " u tarafından i filmine verilen yıldızlar " veya "?" u kullanıcısı i öğesini derecelendirmediyse . Örtük geri bildirim için rᵤᵢ'daki değerler, etkileşimin varlığını veya yokluğunu temsil eden bir boolean değeridir; örneğin, rᵤᵢ = "kullanıcı i filmini izledi mi?". rᵤᵢ matrisinin olduğuna dikkat edinkullanıcılar mevcut tüm içerikler arasında çok az öğeyle etkileşime girdiğinden ve daha da az öğeyi incelediklerinden çok seyrektir!

İçerik Tabanlı ve İşbirlikçi Filtreleme Yaklaşımları

Tavsiye sistemi, kullanıcı tercihlerini tahmin etmek için kullanılan bilgi türüne göre İçerik Tabanlı veya İşbirlikçi Filtreleme olarak sınıflandırılabilir.

Tavsiye sistemleri için İçerik Tabanlı ve İşbirlikçi Filtreleme yaklaşımları. (Yazara göre resim)

İçerik Temelli Yaklaşım

İçerik tabanlı yöntemler , kullanıcıları ve öğeleri bilinen meta verilerine göre tanımlar . Her i öğesi , bir dizi ilgili etiketle temsil edilir; örneğin, IMDb platformunun filmleri" aksiyon ", "komedi" vb. örneğin cinsiyet ve yaş veya kullanıcının geçmiş etkinliği.

Bu yaklaşımla bir Makine Öğrenimi modeli eğitmek için bir k-NN modeli kullanabiliriz . Örneğin, kullanıcının bir i ürünü satın aldığını biliyorsak, size i ürününe en çok benzeyen özelliklere sahip mevcut ürünleri önerebiliriz .

Bu yaklaşımın avantajı , ürün meta verilerinin önceden bilinmesidir, dolayısıyla bunu , platforma yeni bir öğe veya kullanıcının eklendiği ve modelimizi eğitmek için kullanıcı-öğe etkileşimlerinin olmadığı Soğuk Başlatma senaryolarına da uygulayabiliriz. . Dezavantajları , bilinen kullanıcı-öğe etkileşimlerinin tamamını kullanmamamız (her kullanıcı bağımsız olarak ele alınır) ve her öğe ve kullanıcı için meta veri bilgilerini bilmemiz gerekmesidir.

İşbirlikçi Filtreleme Yaklaşımı

İşbirlikçi filtreleme yöntemleri , öğe veya kullanıcı meta verilerini kullanmaz, bunun yerine,kullanıcılar ve gözlemlenen etkinliklerden öğeler arasındaki karşılıklı bağımlılıkları çıkarsayarak belirli bir öğedeki bir kullanıcının derecelendirmesini tahmin etmek için tüm kullanıcıların geri bildirimlerinden veya etkinlik geçmişinden yararlanmaya çalışır.

Bu yaklaşımla bir Makine Öğrenimi modelini eğitmek için , gözlemlenmeyen çiftler ( u,i ) hakkında tahminler yapmak için rᵤᵢ derecelendirme matrisini kümelemeye veya çarpanlara ayırmaya çalışırız , yani burada rᵤᵢ = “?”. Bu makalenin devamında , bu sınıfın en popüler yöntemi olan Matrix Factorization algoritmasını sunuyoruz.

Bu yaklaşımın avantajı , tipik olarak İçerik Tabanlı modelleri kullanmaktan daha yüksek doğruluk elde etmeyi sağlayan tüm kullanıcı-öğe etkileşimleri setinin (yani rᵤᵢ matrisi) kullanılmasıdır. Bu yaklaşımın dezavantajı , modelin yerleştirilebilmesi için birkaç kullanıcı etkileşiminin gerekmesidir.

Hibrit Yaklaşımlar

Son olarak, hem bilinen meta verileri hem de gözlenen kullanıcı-öğe etkileşimleri kümesini kullanmaya çalışan hibrit yöntemler de vardır. Bu yaklaşım , hem İçerik Tabanlı hem de İşbirlikçi Filtreleme yöntemlerinin avantajlarını birleştirir ve en iyi sonuçların alınmasını sağlar. Bu makalenin ilerleyen kısımlarında , bu yöntem sınıfının en popüler algoritması olan LightFM'i sunuyoruz.

İşbirlikçi Filtreleme: Matris Çarpanlara Ayırma

Matris çarpanlara ayırma algoritmaları , muhtemelen tavsiye sistemleri için en popüler ve etkili işbirlikçi filtreleme yöntemleridir. Matris çarpanlara ayırma,her kullanıcı u ve i öğesi için pᵤ, qᵢ R ᶠ st rᵤᵢ'nin pᵤ ve qᵢ cinsinden benzersiz bir şekilde ifade edilebileceğini - yani "faktörlere ayrılabileceğini" - gizli vektör temsillerinin olduğunu varsayan bir gizli faktör modelidir . Python kütüphanesi Sürpriz , bu yöntemlerin mükemmel uygulamalarını sağlar.

Açık Geri Bildirim için Matris Faktoringi

En basit fikir, kullanıcı-öğe etkileşimlerini doğrusal bir model aracılığıyla modellemektir . pᵤ ve qᵢ değerlerini öğrenmek için, rᵤᵢ'nin bilindiği çiftlerin K kümesi ( u , i ) üzerinden düzenli bir MSE kaybını en aza indirebiliriz . Bu şekilde elde edilen algoritmaya olasılıksal matris çarpanlarına ayırma (PMF) denir .

Olasılık matrisi çarpanlara ayırma: rᵤᵢ ve kayıp fonksiyonu için model.

Kayıp fonksiyonu iki farklı şekilde minimize edilebilir. İlk yaklaşım, stokastik gradyan inişini (SGD) kullanmaktır . SGD'nin uygulanması kolaydır, ancak hem pᵤ hem de qᵢ bilinmediği ve bu nedenle kayıp fonksiyonu dışbükey olmadığı için bazı sorunları olabilir. Bu sorunu çözmek için alternatif olarak pᵤ ve qᵢ değerini sabitleyebilir ve sıradan en küçük kareler (OLS) ile kolayca çözülebilen bir dışbükey doğrusal regresyon problemi elde edebiliriz . Bu ikinci yöntem, alternatif en küçük kareler (ALS) olarak bilinir ve önemli ölçüde paralelleştirme ve hızlandırma sağlar.

PMF algoritması daha sonra , modele yanlılık terimleri ekleyen tekil değer ayrıştırma (SVD) algoritması tarafından genelleştirildi. Daha spesifik olarak, bᵤ ve bᵢ , sırasıyla u kullanıcısı ve i öğesinin gözlenen derecelendirme sapmalarını ölçerken, μ genel ortalama derecelendirmedir. Bazı öğeler geniş çapta daha iyi/kötü puanlar aldığından ve bazı kullanıcılar puanları konusunda sürekli olarak daha fazla/daha az cömert davrandığından, bu terimler genellikle gözlemlenen derecelendirmelerin çoğunu açıklar .

SVD algoritması, olasılıksal matris çarpanlarına ayırmanın bir genellemesi.

Örtük Geri Bildirim için Matris Çarpanlarına Ayırma

SVD yöntemi , örtük geri bildirim veri kümelerine uyarlanabilir . Fikir, dolaylı bir güven ölçüsü olarak örtük geri bildirime bakmaktır . Örtük geribildirim tᵤᵢ'nin u kullanıcısının izlediği i filminin yüzdesini ölçtüğünü varsayalım — örneğin tᵤᵢ = 0, u'nun i'yi hiç izlemediği anlamına gelir , tᵤᵢ = 0,1, filmin yalnızca %10'unu izlediği anlamına gelir, tᵤᵢ = 2, izlediği anlamına gelir iki kez. Sezgisel olarak, bir kullanıcının hiç izlemediği bir filmdense iki kez izlediği bir filmle ilgilenme olasılığı daha yüksektir. Bu nedenle bir tanımlıyoruz aşağıdaki gibi güven matrisi cᵤᵢ ve bir derecelendirme matrisi rᵤᵢ .

Örtük geri bildirim için güven matrisi ve derecelendirme matrisi.

Ardından, gözlemlenen rᵤᵢ'yi SVD için kullanılan aynı doğrusal modeli kullanarak, ancak biraz farklı bir kayıp fonksiyonuyla modelleyebiliriz. İlk olarak, tüm ( u , i ) çiftleri üzerindeki kaybı hesaplıyoruz — açık durumun aksine, u kullanıcısı i ile hiç etkileşimde bulunmadıysa, rᵤᵢ = "?" yerine rᵤᵢ = 0 olur. . İkinci olarak, her bir kayıp terimini, i'yi sevdiğiniz güven cᵤᵢ ile ağırlıklandırıyoruz .

Örtük geri bildirim için SVD için kayıp işlevi.

Son olarak, hem açık hem de örtük geri bildirimlere erişimimiz olduğunda SVD++ algoritması kullanılabilir. Bu çok yararlı olabilir, çünkü genellikle kullanıcılar birçok öğeyle etkileşime girer (= örtük geribildirim) ancak bunların yalnızca küçük bir alt kümesini derecelendirir (= açık geri bildirim). Her u kullanıcısı için, u'nun etkileşimde bulunduğu N(u) öğe kümesini gösterelim . Daha sonra, bir j öğesiyle örtülü bir etkileşimin yeni bir gizli vektör zⱼR ile ilişkili olduğunu varsayıyoruz . SVD++ algoritması, kullanıcı temsiline bu gizli faktörlerin zⱼ ağırlıklı bir toplamını dahil ederek SVD'nin doğrusal modelini değiştirir.

Karma (açık + örtülü) geri bildirim için SVD++

Hibrit Yaklaşım: LightFM

Matris çarpanlarına ayırmaya dayalı işbirlikçi filtreleme yöntemleri genellikle mükemmel sonuçlar verir, ancak yeni öğeler ve kullanıcılar için etkileşim verilerinin çok az olduğu veya hiç bulunmadığı soğuk başlangıç ​​senaryolarında , gizli faktörleri tahmin edecek verilerden yoksun oldukları için iyi tahminler yapamazlar. Hibrit yaklaşımlar , matris çarpanlara ayırma modelini geliştirmek için bilinen öğe veya kullanıcı meta verilerinden yararlanarak bu sorunu çözer. Python kitaplığı LightFM , en popüler hibrit algoritmalardan birini uygular.

LightFM'de, her u kullanıcı için bir dizi etiket ek açıklaması Aᵁ(u) - örneğin "erkek" , "yaş < 30" , … - topladığımızı ve benzer şekilde her i öğesinin bir Aᴵ(i) ek açıklaması kümesine sahip olduğunu varsayıyoruz. — örneğin “price > 100 $” , “book” , … Sonra her bir kullanıcı etiketini gizli bir xᵁₐR ᶠ faktörü ve bir önyargı terimi bᵁₐR ile modelliyoruz ve kullanıcı vektör temsili pᵤ ve bununla ilişkili sapmayı varsayıyoruz bᵤ basitçe bu terimlerin toplamı olarak ifade edilebilir xᵁₐ ve sırasıyla bᵁₐ . Öğe etiketlerine xᴵₐ ∈ Rᶠ gizli faktörleri ve bᴵₐ ∈ R önyargı terimlerini kullanarak aynı yaklaşımı uyguluyoruz. Bu formülleri kullanarak pᵤ, qᵢ, bᵤ, bᵢ'yi tanımladıktan sonra, ilişkiyi açıklamak için aynı doğrusal SVD modelini kullanabiliriz. bu terimler ve rᵤᵢ arasında .

LightFM: kullanıcı/öğe yerleşimleri ve eğilimler, her bir kullanıcı/öğeyle ilişkili gizli vektörlerin toplamıdır.

LightFM'in bu hibrit yaklaşımının üç ilginç örneği olduğuna dikkat edin.

  1. Soğuk başlangıç. Aᴵ(i) olarak bilinen etiketlere sahip yeni bir i öğemiz varsa , o zaman gizli vektörlerini xᴵₐ (önceki verilere modelimizi uydurarak elde edilen) kullanarak katıştırılmasını qᵢ hesaplayabilir ve bu nedenle herhangi bir kullanıcı için derecelendirmesini rᵤᵢ tahmin edebiliriz . .
  2. Kullanılabilir etiket yok. Öğeler veya kullanıcılar için bilinen herhangi bir meta verimiz yoksa, kullanabileceğimiz tek açıklama bir gösterge işlevidir, yani her kullanıcı ve her öğe için farklı bir açıklama a . Ardından, kullanıcı ve öğe özelliği matrisleri kimlik matrisleridir ve LightFM, SVD gibi klasik bir işbirlikçi filtreleme yöntemine indirgenir.
  3. İçerik tabanlı ve Hibrit. Gösterge ek açıklamaları olmadan yalnızca kullanıcı veya öğe etiketleri kullansaydık, LightFM neredeyse içerik tabanlı bir model olurdu. Bu nedenle pratikte, kullanıcı-öğe etkileşimlerinden yararlanmak için, bilinen etiketlere her kullanıcı ve öğeden farklı bir gösterge notu da ekleriz .
  • Öneri sistemleri , ilgili içerikleri keşfetme konusunda seçeneklerle dolup taşan kullanıcılara yardımcı olmak için makine öğrenimi algoritmalarından yararlanır.
  • Açık ve örtük geri bildirim : ilkinden yararlanmak daha kolaydır, ancak ikincisi çok daha fazladır.
  • İçerik tabanlı modeller, soğuk başlatma senaryolarında iyi çalışır, ancak kullanıcı ve öğe meta verilerini bilmeyi gerektirir .
  • İşbirlikçi filtreleme modelleri tipik olarak matris çarpanlarına ayırmayı kullanır: PMF, SVD, örtük geri bildirim için SVD, SVD++.
  • Hibrit modeller , içerik tabanlı ve işbirliğine dayalı filtrelemeden en iyi şekilde yararlanır. LightFM bu yaklaşımın harika bir örneğidir.
  • Vikipedi, Öneri Sistemi .
  • "Sürpriz", Python paketi belgeleri .
  • (S. Funk 2006), Netflix Güncellemesi: Bunu Evde Deneyin.
  • (R. Salakhutdinov 2007), Olasılıksal matris çarpanlarına ayırma.
  • ( Y. Hu 2008), Örtük Geri Bildirim Veri Kümeleri için İşbirlikçi Filtreleme .
  • (Y. Koren 2009), Tavsiye Sistemleri için Matris Çarpanlara Ayırma Teknikleri .
  • (Y. Koren 2008) Çarpanlara ayırma komşulukla buluşuyor: çok yönlü işbirlikçi bir filtreleme modeli.
  • ( M. Kula 2015), Kullanıcı ve Öğe İçin Meta Veri Gömmeleri Soğuk Başlangıç ​​Önerileri .