Birliktelik Kuralı Temelli Tavsiye Sistemi

Buket Yüce
5 min readJun 5, 2022

--

Tavsiye sistemleri kullanıcılara bazı teknikleri kullanarak ürün ya da hizmet öneren sistemlerdir. Asıl amaç çok fazla olan içerikleri indirgeyebilmektir. Tavsiye sistemleri kısaca; kullanıcıların ilgi alanına göre, sonraki hareketlerini tahmin ederek uygulama kullanımını sürdürmek amacıyla düzenlenen algoritma yapılarıdır. Bu yazımda yalnızca birliktelik kuralı öğrenimini ele alacağım fakat diğerleri hakkında da kısa süre içinde yazıyor olacağım,😊

Association Rule Learning (Birliktelik Kuralı Öğrenimi):

Sepet analizi olarak da karşımıza çıkar. Birçok şirketin kullanabileceği türden bir analiz yöntemidir. Özellikle e-ticaret tarafında yaygın şekilde kullanılmaktadır. Çok sık bir şekilde birlikte satın alınan ürünlerin olasılıklarını çıkarır ve bunlara göre belirli öneriler yapma imkânı sağlar.

Veri içerisindeki örüntüleri (pattern, ilişki, yapı) bulmak için kullanılan kural tabanlı bir makine öğrenmesi tekniğidir.

Bazı müşterilerin yapmış olduğu alışverişler olduğunu düşünelim. Yapılan her alışverişin bir fişi olacaktır. Müşterilerin yapmış oldukları alışveriş fişlerini inceleyelim ve örneğin birlikte gözlemlenen ürün çiftlerini bir yere not edelim. Örneğin 8 müşteri olsun ve fişlerin 5 tanesinde ekmek ve süt birlikte satılmış olsun. 8 alışveriş sepeti göz önünde bulundurulduğunda ekmek ve sütün bir arada görünme olasılığı 5/8 dir. Yani alışverişlerin %62 sinde ekmek ve süt birlikte gözlenmiştir.

Apriori Algoritması ( Apriori Algorithm ):

Sepet analizi yöntemidir. Ürün birlikteliklerini ortaya çıkarmak için kullanılır. Apriori Algoritması üzerinden hesaplanan ve yorumlarının değerli olduğu üç temel metrik vardır. Bu üç Temel metrik ile veri seti içerisindeki ilişki örüntülerini, yapılarını gözlemleme imkânı buluruz. Bu ilişkileri istatistiksel bir ölçüt ile değerlendirme imkânı buluruz.

Apriori Algoritması ile bazı örnekler ele alalım.

Apriori Nasıl Çalışır ?

Apriori algoritması adım adım, çalışmanın başında belirlenecek bir support eşik değerine göre olası ürün çiftlerini hesaplar ve her iterasyonda belirlenen support değerine göre elemeler yaparak nihai final tablosunu oluşturur

  • N=5 (İşlem sayısı)
  • Support = %20 (0,2) (Bizim belirlemiş olduğumuz değer, bir ürün %20 den az gözlemleniyorsa bu önemsizdir, bu ürünleri ele.)
  • Support FREQ = 1

Support değerine eşit ve altında olanlar elenecek. Yani meyve suyu ve kek gidecek.

Adım adım Apriori algoritmasını gözlemledik. Olası ürün kombinasyonlarının olasılıklarına bakıldı ve belirlenen support değerine göre elemeler yapılarak ilerleyerek final tablosundan çeşitli yorumlar yapılabilir hale geldi.

Birliktelik Kuralı Temelli Tavsiye Sistemi ile uçtan uca bir projeyi ele alalım.

İŞ PROBLEMİ:

Sepet aşamasındaki kullanıcılara ürün önerisinde bulunmak.

VERİ SETİ HİKAYESİ:

  • Online Retail II isimli veri seti İngiltere merkezli online bir satış mağazasının 01/12/2009–09/12/2011 tarihleri arasındaki satışlarını içermektedir.
  • Bu şirketin ürün kataloğunda hediyelik eşyalar yer almaktadır.
  • https://archive.ics.uci.edu/ml/datasets/Online+Retail+II

DEĞİŞKENLER

  • InvoiceNo: Fatura numarası. Her işleme yani faturaya ait eşsiz numara. C ile başlıyorsa iptal edilen işlem.
  • StockCode: Ürün kodu. Her bir ürün için eşsiz numara.
  • Description: Ürün ismi
  • Quantity: Ürün adedi. Faturalardaki ürünlerden kaçar tane satıldığını ifade etmektedir.
  • InvoiceDate: Fatura tarihi ve zamanı.
  • UnitPrice: Ürün fiyatı (Sterlin cinsinden)
  • CustomerID: Eşsiz müşteri numarası
  • Country: Ülke ismi. Müşterinin yaşadığı ülke.

Gerekli veri ön işleme basamakları gerçekleştirelim. Gerekli import işlemleri ve ayarlamaları yaptıktan sonra veri setini okutuyoruz.

Veri setine göz atalım.

Veri seti bir fatura verisi. Odağımız kesilen faturalar olacak fakat fatura ID’leri çoklama halinde.

Veri setinde bazı problemli durumlar var. Bu problemli durumları ortadan kaldırmamız gerekli. Veri setini betimleyelim.

Minumum değerlerde eksi değerler söz konusu çünkü faturalarda iade edilen ürünler var, ayrıca max değerde de bir sorun gözüküyor. Aykırı değerler söz konusu.

Ayrıca veri setinde bazı eksiklikler de mevcut.

Veri setini istediğim hale getirmek için fonksiyon tanımlayalım.

Bazı aykırı değerler söz konusuydu. Aşağıdaki fonksiyon değişkenler için eşik değer belirleyecek.

Aşağıdaki fonksiyon değişkenlerdeki değerleri eşik değerlere göre kontrol edecek ve eğer bu eşik değerlerden yukarıda veya aşağıda olan değerler varsa yerlerine eşik değerleri yerleştirecek.

Betimsel istatistiklerde eksi değerler olduğunu görmüştük. Bunun sebeplerinden biri iadelerdi aşağıdaki fonksiyon bunları silecek. Eksik değerleri de kalıcı bir şekilde silecek. Quantity ve Price değerleri bir filtreleme işleminden geçirilmemişti. Bunlar veride ölçüm problemleri yaratıp yorumlamaları saptıracağından dolayı bazı temel düzenlemeler yapacak. Ayrıca daha önce tanımladığımız fonskiyonların da işlevini gerçekleştirecek.

Veri setimiz bu fonskiyon saysinde artık hazır 🤩

Şimdi ARL veri yapısını hazırlayalım. (Invoice-Product Matrix)

Elimizdeki veri fatura ID’ lerine göre çoklama, ürünlere göre tekil bir formda bir işlem verisi.

Ne olması gerekir?

  • Daha ölçülebilir, üzerinde analitik işlemler yapabileceğimiz özel bir matris formu olması gerekir.
  • Satırlarda Invoice’lar sütunlarda Product’lar olması gerekir.
  • Bir faturada belirli bir ürünün olup olmaması 1 ve 0’larla ifade edilsin.

İşlemlerin daha hızlı gerçekleşmesi için veri setini belirli bir ülkeye indirgeyerek devam edelim.

df_fr = df[df['Country'] == "France"]

Elimizdeki veriyi istediğimiz forma getirecek bir fonksiyon tanımlayalım ve gözlemleyelim.

Görüldüğü üzere bütün veri dönüştürüldü. Analiz kapsamında ID’lerin ne olduğuna bakma ihtiyacı duyarsak işimizi kolaylaştıracak bir fonksiyon tanımlayalım.

Bu fonksiyonu kullanarak ID’lerin ne olduğuna kolayca göz atabiliriz😊

Birliktelik kuralları analizi gerçekleştirelim.(Association Rules Analysis )

Sepet Aşamasındaki kullanıcılara artık ürün önerisinde bulunabiliriz.

Pratikte, hangi ürünler sepete eklendiğinde hangi ürünleri önermeliyim çalışması önceden gerçekleştirilir. Bir ID yakalandığında eğer o ürün sepete eklendiyse o ürüne nelerin önerilmesi gerektiği bir SQL tablosunda tutulur. Burada ise bir öneriyi üretme işlemini yaptık.

Projenin daha detaylı bir halini github hesabımdan inceleyebilirsiniz.

Vakit ayırıp okuduğunuz için teşekkürler, yeni konularda görüşmek üzere 🤩👋🏻

--

--

Buket Yüce

I’m interested in Data Science and Analytics. I have motivated to learn, grow, and excel in Data Science.