RFM Skorlama — Veriyi Hazırlama

Onur Boyar
Veri Bilimi Türkiye
2 min readSep 22, 2018
Kinkakuji tapınağı — Japonya

Bu yazımızda RFM Skorlamanın uygulamasına geçiyoruz. Kullanacağımız veri CD satış verisi olacak.

Adresine giderek CDNOW dataset (1/10th sample) dosyasını indirmeniz gerekiyor. Sonrası için R yeterli olacak!

Veriyi RStudio’ya yüklemek için

getwd()

setwd(“/Users/boyaronur/Desktop/CDNOW_sample”)

cdnow <- read.table(“CDNOW_sample.txt”)

Kodu yeterli olacak. getwd() fonksiyonu ile bulunduğumuz dizini öğrendik, sonrasında setwd() fonksiyonu ile çalıştığımız dizini ayarladık. CDNOW_sample.txt dosyası masaüstünde olduğundan dolayı dizini masaüstü olarak belirledim. Bu nedenle read.table fonksiyonuna yalnızca veri dosyasının ismini yazmam yeterli oldu.

Veride bulunan sütunlardan ilki tam veri setindeki müşteri ID’si iken ikinci sütun küçültülmüş veri setindeki ID numaraları. Biz şu an küçültülmüş veri setinde çalıştığımızdan dolayı ilk sütunu silip, diğer sütunları isimlendirebiliriz.

cdnow$V1 <- NULL
colnames(cdnow) <- c(“ID”, “TARIH”, “ADET”, “FIYAT”)
str(cdnow)

Bu işlemi yaptıktan sonra sıra veri dönüşümlerinde. ID’yi factore, TARIH’i ise date değişkenine dönüştürmemiz gerekiyor. Bunun için,

cdnow$ID <- as.factor(as.character(cdnow$ID))
cdnow$TARIH <- as.Date(as.character(cdnow$TARIH), “%Y%m%d”)

Kodu yeterli olacaktır.

Bu işlemden sonra sıra RFM skorlamayı hangi tarihten başlatacağımızı bulmakta. En son satışın gerçekleştiği günü referans günü yapalım. Bunun için en büyük tarih değerini bulmamız yeterli olacaktır. Bunu bulmak da oldukça kolay.

refDay <- max(cdnow$TARIH)
class(refDay)
as.numeric(refDay — cdnow$TARIH)

Kodu ile ilk olarak refDay değişkenine referans günümüzü, yani veri setimizde bulunan en son işlemin tarihini attık. refDay değişkeninden diğer tarihleri çıkardığımızda bile o tarihten kaç gün uzakta oldukları dönüyor.

Artık verimiz hazır! Şimdi Recency, Frequency ve Monetary değerlerini hesaplayalım.

library(dplyr)
rfm_recency <- cdnow %>% group_by(ID) %>% summarise(Recency = as.numeric(refDay) — as.numeric(max(TARIH)))

rfm_frequency <- cdnow %>% group_by(ID) %>% summarise(Frequency = n())

rfm_monetary <- cdnow %>% group_by(ID) %>% summarise(Monetary = sum(FIYAT))

dplyr paketi sayesinde bu işlemi kolayca yapabildik. Şu anda elimizde Recency, Frequency ve Monetary değerleri bulunuyor. Sıradaki dersimizde bu değerleri skorlayacağız!

Bu yazının video derslerine Veri Bilimi Türkiye YouTube kanalımızdan ulaşabilirsiniz.

--

--