0Pricing
Learn AI with Python · Ders

İşbirlikçi Filtreleme: Kullanıcı ve Öğe Tabanlı

Kullanıcı benzerliği, öğe benzerliği, komşuluk yöntemleri, puanlar için kosinüs benzerliği.

İşbirlikçi Filtreleme: Kullanıcı ve Öğe Tabanlı, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.

İşbirlikçi Filtreleme Nedir?

İşbirlikçi filtreleme (CF), birçok kullanıcının davranışlarından öğrenerek öğeler önerir. Temel fikir şudur: Geçmişte aynı fikirde olan kişiler gelecekte de genellikle aynı fikirde olur. Bu yöntemin öğe açıklamalarına ihtiyacı yoktur; yalnızca etkileşim geçmişi yeterlidir.

Kullanıcı-Öğe Matrisi

CF, satırların kullanıcıları, sütunların öğeleri temsil ettiği ve her hücrenin bir puan içerdiği (puan verilmemişse boş bırakıldığı) bir kullanıcı-öğe matrisi ile başlar. Her kullanıcı az sayıda öğeye puan verdiği için bu matris genellikle çok seyrektir.

import pandas as pd

matrix = ratings.pivot_table(
    index="user_id", columns="item_id", values="rating"
)

CF'nin İki Türü

  • Kullanıcı tabanlı: Size benzeyen kullanıcıları bulun ve onların beğendiği öğeleri önerin.
  • Öğe tabanlı: Beğendiğiniz öğelere benzeyen öğeleri bulun ve bunları önerin.

Her iki yaklaşım da satırlar (kullanıcılar) veya sütunlar (öğeler) arasındaki bir benzerlik ölçüsüne dayanır.

Kosinüs Benzerliği

Kosinüs benzerliği, büyüklüğü göz ardı ederek iki puan vektörü arasındaki açıyı ölçer. 1'e yakın değerler zevklerin çok benzer olduğunu, 0'a yakın değerler ise ilişkili olmadığını gösterir.

from sklearn.metrics.pairwise import cosine_similarity

filled = matrix.fillna(0)
user_sim = cosine_similarity(filled)  # user x user

Kullanıcı Tabanlı Tahmin

Bir öğe için puanınızı tahmin etmek üzere, benzer kullanıcıların bu öğeye verdiği puanların ağırlıklı ortalamasını alın ve ağırlık olarak benzerliği kullanın. Daha benzer komşuların etkisi daha fazla olur.

Tahmin Formülü

Tahmin edilen puan = öğeye puan vermiş komşular için (benzerlik * komşu_puanı) toplamı / benzerlikler toplamı. Önce her kullanıcının ortalamasını çıkarmak (ortalama merkezleme), genellikle yüksek veya düşük puan veren kullanıcıların etkisini düzeltir.

import numpy as np

def predict(sims, ratings_for_item):
    mask = ~np.isnan(ratings_for_item)
    if sims[mask].sum() == 0:
        return np.nan
    return np.dot(sims[mask], ratings_for_item[mask]) / sims[mask].sum()

Komşuları Seçme (k)

Tüm kullanıcıları kullanmak yerine yalnızca en benzer k komşuyu seçin. Bu, benzemeyen kullanıcılardan kaynaklanan gürültüyü azaltır ve tahmini hızlandırır. k, ayarlanabilir bir hiperparametredir.

Öğe Tabanlı Benzerlik

Öğe tabanlı CF, kullanıcı satırları yerine öğe sütunları arasındaki benzerliği hesaplar. Kullanıcının daha önce beğendiği öğelere en çok benzeyen öğeleri önerir.

item_sim = cosine_similarity(filled.T)  # item x item

Öğe Tabanlı Yaklaşım Neden Daha Kararlıdır?

Öğeler arasındaki ilişkiler yavaş değişir: İki film arasındaki benzerlik yaklaşık olarak sabit kalır. Kullanıcıların zevkleri ve kullanıcı tabanı ise daha hızlı değişir. Bu nedenle öğe tabanlı benzerlikler önceden hesaplanıp yeniden kullanılabilir; böylece daha kararlı ve ölçeklenebilir öneriler elde edilir. Amazon'un bu yaklaşımı ünlü biçimde tercih etmesinin nedeni de budur.

Soğuk Başlangıç Sorunu

Henüz hiç puanı olmayan yeni kullanıcılar veya öğeler söz konusu olduğunda CF zorlanır; karşılaştırma yapılacak hiçbir şey yoktur. Yaygın çözümler arasında yeni kullanıcılardan birkaç puan istemek veya içerik tabanlı yöntemlere geçmek bulunur (bu konu daha sonra ele alınacaktır).

Öneri Oluşturma

Bir kullanıcı için puan verilmemiş her öğeye puan verin, puanları azalan sırada sıralayın ve en yüksek N öğeyi öneri olarak döndürün.

scores = {item: predict_for(user, item)
          for item in unrated_items(user)}
top_n = sorted(scores, key=scores.get, reverse=True)[:10]

Hızlı Kontrol

İşbirlikçi filtreleme konusundaki bilginizi test edin.

Özet

Kullanıcı-öğe matrisi üzerinde CF oluşturdunuz, kosinüs benzerliğini hesapladınız, puanları komşuların benzerliğe göre ağırlıklandırılmış ortalaması olarak tahmin ettiniz ve öğe tabanlı CF'nin neden kullanıcı tabanlı yaklaşımdan daha kararlı olduğunu gördünüz. Sıradaki konu: SVD ile matris faktörleştirme.

Sıkça Sorulan Sorular

“İşbirlikçi Filtreleme: Kullanıcı ve Öğe Tabanlı” dersi ücretsiz mi?

Evet — “İşbirlikçi Filtreleme: Kullanıcı ve Öğe Tabanlı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.

“İşbirlikçi Filtreleme: Kullanıcı ve Öğe Tabanlı” dersinde ne öğreneceğim?

Kullanıcı benzerliği, öğe benzerliği, komşuluk yöntemleri, puanlar için kosinüs benzerliği. Learn AI with Python ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“İşbirlikçi Filtreleme: Kullanıcı ve Öğe Tabanlı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn AI with Python dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. İşbirlikçi Filtreleme: Kullanıcı ve Öğe Tabanlı
  2. SVD ile Matris Çarpanlarına Ayırma
  3. İçerik Tabanlı Filtreleme
  4. Hibrit Sistemler ve Değerlendirme Ölçütleri
← Learn AI with Python Sayfasına Dön