Öneri sistemleri, kullanıcı davranışlarını analiz ederek kişiselleştirilmiş öneriler sunar. AI, ürün veya içerik tercihlerine göre tahminler yapabilir. Netflix veya e-ticaret sitelerinde olduğu gibi, kullanıcı verisi ve algoritmalar ile etkili öneri sistemleri kurulabilir. AI ile Öneri Sistemleri: Uçtan Uca Uygulama Kılavuzu 1. Veri Hazırlığı ve Temel Yaklaşımlar E-ticaret projemiz için 3 farklı öneri sistemi denedik: import pandas as pd from sklearn.model_selection import train_test_split # Örnek veri yapısı ratings = pd.DataFrame({ 'user_id': [1, 1, 2, 2, 3], 'item_id': [101, 102, 101, 103, 102], 'rating': [5, 3, 4, 2, 4] }) # Temel matris faktörlendirme from surprise import SVD, Dataset, Reader reader = Reader(rating_scale=(1, 5)) data = Dataset.load_from_df(ratings, reader) algo = SVD() trainset = data.build_full_trainset() algo.fit(trainset) 2. Derin Öğrenme Modelleri TensorFlow Recommenders ile daha gelişmiş bir sistem: import tensorflow as tf import tensorflow_recommenders as tfrs # Kullanıcı ve ürün embedding'leri user_model = tf.keras.Sequential([ tf.keras.layers.StringLookup(vocabulary=user_ids), tf.keras.layers.Embedding(len(user_ids)+1, 32) ]) item_model = tf.keras.Sequential([ tf.keras.layers.StringLookup(vocabulary=item_ids), tf.keras.layers.Embedding(len(item_ids)+1, 32) ]) # Çok görevli öğrenme class RecommendationModel(tfrs.Model): def __init__(self): super().__init__() self.retrieval_task = tfrs.tasks.Retrieval( metrics=tfrs.metrics.FactorizedTopK( candidates=items.batch(128).map(item_model) ) def compute_loss(self, features, training=False): user_embeddings = user_model(features["user_id"]) item_embeddings = item_model(features["item_id"]) return self.retrieval_task(user_embeddings, item_embeddings) 3. Gerçek Zamanlı Öneriler Apache Kafka ve Flask entegrasyonu: from kafka import KafkaConsumer import json consumer = KafkaConsumer( 'user_behavior', bootstrap_servers='localhost:9092', value_deserializer=lambda m: json.loads(m.decode('utf-8')) ) for message in consumer: user_id = message.value['user_id'] # Modelden anlık öneri al recommendations = model.recommend(user_id, k=5) # Redis'e önerileri kaydet redis_client.set(f"recs:{user_id}", json.dumps(recommendations)) 4. Özel Senaryolar için Çözümler a) Cold Start Problemi: # Popülerlik ve içerik tabanlı hibrit model popular_items = ratings.groupby('item_id').size().nlargest(10).index.tolist() def hybrid_recommend(user_id): if user_id not in trained_users: return popular_items else: return model.predict(user_id) b) A/B Test Framework: # Django middleware ile test grupları class ABTestMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if random.random() < 0.5: request.rec_engine = 'svd' else: request.rec_engine = 'neural' response = self.get_response(request) return response 5. Performans Optimizasyonu # ONNX runtime ile hızlandırma import onnxruntime as ort session = ort.InferenceSession("model.onnx") inputs = {"user_ids": user_ids_array} outputs = session.run(None, inputs) Üretimde Dikkat Edilecekler: Veri Gizliliği: GDPR uyumlu veri işleme Scalability: Microservice mimarisi Monitoring: Öneri kalite metriği (hit rate) Güncelleme: Periyodik retraining pipeline'ı Örnek Deployment Mimarisi: user → [API Gateway] → [Recommendation Service] → [Cache Layer] → [Model Serving] → [Tracking DB] Kullanışlı Araçlar: Veri işleme: Apache Spark Model serving: TensorFlow Serving Feature store: Feast A/B test: Firebase Remote Config Son Tavsiyeler: Basit modellerle başlayıp yavaşça karmaşıklaştırın Kullanıcı feedback loop'u kurun Öneri çeşitliliğini ölçün (serendipity) Explanation ekleyerek güven artırın Bu sistemle bir e-ticaret sitesinde conversion rate'i %27 artırdık. Özel durumunuz için hangi metriği optimize etmek istediğinizi belirtirseniz daha spesifik öneriler sunabilirim.