Başta online alışveriş sitelerinde gördüğümüz fakat gelişen kiosk teknolojileri sayesinde artık fiziksel mağazalarda da karşımıza çıkan bir pazarlama yöntemi var ki hem tüketici, hem de satıcı için büyük nimet! Profiline ve satın aldıklarına göre müşteriye farklı seçenekler sunmaya yarayan tavsiye sistemi, arkasında önemli bir teknoloji barındırıyor. Bu blog yazımızda, tavsiye algoritmalarının nasıl çalıştığını derinlemesine irdeliyoruz.
Mağazacılığa damgasını vuran yeniliklerden biri, ilk kez Amazon’un gerçekleştirdiği otomatik ürün tavsiyeleriydi. Siteye girdiğinizde tam da ana sayfada, satın alabileceğiniz başka ürünler önerilirdi. Örneğin, moda tasarımcısıysanız, bu konuyla ilgili yazılmış moda kitapları gelirdi önünüze. Diğer yandan siteye çocuklu bir anne girdiğinde oyuncak ve çocuk kitabı yönlendirmeleriyle karşılaşırdı. Bu sistem artık fiziksel mağazalar için de kullanılabilir duruma geldi çünkü dijital dünya her yerde!
Kişisel temas
Mağazaların kişiselleştirilmesi büyük bir avantaj çünkü yalnızca en popüler 10 ürünün veya reklamların sergilenmesi pek de yeterli değil. Oysa kişiselleştirilmiş tavsiyelerde, bağlantıya tıklama ve dönüşüm oranları çok daha yüksek, müşteriler de önerilen ürünleri incelemeye ve satın almaya çok daha eğilimli. Bu nedenle tahmin algoritmaları, internet mağazaları için büyük önem taşıyor: Ne kadar doğru tahmin, o kadar fazla satış demek.
Ancak bir yandan da böylesine kapsamlı bir tavsiye algoritmasının çözmesi gereken olası sorunları düşünün. Amazon gibi milyonlarca müşterisi ve stokta milyonlarca ürünü olan dev bir internet mağazasının durumunu hayal edin. Yeni müşteriler, olası tercihleri konusunda az bir bilgiye sahipken, daha eski sadık müşteriler bu konuda çok daha bilinçli. Bu nedenle algoritmaları yönlendiren veriler, düzenli olarak ve sıklıkla güncelleniyor ve değişiyor. Müşteriler sayfalarda gezinirken bile, tahmin algoritmaları bakılan ürünleri anında kayda alıyor ve veri olarak saklıyor. Örneğin, küçük yeğenimiz için bir oyuncak ararken karşımıza jQuery kitabı tavsiyeleri çıkıyorsa bu pek de işimize yaramıyor.
Bu sistemlerin, tavsiyelerin doğruluğundan sonra en can alıcı ve önemli kriterlerinden biri de hız. Tavsiye algoritmalarının, hemen bir iki saniye içinde yeni öneriler üretmesi gerekiyor, çünkü zaten müşteri tam da o sırada tavsiyelerin görüntüleneceği mağazanın ana sayfasında geziniyor olacak.
Genellikle tüm bu tavsiye algoritmaları, veritabanında kayıtlı benzer kullanıcıların tespit edilmesi ilkesi üzerinden çalışıyor. Bir diğer deyişle sistem, sizin satın aldığınız veya değerlendirdiğiniz ürünleri, daha önce aynı işlemlere tabi tutan bir müşteri grubunun araştırılıp bulunması yoluyla çalışıyor. Daha önce satın aldığınız veya yorum yaptığınız ürünleri eliyor ve kalan ürünleri size tavsiye ediyorlar. Örneğin, biz A ve B ürünlerini satın aldığımızda, bu ürünlerin aynısını almış müşteriler arasında C’yi de alan varsa, o zaman bize sunulacak tavsiye C ürünü olacaktır.
Ortaklık
Bu algoritmaların en eskilerinden biri “ortak filtreleme”. Bu yöntem, özünde her müşteriyi, satıştaki tüm ürünlerin bir taşıyıcısı (vektörü) olarak görür. Müşteri, ürünü satın almış ve olumlu bir değerlendirme yapmışsa, vektördeki her girdi olumlu not alır. Müşteri ürünü beğenmemişse eksi puan alır ve eğer müşteri herhangi bir görüş belirtmemişse, bu bölüm boş kalır. Birçok müşteri için bu girdilerin olduğu alanlar boştur. Tabii bazı değişkenler, daha az popüler olan veya daha az bilinen bir ürünün bir anda yükselişe geçmesini sağlayabilir.
Algoritma, daha sonra hâlihazırdaki müşteriyle diğer müşteriler arasında bir benzerlik değeri oluşturarak tavsiyeler üretmeye başlar. Bunun için en uygun yol, vektörler arasındaki açının hesaplanmasıdır. En basit yöntem, nokta çarpımın vektör uzunlukları çarpımına bölünerek kosinüsün hesaplanmasıdır. Kosinüs ne kadar büyükse açı da o kadar küçülür, müşterilerin benzerliği de o kadar artar.
Tahmin edebileceğiniz gibi tüm bu işlemler sayısal bazda pahalıya patlayabiliyor. Genellikle çok sayıda müşteri olduğu için hesaplamaların da çok hızlı şekilde yapılması gerekiyor. Bu sayısal yükü azaltmak için yapılabilecek birkaç şey var tabii. Örneğin, müşteri tabanını örneklendirerek veya popüler olmayan ürünleri hesaba katmayarak bu sorunu aşabilirsiniz. Ancak tavsiyeleri bu yöntemle hesaplamak her şekilde masraflı olacaktır.
Müşteri kümeleri
Bir diğer tahmin algoritması, gruplandırma modellerinin kullanılması temeline oturuyor. Burada amaç, müşteri tabanını gruplara ayırarak veri oluşturmak ve yeni gelen müşteriyi en çok benzerlik içeren gruplardan birine atamak. Grup tanımlandıktan sonra, tavsiyeler, aynı grupta yer alan diğer müşterilerin satın alma ve değerlendirme işlemlerini takiben oluşturuluyor.
Her ne kadar gruplandırma tercihi sınıflandırma algoritması gibi işlese de, algoritmanın can damarı, grupların oluşturulmasıdır. Tabii sınıflandırma algoritmasında, her müşteri için ayrı vektörlerde olduğu gibi, benzer bir yöntemle grubu tanımlayan karakteristik bir vektör hesaplayabileceğimizi varsayıyoruz. Genellikle müşteri verilerinin gruplandırılması, deneme yanılma yöntemiyle yapılıyor. Önce bir miktar boş grupla başlanıyor, ardından her birine rastgele seçilen müşteriler atanıyor ve en sonunda da diğer müşteriler, benzerlik ilkesi üzerinden bu gruplara atanıyor. Başlangıçtaki gruplar rastgele oluşturulduğu için, sonraki süreçte alt algoritmaların da grupları birleştirmek veya ayırmak için kullanılması gerekiyor.
Gruplandırma modellerinin kullanılması, müşterilere en hızlısından tavsiye yapılması gerektiği anlarda, sayısal bazda çok daha zahmetsiz oluyor. Her şeyden önce, benzer bir grup bulmak, benzer bir müşteri bulmaktan çok daha kolay. Hatta neredeyse her şey, grupların oluşturulması sırasında halledilmiş oluyor. Ancak maalesef bu yöntem daha düşük kalitede tavsiyelerin gelmesine neden oluyor çünkü satın alma ve değerlendirme işlemleri bir grup içinde hesaplanıyor. Artık müşteri, kendisiyle en çok benzerlik gösteren müşterilerle değil, daha geniş bir müşteri topluluğunun ortalamasıyla eşleştiriliyor. Tabii ki eşleştirme sürecini detaylandırmak için grup sayısı artırılabilir ama bu kez de hesaplama süresinin artma riskini göze almak gerekiyor.
Basit aramalar
Bilinen geleneksel algoritmalardan biri de nispeten daha basit bir arama algoritması. Örneğin, Agatha Christie’nin “Nil’de Ölüm” kitabını satın alırsak, arama algoritması ürün veritabanında Agatha Christie’nin diğer kitaplarını, başka yazarların dedektiflik romanlarını, Agathe Christie eserlerinden uyarlanmış DVD’leri vb. arayacaktır. İnternette gezinirken bunun gibi birçok hedeflenmiş tavsiyeyi manşet reklamlarında görebilirsiniz. Yakın zamanda X marka bir dizüstü çantası aldık ve yaklaşık iki hafta sonra, neredeyse girdiğimiz her web sitesinde Y marka çanta tavsiyeleri aldık. Buna benzer takip edilme durumları yaşadığınızdan eminiz ama şunu unutmayın ki bu yöntemle karşınıza hep düşük kalitede öneriler çıkacak.
Üründen ürüne
Amazon, tavsiye sistemini geliştirmek için ortak filtreleme sistemini tamamen değiştirdi. Benzer müşteriler bulmak yerine, ürünleri birbirleriyle eşleştirdi. Bu yöntemin adı artık üründen ürüne ortak filtreleme. Bu algoritma, mevcut müşterinin daha önce satın aldığı ve değerlendirdiği ürünleri benzer ürünlerle eşleştiriyor ve eşleşen ürünlerden bir liste çıkarıyor. Bu durumda web sitesi, öncelikle müşterinin birlikte almak isteyeceği ürünleri inceleyerek “benzer ürünler tablosu” hazırlıyor. Bu sistem şöyle işliyor: Katalogdaki her X ürünü için, X’i satın almış C müşterileri bulunuyor. Bu müşterilerin her biri için, C müşterileri tarafından alınmış Y ürünleri de bulunuyor müşterinin X’i ve Y’yi satın aldığı kayıt altına alınıyor. Ardından tüm X ve Y çiftleri için, ortak filtreleme algoritmasında olduğu gibi, X ve Y arasındaki benzerlikler hesaplanıyor. Bu tür bir hesaplama sayısal bazda zorlu olsa da önceden düzenlenebiliyor.
Her bir ürün arasındaki benzerlik belirlendikten sonra, tavsiye listeleri kolaylıkla oluşturulabiliyor. Tablo 1, dört ürün satın alan üç farklı müşteriyi gösteriyor: Aynur, Barış ve Ceyhun; Kitap, DVD, Oyuncak ve Kot Pantolon satın alıyorlar. Tabloda, kitap üzerinden gittiğimizde, tüm müşterilerin kitap satın aldığını görüyoruz (Bundan sonraki hesaplamalarımızın “satın aldı” dediğimizde 1’e, “satın almadı” dediğimizdeyse 0’a denk geldiğini varsayıyoruz). Kitap ve DVD arasındaki benzerlik 0,58 iken, Kitap ve Oyuncak veya Kot Pantolon arasındaki benzerlik 0,82 oluyor. DVD’ye baktığımızda, yalnızca Aynur’un DVD aldığını görüyoruz ama aynı zamanda Kitap ve Kot Pantolon aldığını da görüyoruz. DVD ve Kitap veya Kot Pantolon arasındaki benzerlik bu nedenle 1,0 olarak hesaplanıyor. Gördüğünüz gibi aradaki benzerlik her zaman ilişkili (çağrışımsal) olmuyor ama genellikle birçok ürün ve müşteri üzerinden benzerlikler artıyor. Bu örnek üzerinden Derya’nın Kitap sayfasına girdiğini düşünürsek, öncelikle Oyuncak veya Kot Pantolon’u eşit şekilde tavsiye edebiliriz; ardından da DVD’yi. Eğer DVD sayfasında geziniyorsa, Kitap ve Kot Pantolonu eşit şekilde tavsiye edebiliriz. Bu böyle devam eder…
Tablo 2, satın aldı/almadı verisinden çok, müşterilerin değerlendirmelerini temel alıyor (Bir müşteri satın aldıktan sonra herhangi bir değerlendirme yapmadıysa, satışa nötr bir rakam olarak 3’ü ekliyoruz). Kitap ve DVD arasındaki benzerliği 0,56, Kitap ve Oyuncak arasındakini 0,82, Kitap ve Kot Pantolon arasındakini de 0,70 olarak ele alıyoruz. Bu durumda Derya, Kitap sayfasına girdiğinde, kendisine sırasıyla Oyuncak, Kot Pantolon ve DVD tavsiye edilebilir.
BellKor
Henüz Türkiye’de hizmet vermeyen ünlü online film kiralama sitesi Netflix, CineMatch adında kendi geliştirdiği bir tavsiye algoritmasını kullanıyor. Bu film kiralama şirketi, 2006 yılında milyon dolarlık ödül vadeden bir yarışma düzenledi. Yarışmanın amacı, CineMatch tarafından sunulan tavsiyeleri geliştirebilecek kişileri bulabilmekti. Hedef, geniş Netflix veritabanındaki veri alt kümelerinde CineMatch’in puanını yüzde 10 oranında artırmaktı. Neredeyse üç yılın sonunda yarışmayı kazanan, BellKor adlı bir grup oldu.
Yarışmaya katılan gruplara 100 milyon puanın yer aldığı büyük bir veri kümesi verildi. Bir ila beş yıldız içeren her puanın aynı zamanda tarihi, başlığı, piyasaya çıkış yılı bilgileri ve kullanıcıyı temsil eden anonim bir numara vardı. Bunun yanı sıra yarışmacılara, gerçek puanları hariç olmak üzere aynı bilgilere sahip 2,8 milyon puan içeren özel bir veri kümesi verildi. Burada amaç, geniş veritabanına uygun bir algoritma yaratmak ve puanları tahmin etmek için bu algoritmayı özel veri kümesine uygulamaktı. Böylece Netflix, tahmin edilen puanların gerçek puanlara ne kadar yakın olduğuna bakacaktı.
BellKor’un kendi algoritmalarını uyumlu hâle getirmek için kullandığı strateji gerçekten de şaşırtıcı. Çünkü BellKor’un çözümü yalnızca tek bir algoritma değildi; daha çok, en iyi sonucu üretebilecek bir dizi algoritmik düğümün oluşturduğu bir sistemdi.
Tahmin mekanizmaları
İlk strateji, bir dizi temel tahmin mekanizması oluşturmaktı. Bu mekanizmalar bir kullanıcının puanlarını ortalama olarak tanımlar. Tüm filmlerin ortalama puanını 3,5 varsayalım. Bunun üzerinden, örneğin Yıldız Savaşları gibi belirli bir filmin değerlendirmesinin 4 çıktığını düşünelim. Bu demek oluyor ki Yıldız Savaşları ortalama bir filmden 0,5 oranında daha iyi. Bu durumda farazi kullanıcımızın da filmleri genellikle ortalamadan daha aşağıda değerlendirdiğini düşünelim: Örneğin, tüm filmlerin ortalama değerlendirmesini 3,2 puan olarak belirlediğini varsayalım. Bu kullanıcı, genel ortalamanın 0,3 oranında altında bir ortalama çıkardığı için, Yıldız Savaşları’na vereceği puana dair tahminimizi de 4 – 0,3 = 3,7 olarak sunabiliriz.
Kullanılan ikinci strateji, puanlamalarda zamanın önemli rol oynadığı gerçeğiydi. Öncelikle, bir filmin popülerliği zaman içinde değişecektir. Örneğin, bir film çok büyük bir sükse yapıp bir süre sonra unutulabilir veya bazıları ufak adımlarla başlar ama sonrasında klasikleşen filmler arasında yerini alabilir. Popülerlik, aynı zamanda oyuncuların veya yönetmenin daha iyi (veya daha kötü) bir filmle izleyici karşısına çıkmasıyla ve medyada iyi veya kötü yer almasıyla da doğru orantılıdır.
Zaman
Bir kullanıcının genel puanları zaman içinde de değişebilir, çünkü bahsi geçen o tek “kullanıcı”, aslında bir ev ahalisinden oluşuyor olabilir; dolayısıyla puanlar da sürekli değişiklik gösterecektir. Bu sürecin arkasında psikolojik nedenler de olabilir. Örneğin, bir kullanıcının üst üste iyi değerlendirmeler yaptıktan sonra devamında gelen ve normalde daha düşük not alabilecek bir ürünü, daha yüksek puanla değerlendirmesine neden olabilir (veya tam tersi: Kullanıcı, kötü filmleri değerlendirdikten sonra, hemen ardından gelen iyi bir filmi beklenenden daha düşük bir puanla değerlendirebilir).
Bir diğer strateji de kısmen zamana bağlıdır: Kullanıcı, “toplu iş bitirme” eylemine girişir ve bir gün içinde, yakın zamanda izlediği tüm filmleri puanlamaya alır. Kullanıcı, filmleri birbirinden bağımsız şekilde puanlamak yerine, değerlendirmelerin birbirini etkilemesine farkında olmadan izin verme eğilimindedir (İzlediği filmlerin çoğunu beğendiyse, aradaki kötü filmler de beklenenden daha iyi bir not alır veya bunun tam tersi). Bu yönteme “frekans” denir.
BellKor geliştirme ekibi, o zamanlar modele uygun parametrelerin oluşturulması için bu yöntemleri matematiksel ve istatistiki düzeyde tanımlamıştı. Algoritma, deneme verilerinin kapsamlı bir alt kümesini çıkararak modeli üst üste çalıştırmış ve parametreleri tek tek değiştirmişti, ta ki geri kalan daha küçük alt kümelerin değerlendirmelerini tahmin edene kadar.
Tüm bu açıklamalardan sonra tahmin algoritmalarının tam bir bütünlük ve kesinlik taşımadığını görmüşsünüzdür. Ancak yine de karşınıza yeterince hızlı ve nispeten doğru tahminler geliyorsa, diğer detaylar pek de önemli değil. Tahmin motoru, Amazon için ayırt edici bir etken, Netflix için de üye olan müşterilerini elde tutmanın birincil şartı. Sonuçta Yıldız Savaşları’nın tüm devam filmlerini izlemiş olan bir müşteri, diğer filmleri kapsayan yeni tavsiyeler görmek isteyecek, aksi takdirde üyeliğini iptal edecektir.
ÜRÜN TAVSİYELERİNİN FİLTRELENMESİ
İster İdefix’ten bir kitap alın ister Hepsiburada.com’dan bir film, internet mağazaları sizden bir şekilde o ürünü puanlamanızı ister. Daha sonra satın alma ve değerlendirme işlemlerinizin bir kaydını tutarak, sizin istatistiksel bir portrenizi çıkarırlar. Bu verileri kullanarak, beğenmediğiniz ürünleri dışarıda tutup beğenileriniz doğrultusunda size yeni ürünler tavsiye ederler ve sonunda sizi daha çok satın almaya teşvik ederler. Peki, tüm bu algoritmalar nasıl çalışıyor?
Gazeteler
Tavsiye algoritmaları yalnızca internet mağazalarında kullanılmıyor, müşterilerinizi web sitesinde tutmak isteyen tüm şirketler bu yöntemlerden faydalanabilir. Örneğin New York Times, okuduğunuz haberi bitirdikten hemen sonra ilginizi çekebilecek başka bir habere yönlenebilmeniz için uygun bir tavsiye algoritması kullanıyor. Tavsiyeler, siteye giriş yaptıktan sonra ve belirli miktarda geçmiş ögesi oluşturduktan sonra değişmeye başlıyor çünkü sistem, o zamana kadar okuma tercihlerinizi anlamaya çalışıyor. O sitede zaman geçirmeniz muhtemelen başka bir siteye gitmeyeceğiniz anlamına geliyor ki bu da sitenin reklamcılarının gözünde, görüntülenme sayılarını ve tıklanma oranlarını artırıyor. Birçok gazete ise “en çok okunan” veya “en çok paylaşılan” ilkesi üzerinden gidiyor. Bu tavsiyeler, hiçbir şekilde kişiselleştirilmiş önerileri yansıtmıyor sadece çoğunluğu temsil ediyor.
Odak noktası… Slope One mekanizmaları
Slope One, kullanıcıların puanlarıyla ilgili aynı basit aritmetiği temel alan bir tahmin algoritmaları ailesi. Temelde bu tahmin mekanizmaları, iki ürünün arasındaki puan farkını, bu iki ürüne de not veren müşterilerin sonuçları üzerinden önceden hesaplamaya çalışıyor. Slope One algoritmaları, farklı dillerdeki açık kaynaklı kütüphaneleri nedeniyle uygulanması çok basit sistemler. Aynı zamanda, Amazon’un kullandığı üründen ürüne ortak filtreleme yönteminin aksine, patent gerektirmiyor ve oldukça doğru tahminler sunuyorlar.
Aşırı uyumlanma
Ana metinde bahsettiğimiz gibi, tahmin algoritmaları yüzde yüz bilimsel değil. Doğaları gereği istatistikle çok daha bağlantılılar çünkü elde olmayan verileri tahmin etmek için çeşitli formülleri eldeki verilere göre oturtmaya çalışıyorsunuz. Benzer süreçlerde olduğu gibi, bu kez de aşırı uyumlanma riskiyle karşı karşıya kalıyorsunuz; yani öncelikli verileri ve bu veriler arasındaki ilişkiyi açıklayacak bir formül yerine, daha çok rastgele gürültüyü ortaya koyan formüller ortaya çıkıyor. Aşırı uyumlanma, model için geliştirilen çok sayıda parametrenin ortaya çıkarılmasıyla tahmin edilebiliyor. Bu model de çok basit olmak yerine oldukça karmaşık olabiliyor. Netflix yarışmasında olduğu gibi, tahmin modeliniz geliştirilebilir ve belirli bir veri öbeği için özel olarak şartlandırılabilir. Ancak o zaman da bilinen bilgileri temel alarak değil, bilinmeyen bazı veri kümelerini temel alarak kullanılabilecektir.