Yiwen sana bir kitap öneri sistemi oluşturmayı öğretir [tüm python koduyla]

WeChat'te arama yapın ve "Akıllı Öneri Sistemi" resmi hesabını takip edin, "Kitaplar" a yanıt verin ve tüm kaynak kodunu alın.

Öneri sistemleri e-ticaret web sitelerinde yaygın olarak kullanılmaktadır ve zevklerine en uygun ürünlerin nasıl önerileceği araştırmanın odak noktasıdır. Bu makale Kitap Geçişi veri setine dayalı olarak kitap öneri sistemi üzerine araştırma yürütür ve bir öneri sistemi oluşturmanın adımlarını ayrıntılı olarak açıklar: veri setlerini yükleme (kitaplar, kullanıcılar, derecelendirme tabloları), her veri setini kontrol etme, vb. Ve popülerliğe dayalı bir uygulama İşbirliğine dayalı filtrelemeye (kullanıcı tabanlı ve öğe tabanlı) dayalı basit öneri sistemi ve öneri sistemi. Bu makaleyi okurken, basit bir öneri sisteminin yapım sürecini anlayacağınıza inanıyorum.

Kod indirme yöntemi

Herkese açık hesap "Akıllı Öneri Sistemi" ni takip edin, sahne arkası yanıtını verin

kitabın

Kitap Öneri Sistemi Oluşturmanın Yolu

Çevrimiçi öneri sistemleri, birçok e-ticaret web sitesinin teknik çekirdeğidir. Öneri sistemi, müşterilere zevklerine ve özelliklerine en uygun ürünleri önerir.

Book Crossing veri seti, 2004 yılında Cai-Nicolas Ziegler tarafından başlatıldı ve kullanıcı, kitap ve derecelendirme tablosu olmak üzere üç tablo içeriyor. Açık puanlar 1'den 10'a kadar bir ölçekte temsil edilir (daha yüksek değerler daha yüksek puanları gösterir) ve örtük puanlar 0 ile temsil edilir.

Herhangi bir makine öğrenimi modeli oluşturmadan önce, verilerin ne olduğunu ve neyi başarmak istediğimizi anlamak çok önemlidir. Veri keşfi, gizli eğilimleri ve öngörüleri ortaya çıkarır ve veri ön işleme, verileri makine öğrenimi algoritmalarının kullanımına sunar.

Öncelikle veri setini yükleyip kitap, kullanıcı ve derecelendirme veri setinin formatını aşağıdaki gibi kontrol ediyoruz:

kitabın

Kitap veri setinden başlayarak, görsel URL sütununun analiz için gerekli olmadığını, dolayısıyla silinebileceğini görebiliriz.

Şimdi her sütunun veri türünü kontrol ediyor ve eksik ve tutarsız girişleri düzeltiyoruz.

  • yayın tarihi

Şimdi bu niteliğin değerini kontrol ediyoruz.

Yayınlanma zamanında bazı yanlış girişler var. Csv dosyasındaki bazı hatalar nedeniyle, yayıncıların adlarına benzeyen 'DK Publishing Inc' ve 'Gallimard', veri kümesine yayın tarihleri olarak hatalı olarak yüklendi. Ayrıca değerlerin bir kısmı dizedir ve girilen yıl bazı yerlerdeki sayı ile aynıdır. Bu satırlarda gerekli düzeltmeleri yapıp yayın tarihinin veri türünü int olarak belirleyeceğiz.

Şimdi, yayın zamanının int türünde olduğunu ve değerinin 0-2050 arasında olduğunu görebilirsiniz. Bu veri seti 2004 yılında kurulduğundan, 2006'dan sonraki tüm yılların geçersiz olduğunu varsayıyorum ve veri setinin güncellenmesi durumunda iki yıllık farkı saklıyorum. Tüm geçersiz girişler için (0 dahil), bunları NaN'ye dönüştürüyorum ve ardından kalan yılların ortalamasıyla değiştiriyorum.

  • Yayımcı

"Yayıncı" sütununda, iki NaN değerini işledim ve bunları "diğer" ile değiştirdim çünkü bazı kontrollerden sonra yayıncının adı çıkarılamıyor.

Kullanıcı veri seti

Şimdi kullanıcı veri kümesini keşfediyoruz, önce boyutunu, ilk birkaç sütunu ve veri türünü kontrol ediyoruz.

  • yaş

Değeri kontrol ederken, kullanıcı kimliği doğru görünüyor. Bununla birlikte, yaş sütununda bir NaN ve bazı çok yüksek değerler vardır. Bence 5 yaş altı ve 90 üstü pek bir anlam ifade etmiyor, bu yüzden bunların yerini NaN alacak. Daha sonra tüm NaN'ler ortalama yaşla değiştirilir ve veri türleri int olarak ayarlanır.

Buradaki pozisyon sütununda herhangi bir işlem yapmadım. Bununla birlikte, konum verilerini işlemek istiyorsanız, bunları şehirlere, eyaletlere ve ülkelere ayırabilir ve bazı işlemler için metin işleme modellerini kullanabilirsiniz.

Puanlama veri seti

Puanlama veri setinin boyutunu ve ilk birkaç satırı kontrol ediyoruz. Kullanıcı kitabı derecelendirme matrisimizin çok seyrek olacağını gösteriyor, çünkü gerçek derecelendirme, derecelendirme matrisinin boyutuna (kullanıcı sayısı × kitap sayısı) kıyasla oldukça düşük.

Artık puan veri kümesi, ilgili tablolarda, yani kullanıcılar ve kitaplarda bulunan kullanıcı kimliği ve ISBN'ye sahip olmalıdır.

Açıkçası, kullanıcılar orijinal kitap veri setinin parçası olmayan bazı kitapları derecelendirdi. Veri setinin seyrekliği şu şekilde hesaplanabilir:

1-10 ile temsil edilen açık puan ve 0 ile temsil edilen örtük puan artık ayrılmalıdır. Kitap öneri sistemimizi oluşturmak için yalnızca net derecelendirmeler kullanacağız. Benzer şekilde, kullanıcılar da örtük davranışları açıkça puanlayan ve kaydeden kişilere ayrılır.

Bir kitap inceleme tablosu, daha yüksek puanlama oranlarının kullanıcılar arasında daha yaygın olduğunu ve en çok 8 puan aldığını göstermektedir.

Popülerliğe dayalı basit öneri sistemi

Bu noktada, farklı kitapların kullanıcı derecelendirme sayılarına göre popülerliğe dayalı basit bir öneri sistemi oluşturulabilir. Açıkçası, J.K. Rowling'in yazdığı kitap çok popüler.

İşbirliğine dayalı filtrelemeye dayalı öneri sistemi

Makinenin bilgi işlem gücünü eşleştirmek ve veri setinin boyutunu küçültmek için en az 100 kitap ve en az 100 puan alan kullanıcıları seçiyoruz.

CF tabanlı bir öneri sistemi oluşturmanın bir sonraki önemli adımı, derecelendirme tablosundan bir kullanıcı öğesi derecelendirme matrisi oluşturmaktır.

Lütfen puanlama matrisindeki değerlerin çoğunun NaN olduğunu ve puanın olmadığını, dolayısıyla verilerin seyrek olduğunu unutmayın. Ayrıca burada yalnızca açık puanlamanın dikkate alındığını unutmayın. Çoğu makine öğrenimi algoritması NaN'yi işleyemediğinden, puan olmadığını belirterek bunları 0 ile değiştirdik.

Kullanıcı tabanlı CF

Önceki paylaşımda belirtilen bir işlevi kullanacağım (https://towardsdatascience.com/collaborative-filtering-based-recommendation-systems-exemplified-ecbffe1c20b1). Findksimilarusers işlevi, kullanıcı kimliğini ve derecelendirme matrisini girer ve benzer k kullanıcının benzerliğini ve dizinini döndürür.

Predict_userbased işlevi, kullanıcının yöntemine bağlı olarak belirli bir kullanıcı-öğe kombinasyonunu puanlar.

Tavsiye edilen öğe işlevi, kullanıcı tabanlı veya öğe tabanlı yöntemler için kitap önermek için yukarıdaki işlevi kullanır (seçilen yönteme ve metrik kombinasyonuna göre). Kitabın tahmin edilen puanı 6'dan büyük veya eşitse ve kitap henüz puanlanmadıysa, bir öneri verilir. Bu işlevi çağırırken benzerlik ölçüsünü (kosinüs / korelasyon) seçebilirsiniz.

Kullanıcı tabanlı CF yöntemine dayalı 4385'in en iyi 10 kitap tavsiyesine bakın.

Öğe tabanlı CF

Benzer bir işlev, benzer kitap bulabilen ve her kitabın kullanıcı derecelendirmesini tahmin edebilen, öğe tabanlı CF için yazılmıştır. Aynı işlev, öğe tabanlı yöntemlere ve seçilen metriklere dayalı olarak kitaplar önermek için kullanılabilir. Kitabın tahmin edilen puanı 6'dan büyük veya eşitse ve kitap henüz puanlanmamışsa, bir öneride bulunun.

Öğe tabanlı KF yöntemine göre 4385'in en iyi 10 kitap tavsiyesini aşağıda gösterildiği gibi kontrol edin. Bu, kullanıcı tabanlı yaklaşımdan çok farklıdır.

Bu makalede, çapraz doğrulama, test eğitimi bölüşümü ve öneri sistemi değerlendirme alanları ele alınmamıştır ve bu alanlar keşfedilmeye değerdir.

Referanslar:

https://towardsdatascience.com/how-did-we-build-book-recommender-systems-in-an-hour-the-fundamentals-dfee054f978e

https://cambridgespark.com/content/tutorials/implementing-your-own-recommender-systems-in-Python/index.html

Referans bağlantısı:

https://towardsdatascience.com/my-journey-to-building-book-recommendation-system-5ec959c41847

2019, katlanır ekranlı telefonlarda yeni bir dönem mi olacak? Xiaomi yöneticilerinin Weibo OPPO davet mektupları ipucu veriyor
önceki
1 yıldız derecelendirmesi 1.000 yuan olan "Gezinme Dünya" mı? Gişe 2 milyar kırdı ancak kötü niyetli kötü eleştirilerden şüphelenildi
Sonraki
Ürünün gömülü noktasını anlamak için bir makale
Moments tarafından görüntülenen bu tür bir "askeri üniforma fotoğrafı" zehirli mi? People's Daily cevaben bir açıklama yayınladı
2019 Küresel Yapay Zeka Geliştirme Trend Raporu
AMD'nin büyük katili burada! AMD iplik yırtıcılarla ilgili her şey burada!
Yasal olarak yolda olabilecek en güçlü akıllı: en yüksek hız 274 km / saate ulaşabilir
2018'in en iyi on kışkırtıcı kelimesi, hangilerinin olduğunu biliyor musunuz?
QC4 + şarjı destekleyen en son 18 cep telefonu, sahip olup olmadığına bakın
Akıllı öneri için yerleşik nokta teknolojisinin uygulanması ve pratiği
Çekirdek olmadan Paris, Old Trafford'da nasıl kazandı?
Deneyim kraldır, akıcılık son sözdür! AMD Radeon RX VEGA serisi ekran kartları resmi olarak tanıtıldı
Pinduoduo hata olayından sonra, resmi tazminat 5 yuan kupon, netizenler: samimiyet yok
Çekirdeksiz Paris, Old Trafford'da nasıl kazandı?
To Top