İlk olarak en kritik soruyu cevaplayalım: Öneri sistemi nedir?
Aşağıdaki üç açıdan cevap:
Birincisi, öneri sistemi ne yapabilir?
Öneri sistemi, sonunda kullanıcı (Kullanıcı) ile öğe (Öğe) arasında oluşturulacak bağlantıları bağlayabilir. önceden Bulmak.
Buradaki anahtar ilerleme kelimesidir Tavsiye sistemi, insanlar ve nesneler arasındaki bağlantıyı büyük bir ağdan önceden keşfetmeli ve bu bağlantının mümkün olduğu kadar erken kurulmasına yardımcı olmalıdır.
İkinci soru, neye ihtiyacı olduğu?
İnsanlar ve nesneler arasındaki bağlantıları keşfetmenin ön koşulu, halihazırda yeterli bağlantı olması ve ardından öneri sisteminin gelecekteki bağlantıları tahmin edebilmesidir.
Üçüncü soru, nasıl yapılır?
Pek çok yol var. Bu seride temel olarak makine öğrenimi anlatılıyor.
Artık öneri sisteminin ne olduğunu bildiğimize göre, bir sonraki soruya bakalım: Bir öneri sistemine ne zaman ihtiyacımız var?
Önceki üç husus, bir öneri sisteminin ne olduğunu ortaya koydu: Bağlantıları tahmin etmemiz gerekiyorsa ve zaten yeterli bağlantı varsa, o zaman öneri sistemi şu anda bir zorunluluktur.
Nicelleştirilmesi kolay olmayan noktalardan biri şudur: Yeterli bağlantı olup olmadığı nasıl tanımlanır? Her şeyden önce, insanlar ve nesneler arasındaki bağı hangi faktörlerin etkilediğini bilmeliyiz?
1. Birincisi doğal olarak öğe sayısıdır.Üründe manuel olarak ele alınabilecek çok az öğe varsa, kesinlikle kullanıcı tarafından üretilen çok fazla bağlantı yoktur, çünkü bağlantı sayısındaki darboğaz, inşaat için uygun olmayan öğe sayısıdır. Önerilen sistem.
2. İkincisi, kullanıcı ve öğe sayısının da belirli yollarla çok artmasıdır, ancak kullanıcılar ve öğeler arasındaki bağlantı çok azdır.Performans, kullanıcıların tutma ve geri dönüş ziyaretlerinin çok düşük olmasıdır.Şu anda bir öneri sistemine ihtiyaç yoktur. İlk bağlantı grubuna katkıda bulunana kadar, kullanıcıların kaybının nedenini bulmanın bir yolunu bulmalısınız.
Bir öneri sistemine ihtiyaç olup olmadığını belirlemek için basit bir formülümüz var:
Pay, eklenen bağlantıların sayısıdır ve payda, eklenen etkin kullanıcıların sayısı ve eklenen etkili öğelerin sayısıdır.
Şimdi en basit öneri sistemini tanıtmaya başlıyoruz: popülerliğe dayalı bir öneri modeli.
Popülerlik modeli
Öneri sistemindeki en temel öneri modeli: Popülerliğe dayalı öneri modeli Layman'ın terimleriyle, hangi içeriğin kullanıcıları çekeceği kullanıcılara tavsiye edilir.
Buradaki içeriği ölçmek için bir standart Popülerlik Ve öğelerin popülerliğini etkileyen iki faktör vardır:
Bu nedenle kullanamayız Mutlak değer, ancak bir "oran" (Oran) kullanmalı veya belirli bir "olasılık" (Olasılık) hesaplamalıdır.
Uygulanabilir bir yol, tıklama oranını hesaplamaktır. Tıklama oranını matematiksel olarak modelliyorsanız, aslında bir öğenin "" olarak görüntülendikten sonra tıklanıp tıklanmadığını düşünebilirsiniz. Bernoulli Rastgele Değişken ", ardından tıklama oranının tahmini, bir Bernoulli dağılımının parametrelerini tahmin etme sürecine dönüşür.
Bernoulli parametre tahmini için maksimum olasılık tahminini kullanabiliriz. Bir tıklamanın olasılığının p olduğunu varsayarsak, aralarında n tıklama olan toplam N gösterim, gerçekleşme olasılığı şöyledir:
P = p ^ n * (1-p) ^ (N-n)
Yukarıdaki olasılığın her iki tarafındaki kütüğü alın
log (P) = nlog (p) + (N-n) log (1-p)
Türevi alın ve p = n / N olduğunda uç değeri alın.
Ancak öğenin N veya n'si 0 olduğunda, şu anda maksimum olasılıkla elde edilen p aslında çok doğru değildir.
Yani şu anda sahip olduğumuz sorun şudur: N veya n 0 olduğunda, maksimum olasılık tahmini bu öğelerin gerçek özelliklerini iyi yansıtmaz.
Çözümlerden biri, önceki bir dağıtım kullanmaktır, bu da Eşlenik Ön Dağıtım kavramı.
Bernoulli dağılımının eşlenik dağılımı, Bayes formülünü kullanan beta dağılımıdır ve temel formülü şöyledir:
Arka dağılım = Olabilirlik fonksiyonu * Önceki dağılım / P (X)
Önceki konjugatın bu kısmı için, önceki makalenin konu modelini kontrol edebilirsiniz: LDA Mathematical Foundation (https://www.zybuluo.com/zhuanxu/note/1016850), burada Beta dağılımının p'nin önceki dağılımını verdiğini biliyoruz. Bu kadar.
Başka bir çözüm de, tıklama oranını farklı dönemlere göre tahmin etmektir. Bu dönemdeki tıklama oranını daha doğru bir şekilde tahmin etmek için önceki dönemin tıklama oranını önceden bilgi olarak kullanabiliriz.
Benzerlik modeli
Popülerliğe dayalı öneri modelini tanıttıktan sonra, Benzer bilgilere dayalı öneri modeli , Bu tür model aynı zamanda İşbirlikçi filtreleme , Şu şekilde özetliyor:
Benzer kullanıcılar benzer tercihlere sahip olabilir ve benzer öğeler benzer kişiler tarafından tercih edilebilir.
Bu yüzden benzer kullanıcıları veya benzer öğeleri aramalıyız.
İşbirliğine dayalı filtrelemenin temel fikri, Verileri ödünç al Spesifik anlayış, A kullanıcısı yetersiz veriye sahip olduğunda, referans için kullanılabilecek B kullanıcısını bulabilir ve ardından A'yı iyileştirmek için B kullanıcısının verilerini kullanabiliriz.
İlke, bir kullanıcı türünü temsil ettiklerini düşünerek A ve B kullanıcısını birlikte "kümelememizdir". Daha fazla verinin elde edilebilmesi için tek bir kullanıcının modellemesini belirli bir kullanıcı türüne göre soyutladık.
İki ana ortak çalışma türü vardır:
Hafıza işbirliğine dayalı olarak, odak hafızadır, her bir kişinin tükettiği öğeleri hatırlamak ve ardından ona tavsiye etmektir;
Bu nedenle, bellek tabanlı ortak çalışmanın odak noktası benzer kullanıcıları veya benzer öğeleri bulmaktır. Önce benzer kullanıcılara bakalım.
Kullanıcı işbirliği
Kullanıcı işbirliğinin arkasındaki fikir, kullanıcıları geçmiş davranışlarına göre kümelemek ve ardından aynı türden kullanıcıların ortak tercihlerine göre kullanıcılara öğeler önermektir.
Kullanıcı işbirliğinin temel formülü:
Yukarıdaki formülü yorumlayalım:
Formülün sol tarafında
İ öğesi için u kullanıcısının tahminini temsil eder, formülün sağ tarafı u kullanıcısı ve j kullanıcısı arasındaki benzerlik ağırlıklandırmasıdır,
U kullanıcısı ve j kullanıcısı arasındaki benzerliği gösterir,
İ öğesindeki j kullanıcısının derecelendirmesini gösterir.
Yukarıdaki formül ile gerçek üretimde kullanılıyorsa dikkat edilmesi gereken birkaç noktaya bakalım:
1. Kullanıcı vektörü öğelerle temsil edilir. Öğe sayısı büyükse, kullanıcı vektörünün boyutu çok yüksektir ve vektör benzerliğinin hesaplanması zaman alır
2. Herhangi iki kullanıcının benzerliğini hesaplamak gerektiğinden, tüm karmaşıklık
3. Her bir kullanıcı ve öğe arasındaki ilişkiyi hesaplamak için karmaşıklık
Yukarıdaki problemlerle ilgili olarak, github'ımdaki (https://github.com/zhuanxuhit/kaggle/blob/master/tencentAd/2-collaborative filtreleme sürümü.ipynb) kodun nasıl çözüldüğünü görebilirsiniz.Herkese hoş geldiniz yıldız.
Ürün koordinasyonu
Ürün koordinasyonu için temel formül aşağıdaki gibidir:
Önceki kullanıcı işbirliğinin temeli ile kolayca anlaşılabilir. Burada hatırlamamız gereken temel noktalar şunlardır:
Özetle: Öğe işbirliği, kullanıcının kaydettiği öğelere dayalı olarak bu öğelere en çok benzeyen öğeleri bulmaktır.
eğim bir algoritma
Eğimli bir algoritması, modelin öğe işbirliğinde çevrimiçi olarak güncellenememesi sorunuyla yüzleşmek için önerilmiştir.
Ana yenilik şunların tanıtılmasıdır:
1. İki öğe arasındaki boşluğun güven düzeyini temsil etmek için iki öğenin ortak kullanıcı sayısını tanıtarak
2. Model gerçek zamanlı olarak çevrimiçi olarak güncellenebilir
sonuç olarak
Bu makale iki öneri modelini tanıtmaktadır:
Bunların arasında, popülerliğe dayalı model basit ve etkilidir, bazı ön bilgilerle bazı soğuk başlangıç problemlerini çözebilirken, benzer bilgilere dayalı öneri modeli, gruplama yoluyla seyrek kullanıcıların ve öğelerin problemini çözmek için grubun bilgeliğinden tam olarak yararlanır. .