Content Based Recommendation (İçerik Temelli Filtreleme)

Buket Yüce
4 min readJun 5, 2022

--

Bir önceki yazımda birliktelik kuralı temelli tavsiye sisteminden bahsetmiştim.

Bu yazımda ise içerik temelli filtrelemeden bahsedeceğim😊

Content Based Recommendation (İçerik Temelli Filtreleme):

Kısaca; ürünlerin meta bilgilerine, açıklamalarına, özelliklerine göre benzerlikler üzerinden yapılan öneri sistemleridir.

Bir örnek üzerinden açıklamak istiyorum. Varsayalım ki kullanıcının izlediği bir filmi biliyoruz. Bu kullanıcıya bir şeyler önermek istiyoruz fakat elimizde başka hiçbir bilgi yok.

Filmin açıklama bölümüne baktığımızda bazı kelimelerin altı çizilebilir. Bu filmin meta bilgisidir. Başka şeyler de olabilir; oyuncu bilgisi, yönetmen bilgisi, kategori, vb… Ancak bu örnekte açıklamaya odaklanalım. Bu filme yönelik elimizde olan açıklamaya benzer olan açıklamaları bulmamız ve kişiye önermemiz lazım. Bu açıklamayı kullanarak matematiksel bir form elde etmeli, yani metni ölçülebilir bir şeye dönüştürmeli ve diğer filmlerle arasında kıyaslama yapabilmeliyiz.

  • 1. Metinleri matematiksel oalrak temsil et (Metinleri Vektörleştirme)
  • 2. Benzerlikleri hesapla

Metinleri vektörler aracılığıyla temsil etmenin bazı yolları vardır. Yaygın kullanılan bazı yöntemlerden olan Count Vector (Word Count) ve TF-IDF’ den bahsetmek istiyorum.

Count Vector (Word Count):

  • Elimizde çeşitli filmler ve açıklamalar var.
  • Count Vector yöntemiyle açıklamalar vektörleştirilmiş.
  • Burada n tane kelime var. Bu kelimeler bütün filmlerin açıklamalarında yer alan eşsiz kelime sayısı kadar.
  • m tane filmimiz var ve bunlar sanki tek bir film gibi kabul edilip, bütün açıklamalarına odaklanılıp bütün açıklamalardaki eşsiz kelimeler sütunlara yerleştirilmiş ve buna karşılık satırlarda yer alan filmlerde kelimelerden kaçar tane olduğu işlenmiş.
  • Bu bir metin vektörleştirme yoludur.
  • Bu tabloda Öklid uzaklıklarını hesaplayarak iki film arasındaki benzerliği hesaplayabiliriz.

TF-IDF:

Kelimelerin hem kendi metinlerinde, hem de bütün odaklandığımız verideki geçme frekansları üzerinden bir normalizasyon işlemi yapar.

Oluşturacak olduğumuz kelime vektörlerini, doküman terim matrisini, bütün dokümanları göz önünde buldurarak ayrıca terimlerin frekanslarını da göz önünde bulundurarak genel bir standartlaştırma işlemi yapar.

Böylece Count Vector yönteminden ortaya çıkabilecek olan bazı yanlılıkları giderir.

İçerik Temelli Filtreleme ile uçtan uca bir projeyi ele alalım.

İŞ PROBLEMİ:

  • Yeni kurulmuş olan bir online film izleme platformu kullanıcılarına film önerilerinde bulunmak istemektedir.
  • Kullanıcıların login oranı çok düşük olduğu için kullanıcı alışkanlıklarını toplayamamaktadır. Bu sebeple iş birlikçi filtreleme yöntemleri ile ürün önerileri geliştirememektedir.
  • Fakat kullanıcıların tarayıcıdaki izlerinden hangi filmleri izlediklerini bilmektedir. Bu bilgiye göre film önerilerinde bulununuz.

VERİ SETİ HİKAYESİ:

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

Üzerİnde çalışacağımız overview değişkenine göz atalım.

Bu metinsel ifadeleri ölçülebilir matematiksel ifadelere çevirmemiz gerekiyor. TF-IDF yöntemini kullanarak bunu gerçekleştirebiliriz.

  • Dilde yaygınca kullanılan ve bir ölçüm değeri taşımayan (and, an, in, the, …) kelimeleri sildik.
  • Overview içinde NaN olanları boşluk ile değiştirdik.
  • tfidf matrisini oluşturduk. Metin vektörleri oluştu.

Şimdi de Cosine Similarity Matrisini Oluşturalım.

Bir göz atalım.

Skorlar geldi fakat bir anlam ifade ettiğini söyleyemeyiz. Çünkü skorları okuyamıtoruz ve anlayamıyoruz.

Benzerliklerine Göre Önerilerin Yapılması

Veriyi değerlendiremedik çünkü filmlerin isimleri yoktu.

Ayrıca Tittle’larda çoklama söz konusu.

Bu sorunları da giderdik.

Örnek olarak Sherlock Holmes filmini ele alalım. Bu film ile bütün diğer filmler arasındaki benzerlik skorlarını artık görüntüleyebiliriz. En yüksek 10 skora sahip filmi kullanıcıya önerebiliriz.

Önerebileceğimiz filmleri bulduk 😊

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.