Öneri Sistemlerine Giriş — Öneri Sistemleri 101 (Introduction to Recommender Systems)

Mustafa Serdar Konca
16 min readSep 13, 2022

--

Öneri sistemlerine genel bir bakış

Giriş

Son birkaç on yılda Youtube, Amazon, Netflix ve benzeri birçok web hizmetinin yükselişi ile tavsiye sistemleri hayatımızda giderek daha fazla yer almaya başladı.

E-ticaretten (Müşterilere ilgilerini çekebilecek ürünleri önermek), çevrimiçi reklamcılığa (kullanıcılara doğru içerikleri önermek, 80'lik Yusuf dedeye son teknoloji oyun bilgisayarı tavsiye etmemek gibi :) öneri sistemleri günlük hayatımızın her noktasında ve kaçınılmaz bir durumda yer almakta.

Öneri sistemleri, kullanıcılara doğru bir şekilde, gerçekten ilgilendikleri öğeleri önermeyi amaçlayan algoritmalardır (izlenecek filmler, okunacak kitaplar, satın alınacak ürünler).

Öneri sistemleri, verimli bir şekilde çalışabildikleri zamanda önemli ölçüde gelir artışı sağlıyabildikleri ve diğer rakiplerden hatırı sayılır ölçüde öne çıkmanın bir yolu olabildikleri için bazı endüstrilerde kritik bir öneme sahiplerdir.

Öneri sistemlerinin öneminin bir kanıtı olarak, Netflix’in 2009 yılında kendi algoritmasından daha iyi performans gösterebilen bir algoritma tasarlanması için yarışma düzenledi ve bu yarışmanın ödülü ise 1 MİLYON dolar oldu. Eğer dolar milyoneri olmak istiyorsanız hiç de fena bir noktada değilsiniz :)

Bu yazıda, tavsiye sistemlerinin farklı paradigmalarını inceleyeceğiz. Her biri için nasıl çalıştıklarına değinmeye çalışacağız, teorik temellerini tanımlayacağız ve güçlü, zayıf yönlerini tartışacağız.

Genel Yazının Hatları

İlk bölümde, öneri sistemlerinin iki ana paradigmasını gözden geçireceğiz: Collaborative and content based yöntemler.

İki bölümde ise, user-user, item-item ve matrix factorization gibi çeşitli collaborative filtering yöntemlerini açıklamaya çalışacağız. Bunun devamında ise, içerik tabanlı yöntemlere ve bunların nasıl çalıştığına değineceğiz.

Son olarak, bir tavsiye sisteminin nasıl değerlendirilebileceğini tartışacağız.

Content VS Collaborative

Bir tavsiye sisteminin amacı, kullanıcılara ilgili öğeleri önermektir. Bunu gerçekleştirebilmemiz için iki ana metot vardır:

  • Collaborative Filtering Methods
  • Content Based Methods

Şimdi bu iki ana başlığı inceleyelim.

Collaborative Filtering Methods

Öneri sistemleri için collaborative yöntemler, yeni öneriler üretmek için kullanıcılar(users) ve öğeler(items) arasında kaydedilen geçmiş etkileşimleri baz alan yöntemdir. Bu etkileşimler, “kullanıcı-öğe etkileşimleri matrisinde (user-item interactions matrix)” saklanır.

Collaborative yöntemlerdeki ana fikir, bu geçmiş kullanıcı-öğe (user-item) etkileşimlerden, benzer kullanıcıları ve/veya benzer öğeleri tespit etmek ve buna dayalı tahminler yürütmektir.

Collaborative Filtering algoritmalar, genellikle bellek tabanlı (memory based) ve model tabanlı (model based) yaklaşımlar olarak adlandırılan iki alt kategoriye ayrılır.

Memory based yaklaşımlar, herhangi bir modelin olmadığını varsayılarak doğrudan kayıtlı kullanıcı etkileşimlerini baz alır ve buna binaen en yakın komşu aramasına göre çalışır. Örnek olarak, ilgili kullanıcıya en yakın diğer kullanıcılar bulunur ve bu komşular arasındaki en popüler içerikler önerilir.

Model based yaklaşımlarda ise, use-item etkileşimleri açıklanmaya çalışılır ve yeni tahminler oluşturabilmek için mevcut etkileşimi anlamaya çalışan bir “üretken” model olduğunu varsayar.

Collaborative yaklaşımların en büyük avantajı, users veya items hakkında hiçbir bilgiye ihtiyaç duymamasıdır bu nedenle birçok durumda kullanılmatadırlar. Ayrıca, kullanıcılar öğelerle ne kadar çok etkileşime girerse, yeni öneriler o kadar doğru olur: Sabit bir kullanıcı ve öğe kümesi için, zaman içinde kaydedilen yeni etkileşimler yeni bilgiler getirir ve sistemi giderek daha etkili hale gelmiş olur.

Bununla birlikte, tavsiyelerde bulunmak için yalnızca geçmiş etkileşimleri dikkate aldığımızda, collaborative filitreleme metotları “soğuk başlatma probleminden (cold start problem)” muzdariptirler.

Yeni kullanıcılara herhangi bir şey önermek veya herhangi bir kullanıcı için yeni bir item önermek imkansızdır. Ya da anlamlı sayıda elimizde user veya item etkileşimi yoktur.

Bu dezavantaj farklı şekillerde ele alınabilir:

  • Rastegele user’a rastgele items tavsiye edebilmek için yeni users veya yeni items baz alma (random strategy).
  • En çok aktif users’a popüler items’lerı tavsiye edebilmek için yeni users veya yeni items baz alma (maximum expectation strategy).
  • Çeşitli user’lara çeşitli items’leri tavsiye edebilmek için yeni users veya yeni items baz alma (exploratory strategy).
  • Son olarak ilk etapta users veya items için non-collaborative method kullanmak.

Şimdi, temel olarak üç klasik collaborative filtering yaklaşımı sunacağız: iki memory based yöntem (user-user ve item-item) ve bir model based yaklaşım (matrix factorisation).

İçerik Tabanlı Yöntemler (Content Based Methods)

İçerik tabanlı yaklaşımlar yalnızca user-item etkileşimlerine dayanan collaborative yöntemlerden farklı olarak, users ve/veya items hakkında ek bilgiler kullanır. Bu bahsettiğimiz duruma bir film öneri sisteminden örnek vermemiz gerekirse, kullanıcının yaş, cinsiyet, meslek gibi kişisel bilgileri (users) olabileceği gibi kategori, ana karakterler, film süresi ve diğer karakterler gibi film hakkındaki (items) bilgiler de olabilir.

İçerik tabanlı methotlardaki düşünce, user-item etkileşimlerinin gözlemlenmesi ile saptanmış features’lar doğrultusunda bir model inşa etmektir.

Böyle bir modeli oluşturduktan sonra işimiz çok kolay olacak. Sadece ihtiyacımız olan yeni kullanıcının yaş cinsiyet gibi bilgileri ve bu bilgiler doğrultusunda ilk film önerilerimizi gerçekleştirebileceğiz.

İçerik tabanlı yöntemler, collaborative yaklaşımlara göre cold start probleminden çok daha az etkilenirler:

Yeni users veya items, mevcut karakter özellikleri ile tanımlanabilir ve böylece ilgili öneriler yapılabilir.

Bu yazının ilerleyen bölümlerinde, içerik tabanlı yaklaşımları daha fazla tartışacağız ve ilgili problemimize bağlı olarak, basitten çok daha karmaşık modellere kadar çeşitli sınıflandırma veya regresyon modellerini kullanabileceğimizi öğreneceğiz.

Modeller, Bias ve Variance

Şimdi bu kısımda daha önce bahsedilen yöntemler arasındaki temel farklara biraz odaklanalım. Modellerin bias ve variance durumlarını inceleyelim.

Memory based collaborative yöntemlerde, hiçbir model yoktur. Algoritmalar doğrudan user-item etkileşimleriyle çalışır. Users’lar items’larla etkileşimleri üzerinden temsil edilir ve öneriler üretmek için bu temsiller üzerinden nearest neighbours search yapılır.

Ortada latent bir model olmadığı varsayıldığından, bu yöntemler teorik olarak düşük bir bias ancak yüksek bir variance’a sahiptirler.

Model tabanlı collaborative yöntemlerde, bazı latent interaction modelleri varsayılır. Model; users ve items’ların kendi temsilleri üzerinden, user-item interactions değerlerini tekrar oluşturmak için eğitilmiştir. Sonrasında bu modele dayalı olarak yeni öneriler yapılabilir.

Model tarafından çıkarılan users ve items latent representations’ları, bir insan için yorumlanması zor olabilecek matematiksel anlamlara sahip olabilir.

User-item etkileşimleri için bir model düşünüldüğünde, bu yöntem teorik olarak latent modelin olmadığı yöntemlere göre daha düşük bir variance’a ve daha yüksek bias’a sahiptirler.

Son olarak, collaborative based yöntemlerde bazı latent interaction modeli de varsayılabilir. Ancak burada model, users’ların ve/veya items’ların temsilini tanımlayan içerikle sağlanır. Örnek olarak users’lar verilen özelliklerle temsil edilir ve her item için bu item’ı beğenen veya beğenmeyen kullanıcı profilleri modellenmeye çalışılır. Bu da, modele dayalı collabative yöntemlerde olduğu gibi, bir user-item etkileşim modeli gibi kabul edilir. Ancak, bu model daha kısıtlıdır (çünkü users’ların ve/veya items’ların temsili verilmiştir). Bu nedenle, yöntem en yüksek bias’a ancak en düşük variance’a (hight bias low variance) sahip olma eğilimindedir.

Memory Based Collaborative Yaklaşımlar

User-user ve item-item’ların temel özellikleri, yalnızca user-item etkileşim matrisinden gelen bilgileri kullanmalarıdır. Yeni öneriler üretmek için hiçbir modeli baz almazlar

User-user

User-user yöntemi, bir kullanıcıya yeni bir öneride bulunmak için kabaca en benzer “etkileşim profiline (interactions profile)” (en yakın komşular) sahip kullanıcıları belirlemeye çalışır ve bu komşular arasında en popüler olan (yeni, daha önce görmediği bir öğe olacaktır.) içeriği sunar.

Farz-ı misal bir kullanıcı için bir öneride bulunmak istiyoruz. İlk olarak, her kullanıcının, farklı items’ler ile olan ilişkisi etkileşim vektörü ile temsil edilir (etkileşim matrisinde bu “satır” olur.). Ardından, ilgili kullanıcı ile diğer tüm kullanıcılar arasında bir tür “benzerlik” hesaplanır. Bu benzerlikten kastımız, aynı items’ler üzerinde benzer etkileşimlere sahip iki user’ın yakın olarak düşünülmesidir. Her user için benzerlikler hesaplandıktan sonra, k-nearest-neighbours (KNN) tutulabilir ve aralarından en popüler items’ları önerebiliriz (Bu noktada ilgili kullanıcımızın henüz daha etkileşime girmediği items’ları öneririz).

Kullanıcılar arasındaki benzerliği hesaplarken, “ortak etkileşim” sayısının dikkatle düşünülmesi gerekiyor! Çünkü ilgili user ile yalnızca bir ortak etkileşimi olan %100 eşleşmeye sahip birinin; 50 ortak etkileşimi olan ve %98 eşleşmeye sahip birisine göre daha yakın sayılmasını istemeyiz.

Bu nedenle, birçok ortak items’la aynı şekilde etkileşime girdiyse iki kullanıcının benzer olabileceklerini düşünüyoruz. (benzer derecelendirme, benzer süre gezinme…).

Item-item

Bu fikrin mantığı; kullanıcının halihazırda “olumlu” etkileşimde bulunduğu item’lara benzer item’ları bulabilmektir.

Eğer bir çok kullanıcı belirli 2 items ile benzer şekilde etkileşime girdiyse bu iki item benzer kabul edilir.

Bu yönteme, users’ların kendi etkileşimleri sebebiyle var olmuş items’lardan ve bu items’lar arasındaki mesafeleri ölçeklendirmesi vesilesi sebebi ile “öğe merkezli (item-centred)” olarak bahsedilir.

Belirli bir user için bir öneride bulunmak istediğimizi varsayalım. İlk olarak, ilgili user’ın en çok sevdiği item’i ele alıyoruz ve onu her kullanıcının var olduğu etkileşim vektöründe temsil ediyoruz. Ardından, “en iyi item” ile diğer tüm item’lar arasındaki benzerlikleri hesaplıyoruz. Benzerlikler hesaplandıktan sonra, ilgili user için daha önce deneyimlemediği “en iyi item”ı k-en yakın komşuları (KNN) ile buluuyor ve bu item’ları kendisine öneriyoruz.

User-User ve Item-Item’ın Karşılaştırılması

User-User

User-user yöntemi, item etkileşimleri üzerinden benzer kullanıcıların aranmasını hedefliyor. Genel olarak, her kullanıcı yalnızca birkaç item’la etkileşime girdiğinden, bu durum bu yöntemin herhangi bir kayıtlı etkileşime (recorded interactions) karşı oldukça hassas olmasına sebebiyet verir (yüksek variance).

Öte yandan, nihai öneri yalnızca ilgilendiğimiz user’a benzer usar’lar için kaydedilen etkileşimlere dayandığından, daha kişiselleştirilmiş sonuçlar elde edebiliyoruz (düşük bias).

Item-Item

Item-item yöntemi, user-item etkileşimleri açısından benzer öğelerin aranmasına dayanır. Genel olarak, birçok user bir item’le etkileşime girdiğinden, komşuluk araması (neighbourhood search) tekli etkileşimlere karşı çok daha hassastır (düşük variance).

Her türden kullanıcıdan etkileşim geldiği için yöntem daha az kişiselleştirilmiştir (yüksek bias).

Bu nedenle, bu yaklaşım, user-user yaklaşımından daha az kişiselleştirilmiştir ancak daha sağlam sonuçlar verir. Buradaki sağlam sözcüğünden kastımız modelin neredeyse her durum için öneri verebileceğidir ama bu önerilerin kişiselleştirilmiş seviyleri görece daha düşüktür.

Yan Etkiler ve Karmaşıklık

Memory based collaborative filtrelemenin en büyük kusurlarından biri, kolayca ölçeklenememesidir.

Milyonlarca user’a ve milyonlarca item’a sahip sistemler için, en yakın komşu arama adımı, dikkatli bir şekilde tasarlanmadığında zorlu, karmaşık bir hale gelebilir (KNN algoritması, O(ndk) karmaşıklığına sahiptir. n kullanıcı sayısı, d öğe sayısı ve k isedikkate alınan komşu sayısıdır).

Devasa sistemler için hesaplamaları daha izlenebilir hale getirmek için, algoritma tasarımı yapılırken etkileşim matrisinin seyrekliğinden yararlanabilir veya yaklaşık en yakın komşular yöntemlerini (approximate nearest neighbours methods (ANN)) kullanabilir.

Öneri algoritmalarının çoğunda, popüler öğeler için “zengin-daha da zengin olsun (rich-get-richer)” etkisinden kaçınmak ve kullanıcıları “bilgi kısıtlama alanı (information confinement area)” olarak adlandırılabilecek bir alana sokmaktan kaçınmak için son derece dikkatli olmak gerekmektedir.

Başka bir deyişle, sistemimizin giderek daha fazla yalnızca popüler öğeleri önerme eğiliminde olmasını istemiyoruz. Kullanıcılarımızın sürekli sadece beğendikleri item’e çok yakın olan itemları önermekten çok sevebilecekleri yeni item’lerla tanışabilmelerini istiyoruz.

Model Based Collaborative Yaklaşımlar

Model based collaborative yalnızca user-item etkileşim bilgilerine dayanır ve bu etkileşimlerin açıklandığı bir gizli model (latent model) varsayar.

Matris Çarpanlarına Ayırma (Matrix Factorisation)

Matris çarpanlara ayırmanın ardındaki ana varsayım, hem kullanıcıları hem de öğeleri temsil edebileceğimiz ve bir kullanıcı ile bir öğe arasındaki etkileşimin elde edilebileceği, düşük boyutlu gizli özellik alanı oluşturmaktır.

Örneğin, bir kullanıcı-film derecelendirme matrisimiz olduğunu düşünün. Kullanıcılar ve filmler arasındaki etkileşimleri modellemek için şunları varsayabiliriz:

  • Filmleri oldukça iyi tanımlayan (ve birbirlerinden ayıran) bazı özellikler vardır
  • Bu özellikler aynı zamanda kullanıcı tercihlerini tanımlamak için de kullanılabilir (kullanıcının beğendiği özellikler için yüksek değerler, aksi takdirde düşük değerler verilebilir.)

Ancak bu özellikleri modelimize açıkça vermek istemiyoruz (ilerde değineceğimiz content based yaklaşımlarda bunu yapacağız.).

Bunun yerine, sistemin bu özellikleri kendi kendine keşfetmesine ve hem user’lar hem de item’lar için kendi temsillerini yapmasını tercih ediyoruz.

Bizlerin müdahalesi olmadığı, kendi kendine öğrenim yaptığı için çıkarılan özelliklerin (features) matematiksel bir anlamı vardır, sezgisel bir yorumu yoktur (bu nedenle, insan olarak bizlerin bu çıktıları anlaması imkansız olmasa da çok zordur). Yine de, bu tür bir algoritmadan ortaya çıkan yapıların insani sezgisel ayrıştırmaya son derece yakın sonuçlar verebildiği de gözlenmiştir.

Content Based Yaklaşımlar

Önceki iki bölümde esas olarak user-user, item-item ve matris çarpanlarına ayırma (matrix factorisation) yaklaşımlarını tartıştık. Bu yöntemler yalnızca user-item etkileşim matrisini dikkate alır ve bu nedenle collaborative filtering paradigmasıdır.

Şimdi içerik tabanlı paradigmayı tanımlayalım.

Content Based Yöntemler Kavramı (İçerik Tabanlı)

İçerik tabanlı yöntemlerde, öneri problemi ya bir sınıflandırma problemine (bir kullanıcının bir öğeyi “beğenip beğenmediğini” tahmin etme) ya da bir regresyon problemine (bir user tarafından bir item’a verilebilecek derecelendirmeyi tahmin etme) dönüşmektedir.

Her iki durumda da, elimizdeki user ve/veya item özelliklerine dayalı olacak bir model oluşturacağız (“içerik tabanlı” yöntemimizin “içeriği”dir bu).

Sınıflandırmamız (veya regresyonumuz) kullanıcı özelliklerine dayanıyorsa, yaklaşımın öğe merkezli olduğunu söyleriz: modelleme, optimizasyonlar ve hesaplamalar “öğe’ye göre” yapılır.

Bu durumda, “her user’ın bu item’ı beğenme olasılığı nedir?” (veya regresyon için “her user tarafından bu item’a verilen oran nedir?”).

Her bir item’la ilişkili model, doğal olarak bu item’la ilgili veriler üzerinde eğitilir ve birçok user item’la etkileşime girdiğinden, genel olarak oldukça yerinde modeller oluşturulmasına imkan verir.

Ancak modelin öğrendiği düşünülen etkileşimler birçok farklı user’dan gelmekte ve bu user’lar benzer özelliklere (similar characteristic)(features) sahip olsalar bile tercihleri ​​farklı olabilir.

Bunun anlamı, bu yöntem daha güçlü, sağlam, sonuçlar verse dahi kullanıcı merkezli yönteme (user-centred method) göre daha az kişiselleştirilmiş (more bias) sonuçlar verecektir.

Öğe özellikleriyle (item features) çalışıyorsak, yöntem kullanıcı merkezlidir (user-centred): modelleme, optimizasyonlar ve hesaplamalar “user tarafından” yapılır.

Daha sonra, “bu user’ın her bir item’ı beğenme olasılığı nedir?” (veya regresyon için “bu user tarafından her bir item’a verdiği veya verebileceği rate nedir?”).

Ardından, kendi kişisel verileri üzerinden eğitilmiş her bir kullanıcıya bir model entegre edebiliriz: Elde edilen model, yalnızca ilgili kullanıcının etkileşimlerini dikkate aldığından, öğe merkezli (item-centred) muadiline göre daha kişiseldir.

Ancak, çoğu zaman bir user nispeten az sayıda item’la etkileşime girmektedir bu nedenle elde ettiğimiz model, öğe merkezli (item-centred) bir modelden çok daha az sağlamdır (less robust).

Pratik bir bakış açısıyla, şunu söyleyebiliriz. Yeni bir user’a bazı bilgileri sormak ve ondan bu soruların cevaplarını almak, yeni bir item hakkında bilgi istemekten daha zordur. Çünkü user’lar ilk etapta sorulan sorulara çok fazla cevap vermek istememektedirler ama süreç içerisinde bir item’i oylamak veya bu item’i beğendiklerini belirtmekte çok daha fazla isteklidirler.

Ayrıca, ilgili kişinin karakteristik özelliklerinin karmaşıklığına bağlı olarak, oluşturduğumuz modelin, temel modellerden (sınıflandırma/regresyon için lojistik/doğrusal regresyon) derin sinir ağlarına kadar az ya da çok daha karmaşık olabileceğini fark etmeliyiz.

Son olarak içerik tabanlı yöntemlerin netam olarak user ne detam item merkezli olabileceğini belirtelim: Modellerimiz hem user hem de item hakkındaki bilgileri kullanabilir, örneğin bu iki özellik vektörünü istifleyerek bunları bir sinir ağı mimarisine sokabilir.

Item-centred Bayesian Classifier (Öge Merkezli Bayes Sınıflandırıcı)

Önce öge merkezli bir sınıflandırma durumunu ele alalım: Her öğe için, kullanıcı özellikleri veriliyor, girdi ve çıktı olarak “beğenme” veya “beğenmeme” şeklinde bir Bayes sınıflandırıcısı eğitilmiş oluyor. Burada amacımız bir sınıflandırma (classification) yapabilmek.

Belirli özelliklere sahip bir kullanıcının ilgili öğeyi beğenme olasılığı ile beğenmeme olasılığı arasındaki oranı hesaplamak istiyoruz.

User-centred Linear Regression (Kullanıcı Merkezli Doğrusal Regresyon)

Şimdi kullanıcı merkezli bir regresyon durumunu ele alalım. Her kullanıcı için, öğe özelliklerini girdi olarak alan ve çıktı olarak da bu öğenin derecelendirmesini (rating) veren basit bir doğrusal regresyon oluşturmak istiyoruz.

Kullanıcı-öğe etkileşim matrisini M olarak gösterebiliriz, öğrenilecek kullanıcı katsayıları olan X satır vektörlerini bir matriste tutuyoruz. Verilen öğe özellikleri olan Y satır vektörlerini de bir matriste tutuyoruz. Daha sonra, verilen bir i kullanıcısı için aşağıdaki optimizasyon problemini çözerek X_i’deki katsayıları öğreniyoruz.

Burada i’nin sabit olduğu ve bu nedenle ilk toplamın yalnızca i kullanıcısını ilgilendiren (kullanıcı, öğe) çiftleri tuttuğunu bilmeliyiz.

Bu sorunu tüm kullanıcılar için aynı anda çözersek şunu gözlemleyebiliriz: Optimizasyon problemi, ögeleri sabit tuttuğumuzda “alternatif matris çarpanlarına ayırma (alternated matrix factorisation)” da çözdüğümüz problem ile tamamen aynı olacaktır.

Bu gözlem, birinci bölümde bahsettiğimiz şeyin altını çiziyor: Model tabanlı işbirlikçi filtreleme yaklaşımları (model based collaborative filtering approaches) (matriks çarpanlarına ayırma gibi-such as matrix factorisation) ve içerik tabanlı yöntemlerin (content based methods) her ikisi de kullanıcı-öğe etkileşimleri için gizli bir model (latent model) varsayar ama model tabanlı işbirlikçi yaklaşımlar, hem kullanıcılar hem de öğeler için gizli temsilleri (latent representations) öğrenmek zorundayken, içerik tabanlı yöntemler, kullanıcılar ve/veya öğeler için insan tanımlı özellikler (upon human defined features) üzerine bir model oluşturur.

Hibrit Sistemler

İşbirlikçi filtreleme ve içerik tabanlı yaklaşımları birleştiren bu yöntem, birçok durumda en gelişmiş (state-of-the-art) sonuçları elde eder ve günümüzde birçok öneri sisteminde kullanılmaktadırlar.

Hibrit yaklaşımlarda yapılan kombinasyon esas olarak iki şekilde olabilir: İki modeli bağımsız olarak eğitebiliriz (bir işbirlikçi filtreleme modeli ve bir içerik tabanlı model olabilir) ve sonrasında bu önerileri birleştirebiliriz ya da doğrudan tek bir genel model olması doğrultusunda bunun için sinir ağlarını kullanabiliriz.

Bir Tavsiye Sisteminin Değerlendirilmesi

Herhangi bir makine öğrenimi algoritması için, hangi algoritmanın case’imize en uygun olduğuna karar vermek için öneri sistemlerimizin performanslarını değerlendirebilmemiz gerekmektedir.

Tavsiye sistemleri için değerlendirme yöntemleri temel olarak iki gruba ayrılabilir: İyi tanımlanmış ölçütlere dayalı değerlendirme ve esas olarak insan yargısına ve memnuniyetine dayalı değerlendirme.

Metrik Tabanlı Değerlendirme (Metrics Based Evaluation)

Öneri sistemimiz, derecelendirme tahminleri veya eşleştirme olasılıkları (ratings predictions or matching probabilities) gibi sayısal değerler veren bir modele dayanıyorsa, bu çıktıların kalitesini, örneğin ortalama kare hatası (MSE) gibi bir hata ölçüm metriği kullanarak çok klasik bir şekilde değerlendirebiliriz. Bu case’de model, mevcut etkileşimlerin yalnızca bir kısmı üzerinde eğitilir ve kalanlar üzerinden de test edilebilir.

Ek olarak öneri sistemimiz sayısal değerleri öngören bir modele dayanıyorsa, bu değerleri klasik bir eşikleme yaklaşımıyla (classical thresholding approach) da ikili (binarize) hale getirebiliriz (eşik değerin üzerindeki değerler pozitif, aşağıdaki değerler negatiftir.) ve bu sayede modeli daha “sınıflandırma yöntemiyle (classification way) ” değerlendirebilmiş oluruz.

Aslında geçmiş kullanıcı-öge etkileşim veri seti de binary şeklindedir ya da bunu da thresholding ile binary hale getirebiliriz. Ardından test veri setimiz ile bu binary çıktılarının doğruluğunu precision ve recall şeklinde değerlendirebiliriz.

Son olarak, sayısal değerlere dayalı olmayan ve yalnızca bir öneri listesi döndüren öneri sistemlerini düşünürsek (bir knn yaklaşımına dayalı kullanıcı-kullanıcı veya öğe-öğe gibi) yine de bu kullanıcılarımız için de benzer bir metrik (precision like metric) tanımlayabiliriz.

Bu precision’u tahmin etmek için, kullanıcımızın etkileşimde bulunmadığı, önerilen öğeleri dikkate alamayız ve yalnızca kullanıcı geri bildirimi aldığımız test veri kümesindeki öğeleri dikkate almamız gerekir.

İnsan Tabanlı Değerlendirme (Human Based Evaluation)

Bir tavsiye sistemi tasarlarken, sadece çok emin olduğumuz tavsiyeler üreten bir model elde etmekle sadece ilgilenemeyiz, aynı zamanda tavsiyelerin çeşitliliği ve açıklanabilirliği gibi bazı başka iyi özellikleri de dikkate almalıyız.

Collaborative bölümünde bahsettiğimiz gibi, bir kullanıcının daha önce bilgi kısıtlama alanı (information confinement area) olarak adlandırdığımız alanda sıkışıp kalmasını kesinlikle önlemek istiyoruz.

“Tesadüf (Serendipity) ” kavramı genellikle bir modelin böyle bir kısıtlama alanı yaratma veya yaratmama eğilimini ifade etmek için kullanılır (önerilerin çeşitliliği).

Önerilen öğeler arasındaki mesafeyi hesaplayarak tahmin edilebilen Serendipity, sınırlama alanları oluşturacağı için çok düşük olmamalıdır, ancak önerilerde bulunurken (exploration vs exploitation) kullanıcılarımızın ilgi alanlarını yeterince dikkate almadığımız anlamına gelmemesi için de bu değer çok yüksek de tutulmamalıdır.

Bu sayede, önerilen seçeneklerde çeşitlilik sağlanarak hem kullanıcımıza uygun hem de birbirine çok benzemeyen ürünler önerebilmiş oluyoruz.

Örneğin, bir kullanıcıya “Recep İvedik 1, 2 ve 3”'ü önermek yerine, “Recep İvedik 1”, “Eyvah Eyvah” ve “G.O.R.A” önermek daha iyi görünüyor: Sonradan önerdiğimiz 2 film, modelimiz tarafından kullanıcılarımızın ilgisini çekme olasılığı daha düşük olarak görülebilir, ancak çok benzer görünen 3 öğe önermek de iyi bir seçenek değildir.

Açıklanabilirlik, öneri algoritmalarının başarısının bir başka kilit noktasıdır. Gerçekten de, kullanıcılar belirli bir ögenin kendilerine neden tavsiye edildiğini anlamazlar ise, tavsiye sistemine olan güvenlerini kaybetme eğiliminde oldukları kanıtlanmıştır. Bu nedenle, önerilerde bulunurken bir öğenin neden önerildiğini belirten küçük bir cümle eklememiz faydalı olacaktır. Bu öğeyi beğenenler bunu da beğendi”, bu öğeyi beğendin, bu ilgini çekebilir gibi.

Son olarak, çeşitliliğin ve açıklanabilirliğin değerlendirilmesinin doğası gereği zor olabileceği gerçeğine ek olarak, test veri setine ait olmayan bir tavsiyenin kalitesini değerlendirebilmenin de oldukça zor olduğunu söyleyebiliriz: Kullanıcımıza önermek üzere olduğumuz tavsiyenin, ona önermeden önce nasıl sağlıklı bir tavsiye olduğunu anlayabiliriz?

Tüm bu nedenlerden dolayı, modeli “gerçek koşullarda” test etmek bazen cazip gelebilir.

Tavsiye sisteminin amacı bir eylemi önermek olduğu için (bu filmi izleyin, bu ürünü satın alın, bu makaleyi okuyun vb.) sistemin başarısını tavsiye ettiğimiz isteğin gerçekleşip gerçekleşmemesi üzerinden değerlendirebiliriz.

Örneğin, sistem bir A/B testi yaklaşımı izlenerek canlıya alınabilir veya yalnızca bir kullanıcı üzerinde test edilebilir.

Dipnotlar ve Genel Çıkarımlar

  • Öneri algoritmaları iki büyük ayağa ayrılabilir: Yalnızca kullanıcı-öğe etkileşim matrisine dayanan işbirlikçi (collaborative) yaklaşımlar (kullanıcı-kullanıcı, öğe-öğe ve matris çarpanlarına ayırma gibi) ve Kullanıcılar ve/veya öğeler hakkında ön bilgileri kullanan içerik (content) tabanlı yaklaşımlar (regresyon veya sınıflandırma modelleri gibi)
  • Bellek tabanlı işbirlikçi yöntemler herhangi bir gizli model (latent model) varsaymaz ve düşük önyargıya ancak yüksek varyansa (low bias but high variance) sahiptir. Model tabanlı işbirlikçi yaklaşımlar, hem kullanıcıları hem de öğe temsillerini sıfırdan öğrenmesi gereken gizli bir etkileşim (latent interactions) modelini varsayar. Bu yüzden daha yüksek bir önyargı ama daha düşük bir varyansa (higher bias, lower variance) sahiplerdir İçerik tabanlı yöntemler, kullanıcılar ve/veya açıkça verilen öğe özellikleri etrafında gizli bir model ile oluşturduğunu için en yüksek önyargı ve en düşük varyansa (highest bias, lowest variance) sahip oldukalrı varsayılır.
  • Tavsiye sistemleri, birçok büyük endüstride giderek daha önemli hale geliyor ve sistem tasarlanırken bazı ölçekler dikkate alınmalıdır (seyrekliğin daha iyi kullanımı, çarpanlara ayırma veya optimizasyon için yinelemeli yöntemler, en yakın komşu araması için yaklaşık teknikler gibi).
  • Tavsiye sistemlerinin değerlendirilmesi, ölçeklendirilmesi zordur: Değerlendirmeyi MSE, accuracy, recall ve precision gibi klasik metrikler ile yapabiliriz lakin çeşitlilik (diversity — serendipity) ve açıklanılabilirlik (explainability) gibi durumlar bu klasik metrik ile açıklanamaz. Bu tarz sistemleri gerçek durum değerlendirmesi (A/B testi veya numune testi — A/B testing or sample testing gibi) ile değerlendirebiliriz. Tabiki gerçek durum değerlendirmesine girişecek isek modelimize de belirli bir oranda güvenmemiz gerekmektedir.

Bu noktada artık yazımızın sonuna gelmiş oluyoruz. Öneri sistemleri her geçen gün gelişmelerin yaşandığı ve artık ürünlerin vazgeçilmez bir ihtiyacı haline geldi. Ben de dilim döndüğünce bu konu hakkındaki temel bilgileri vermeye çalıştım. Bu alana ilgi duyan herkese daha da derinlere inerek araştırma yapmalarını tavsiye ediyorum :)

Veriyle kalın, diğer yazılarda görüşmek üzere :)

--

--