Sosyal İşbirlikçi Filtreleme

Bu yıl üniversitede 4. yılım malum. Hal böyle olunca tez çalışması yapmak gerekti. Bende 1-2 yıl önceden belirlediğim konuda yapmaya karar verdim tezimi. O konu ise Tavsiye Sistemleri. Hem okuduğum bölüm olan istatistiği hemde ilgi alanım ve mesleğim gördüğüm yazılımı bir arada barındırıyordu. Bu yüzden seçmiştim bu konuyu. Hikayeyi bırakırsak sizlerle bu konuda öğrendiklerimin bir kısmını paylaşacağım.

Tavsiye Sistemleri ana başlığı altında kendime seçtiğim alan İşbirlikçi Filtreleme (collaborative filtering) oldu. Tavsiye sistemleri biraz daha geniş bir tanım. Öncelikle İşbirlikçi Filtreleme’yi araştırmakla başladım.

Peki nedir bu İşbirlikçi Filtreleme

İşbirlikçi Filtreleme, bazı öneri sistemlerini kullanan bir tekniktir[1]. İF  yaklaşımının altında yatan temel varsayım geçmişte kabul edilenlerin gelecekte de kabul edilebileceğidir[2]. İF genel olarak iki farklı biçimde uygulanır[3]. Bunlar

  • Öğe Bazlı (Item Based) İşbirlikçi Filtreleme
  • Kullanıcı Bazlı (User Based) İşbirlikçi Filtreleme

Kullanıcı bazlı filtrelemede kullanıcılar beğenileri ile karşılaştırılır ve kullanıcı için en yakın kullanıcı bulunarak onun diğer beğendikleri kullanıcıya önerilir. Öğe bazlı filtrelemede ise  bir öğe-öğe matrisi ile öğeler arası benzerlikler hesaplandıktan sonra o öğeyi beğenenlere benzer öğeler önerilir.

Bunu bir örnekle açıklamak gerekirse;

Öğe bazlı İşbirlikçi Filtreleme ile Kullanıcı bazlı İşbirlikçi Filtrelemenin karşılaştırılması

 

Şekildeki durumda, kullanıcı bazlı filtrelemede kullanıcılar eşleştirildiğinden 3. kullanıcıya üzüm ve portakal önerilirken öğe bazlı filtrelemede öğeler eşleştirildiğinden 3. Kullanıcıya yalnızca üzüm önerilir[4].

Genel olarak İF’nin sözel anlatımı bu kadar. Kafanızda birşeyler canlanmıştır. Birazda uygulama yapalımki iyice otursun kafalarda :).

Sosyal Ağlar yardımı ile İşbirlikçi Filtreleme

Uygulamayı anlaşılabilir olması açısından basit düzeyde tuttum. Amacımız bir kullanıcının beğendiği filmlere göre henüz beğenmediği ama beğenmesi yüksek olasılıklı filmleri önermek. Kullanıcı verileri için (örneğin kullanıcının beğendiği filmler) Facebook verilerini kullandım, bu sayede İF’nin ilk kullanıcı hakkında bilgi sahibi olmama (cold start) problemine de bir çözüm yolu getirmiş oldum. Önerilebilecek filmleri bulabilmek için ise hazır veritabanı kullanmak yerine ise gene Facebook verilerini kullandım. Önerilecek filmleri de kullanıcının arkadaşlarının beğendiği filmler üzerinden buluyor. Ayrıca bir bildiri için hazırlanan tez çalışmama da şuradan bakabilirsiniz.

Uygulamaya şu adresten ulaşabilirsiniz. Bu arada bu uygulamanın gelişmiş versiyonunu yeni projem olan Fragmanda sitesinde kullanacağım. Öğrendiklerimizi kullanmamız gerek, yoksa ne anlamı var değil mi? 🙂

Kaynaklar:

  1. http://en.wikipedia.org/wiki/Collaborative_filtering
  2. http://degiske.com/2010/10/10/isbirlikci-filtreleme
  3. http://ojs.academypublisher.com/index.php/jsw/article/viewFile/0507745752/1954
  4. http://cuihelei.blogspot.com/2012/09/the-difference-among-three.html