Tavsiye Sistemleri
Birliktelik Kuramı
Tavsiye Sistemleri
Birliktelik Kuramı

Tavsiye sistemlerini bu kadar başarılı yapan altyapı nedir? Önümüze çıkan içeriklerin hepsi nasıl olur da bizimle bu kadar uyumlu?
Gelin tavsiye sistemlerinin altındaki temel algoritma mantığına, yazılım aşamalarına birlikte bakalım. Bu yazıdaki amacımız online hediye satışı yapan sitenin verileri üzerine birliktelik analizi uygulayarak kullanıcılara sepetindeki ürünlere göre ürün önermek.
Birliktelik Kuramı
Olayların, ürünlerin birlikte gerçekleşme, satın alınma durumlarını çözümleyen veri madenciliği yöntemlerine dayanan sıkça kullanılan ve tavsiye sistemlerinin temel mantığını kavramamız açısından anlaşılması gereken önemli bir kuramdır.
Öncelikle data setimizdeki değişkenlerimizi tanıyalım.

Data setine ulaşmak için lütfen ***buraya ***tıklayınız.
Sırasıyla aşağıdaki adımları takip edeceğiz.
# 1. Veri Ön İşleme
# 2. ARL Veri Yapısını Hazırlama (Invoice-Product Matrix)
# 3. Birliktelik Kurallarının Çıkarılması
# 4. Sepet Aşamasındaki Kullanıcılara Ürün Önerisinde Bulunmak
- Veri Ön İşleme
Verimizi çağırdıktan sonra oluşturduğumuz “thresholds” fonksiyonlarımızla aykırı değerleri baskıladık. Veri setimizdeki boş değerleri ve fatura iptal işlemlerini sildik.
Not: birliktelik kuramını uygulamanız için eğer kütüphane yüklü değilse!pip install mlxtendile kütüphaneyi yükledikten sonrafrom mlxtend.frequent_patterns import apriori, association_rulesile import ediniz.


Ön işlenmiş verimize bir göz atalım.

2. ARL Veri Yapısını Hazırlama (Invoice-Product Matrix)
Analizin yolunu değiştirebilecek düşünülmesi gereken bir adımdayız. En kritik noktası sepeti tanımlamak. Sepet ne? Odak noktanın iyi belirlenmesi gerekiyor. Bu case de faturalar üzerinden gideceğiz. Müşteri-Ürün ile değil Fatura-Ürün ikilisini dikkate alacağız. Ülke seçimi isteğe göre değişkenlik gösterebilir, biz germany üzerinde ilerleyeceğiz.
İstediğimiz Fatura(Invoice)-Ürünlerimiz(StockCode) ikilisi olduğu olduğu için bu değişkenlerimizi groupby ile tablo haline getirdik ve fonksiyon içine tanımladık. Unstack() sayesinde Invoice satırda, StockCode değerlerimiz sütunda yer alacak.

Çıktımıza göz atalım.

- Birliktelik Kurallarının Çıkarılması
Bu aşamada kullanılan apriori fonksiyonunu ürün birlikteliklerini ortaya çıkarmak için kullandık. Daha sonra sıklık derecelerine göre sort_values fonksiyonu ile sıraladık. min_support değerinin 0.01 olması demek, herhangi çoklu ürünün birlikte gözükme olasılığı ancak 0.01 den büyükse getir demek.

Daha sonra association_rules fonksiyonu ile birliktelik metriklerinin çıktılarını aldık. Çıktımızı ve işimize yarar çıktı başlıklarımızı inceleyelim.

antecedents: 1. ürünümüz
consequents: 1. ürün ile aynı sepette birlikte görünen 2. veya daha fazla sayıda ürünlerimiz.
antecedent support: ürün1 in tek başına sepette gözükme olasılığı
consequent support: 2. ürün ikinin tek başına sepette gözükme olasılığı
support: İki ürünün beraber sepette gözükme olasılığı (p)
confidence: 1. Ürün alındığında 2. ürünün alınma olasılığı
lift: 1. Ürün alındığında 2. ürünün alınma olasılığının kaç kat arttığı

- Sepet Aşamasındaki Kullanıcılara Ürün Önerisinde Bulunmak
Son aşamamızda seçtiğimiz bir kullanıcının sepetinde bulunan ürünlere göre birlikte alabileceği başka ürünler önermek.
not: product_id’i random olarak seçildi.
check_df fonksionu; girdiğimiz id ye göre ürünün ismini çağırmak için oluşturduk.

Sepetimizde var saydığımız 23049 ID li ürünümüz için 3 farklı ürün önerdiğimi arl_recommender fonksiyonu tanımladık. Ve bu önerileri içerisinde tutması için recommendation_list adında liste atadık.

Aşağıdaki son çıktımıza göre sepette olan ‘RECYCLED ACAPULCO MAT RED’ ürününe göre birlikte görülme olasılığına göre önerilecek en isabetli üç ürün listelenmiştir.

Diğer yazılarda görüşmek üzere.
Hoşçakalın.
İletişimde geçebileceğimiz ***Linkedln ve [git.hub](https://github.com/zeyland)*** hesaplarıma tıklayıp ulaşabilirsiniz.
English version of Recommendation System is below.
메타데이터
- post_id
- 98390707881a
- slug
- tavsiye-sistemleri-98390707881a
- url
- https://medium.com/@zeyland/tavsiye-sistemleri-98390707881a
- canonical_url
- https://medium.com/@zeyland/tavsiye-sistemleri-98390707881a
- author_url
- https://medium.com/@zeyland
- status
- ok
- fetched_at
- 2026-07-27 16:19:55