İtalyan ekonomist Vilfredo Pareto, etkinin %80’inin nedenlerin %20’sinden geldiğini söyler; bu, 80/20 kuralı veya Pareto ilkesi olarak bilinir. Benzer şekilde, şirketlerin işlerinin %80’i müşterilerin %20’sinden gelir. Şirketlerin bu en iyi müşterileri belirleyip onlarla ilişkiyi sürdürmesi, düzenli gelir için kritik önemdedir. Müşterilerle uzun vadeli ilişkiyi sürdürmek için indirim, kampanya, kupon, puan ve hediye gibi sadakat programları planlanmalıdır.
Yeni bir müşteriyi hedeflemek, mevcut müşterileri elde tutmaktan daha maliyetlidir; çünkü yeni müşteri kazanımı için kaynak, zaman ve yoğun çaba harcamanız gerekir. Yapmanız gereken, mevcut müşterileri memnun etmektir. İş analistleri, CLTV (Customer Lifetime Value) kullanarak müşteri edinme maliyetini doğru şekilde hesaplar. CLTV, müşteriyle tüm ilişki süresince elde edilen toplam geliri gösterir. CLTV, gelecekte daha fazla gelir getirebilecek potansiyel müşterilere odaklanmaya yardımcı olur.
Customer Lifetime Value (CLTV)
"Customer Lifetime Value, bir müşterinin ilişki süresi boyunca şirkete sağlayacağı gelir veya kâr miktarını ifade eden parasal bir değerdir". CLTV, kısa vadeli müşterilere kıyasla uzun vadeli müşterilerin kazanımının sonuçlarını ortaya koyar. Müşteri yaşam boyu değeri (CLV), her şirket için satışla ilgili en önemli soruların yanıtlanmasına yardımcı olabilir:
En kârlı müşteriler nasıl belirlenir?
Bir şirket en iyi ürünü nasıl sunar ve en fazla geliri nasıl elde eder?
Kârlı müşteriler nasıl segmentlere ayrılır?
Müşteri edinmek için ne kadar bütçe harcanmalıdır?
Customer Lifetime Value Hesaplama
CLTV hesaplamak için pek çok yaklaşım vardır. Herkesin bu konuda kendi görüşü olabilir. CLTV’yi hesaplamak için geçmiş müşteri verilerine ihtiyaç duyarız; ancak yeni müşteriler için hesaplama yapamazsınız. Bu sorunu çözmek için İş Analistleri, yeni müşterilerin CLTV’sini tahmin eden makine öğrenmesi modelleri geliştirir. CLTV hesaplamasına yönelik bazı yaklaşımları inceleyelim:
1) Belirli bir döngüde müşterilerden elde edilen kâr/geliri toplayarak hesaplayabilirsiniz. Örneğin, müşteri son 3 yıldır sizinle ilişkiliyse bu 3 yıldaki toplam kârı toplayabilirsiniz. Kârı yıllık, altı aylık veya aylık ortalama alabilirsiniz; ancak bu yaklaşımda yeni müşteriler için öngörü modeli kuramazsınız.
2) Mevcut müşteriler için bir regresyon modeli kurun. Son altı aylık verileri bağımsız değişken, üç yıldaki toplam geliri bağımlı değişken olarak alın ve bu verilerle bir regresyon modeli oluşturun.
3) CLTV, RFM (Recency, Frequency, Monetary) değerleri kullanılarak da uygulanabilir. Daha fazla bilgi için bu eğitimime bakabilirsiniz.
4) Aşağıdaki denklemi kullanarak: CLTV = ((Ortalama Sipariş Değeri x Satın Alma Sıklığı)/Terk Oranı) x Kâr marjı.
Customer Value = Average Order Value * Purchase Frequency
Altyapı:
Average Order Value (AOV): Ortalama Sipariş Değeri, toplam gelirinizin toplam sipariş sayısına oranıdır. AOV, müşterinin bir siparişte harcadığı ortalama gelir tutarını temsil eder.
Average Order Value = Total Revenue / Total Number of Orders
Altyapı:
Purchase Frequency (PF): Satın Alma Sıklığı, toplam sipariş sayısının toplam müşteri sayısına oranıdır. Her müşterinin verdiği ortalama sipariş sayısını temsil eder.
Purchase Frequency = Total Number of Orders / Total Number of Customers
Altyapı:
Churn Rate: Terk Oranı, tekrar sipariş vermeyen müşterilerin yüzdesidir.
Customer Lifetime: Müşteri Yaşam Süresi, müşterinin kesintisiz olarak sipariş verdiği zaman aralığıdır.
Repeat Rate: Tekrar Oranı, birden fazla siparişi olan müşteri sayısının benzersiz müşteri sayısına oranı olarak tanımlanabilir. Örnek: Bir ayda 10 müşteriniz varsa ve bunlardan 4’ü geri dönerse tekrar oranınız %40’tır.
#import modulesimport pandas as pd # for dataframesimport matplotlib.pyplot as plt # for plotting graphsimport seaborn as sns # for plotting graphsimport datetime as dt
import numpy as np
Altyapı:
Veri Kümesini Yükleme
Önce pandas read CSV işlevini kullanarak gerekli Online Retail veri setini yükleyelim. Veriyi buradan indirebilirsiniz.
data = pd.read_excel("Online_Retail.xlsx")Altyapı:
Bazen karmaşık bir veri kümesiyle karşılaşırsınız. Yinelenen kayıtlarla uğraşmanız gerekebilir; bu da analizinizin sapmasına yol açar. Python’da pandas, tekrarlanan veya yinelenen kayıtları düşüren drop_duplicates() işlevini sunar.
#Top ten country's customer
filtered_data.Country.value_counts()[:10].plot(kind='bar')Altyapı:
<matplotlib.axes._subplots.AxesSubplot at 0x7fe677a887f0>Altyapı:
Verilen veri setinde müşterilerin çoğunun "United Kingdom" kaynaklı olduğunu gözlemleyebilirsiniz. Bu nedenle, Birleşik Krallık müşterileri için veriyi filtreleyebilirsiniz.
pandas’taki describe() işlevi, çeşitli özet istatistikleri elde etmek için kullanışlıdır. Bu işlev, sayım, ortalama, standart sapma, minimum ve maksimum değerler ile çeyreklikleri döndürür.
Burada, bazı müşterilerin negatif miktarda sipariş verdiğini görebilirsiniz ki bu mümkün değildir. Bu nedenle, Quantity değerini sıfırdan büyük olacak şekilde filtrelemeniz gerekir.
Burada, CLTV hesaplamak için gerekli sütunları filtreleyebilirsiniz. Yalnızca beş sütuna ihtiyacınız var: CustomerID, InvoiceDate, InvoiceNo, Quantity ve UnitPrice.
CustomerID müşterilerinizi benzersiz olarak tanımlar.
InvoiceDate müşterinin ürününüzle kaldığı gün sayısını hesaplamanıza yardımcı olur.
InvoiceNo işlem sayısını (sıklık) saymanıza yardımcı olur.
Quantity her işlemde satın alınan birim adedidir.
UnitPrice müşterinin satın aldığı her birimin fiyatıdır; toplam satın alma tutarını hesaplamanıza yardımcı olur.
Kâr marjı, yaygın olarak kullanılan bir kârlılık oranıdır. Toplam satışın yüzde kaçının kâr olarak elde edildiğini gösterir. Toplam satış üzerinden yaklaşık %5 kârımız olduğunu varsayalım.
Burada, verilen sütunları iki tür değişkene ayırmanız gerekir: bağımlı (veya hedef değişken) ve bağımsız değişkenler (veya özellik değişkenleri). Bağımsız değişken olarak son 6 ayı seçin.
Model performansını anlamak için veri kümesini eğitim ve test seti olarak bölmek iyi bir stratejidir.
train_test_split() işlevini kullanarak veri kümesini bölelim. Üç parametre geçirmeniz gerekir: özellikler, hedef ve test_set boyutu. Ek olarak, yeniden üretilebilirliği korumak için random_state’i tohum değeri olarak kullanabilirsiniz; bu, veriyi her bölüşünüzde sonuçların etkilenmeyeceği anlamına gelir. Ayrıca, random_state None ise, kayıtları rastgele seçmek için rastgele sayı üreteci np.random’ı kullanır. Yani bir tohum ayarlamazsanız, her seferinde farklıdır.
#split training set and test setfrom sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,random_state=0)Altyapı:
Model Geliştirme
Önce Doğrusal Regresyon modülünü içe aktarın ve bir Doğrusal Regresyon nesnesi oluşturun. Ardından, fit() işlevini kullanarak modelinizi eğitim setine oturtun ve predict() işlevini kullanarak test seti üzerinde tahmin yapın.
# import modelfrom sklearn.linear_model import LinearRegression
# instantiate
linreg = LinearRegression()# fit the model to the training data (learn the coefficients)
linreg.fit(X_train, y_train)# make predictions on the testing set
y_pred = linreg.predict(X_test)Altyapı:
# print the intercept and coefficientsprint(linreg.intercept_)print(linreg.coef_)Altyapı:
Doğrusal modelin genel uyumunu değerlendirmek için R-kare değerini kullanırız. R-kare, model tarafından açıklanan varyans oranıdır. R-kare değeri 0 ile 1 arasında değişir. Daha yüksek R-kare değeri daha iyidir; çünkü modelin daha büyük bir varyansı açıkladığını gösterir.
from sklearn import metrics
# compute the R Square for modelprint("R-Square:",metrics.r2_score(y_test, y_pred))Altyapı:
Bu modelin R-kare değeri yüksektir (0,96). Model, veriye daha iyi uyum sağlamaktadır.
Model Değerlendirme
Regresyon problemleri için aşağıdaki değerlendirme metrikleri kullanılır (Ritchie Ng):
Mean Absolute Error (MAE) hataların mutlak değerlerinin ortalamasıdır.
Mean Squared Error (MSE) hataların karelerinin ortalamasıdır.
Root Mean Squared Error (RMSE) hataların karelerinin ortalamasının kareköküdür.
# calculate MAE using scikit-learnprint("MAE:",metrics.mean_absolute_error(y_test,y_pred))#calculate mean squared errorprint("MSE",metrics.mean_squared_error(y_test, y_pred))# compute the RMSE of our predictionsprint("RMSE:",np.sqrt(metrics.mean_squared_error(y_test, y_pred)))Altyapı:
RMSE, MSE ve MAE’den daha popülerdir; çünkü RMSE’nin birimi y ile aynıdır ve bu nedenle daha yorumlanabilirdir.
CLTV’nin Artıları ve Eksileri
CLTV, etkili bir iş planı tasarlamanıza yardımcı olur ve işinizi ölçeklendirme fırsatı da sunar. CLTV, anlamlı müşteri segmentleri çıkarır; bu segmentler, farklı segmentlerin ihtiyaçlarını belirlemenize yardımcı olabilir.
Customer Lifetime Value bir araçtır, strateji değil. CLTV en kârlı müşterileri ortaya çıkarabilir; ancak onlardan nasıl kâr edeceğiniz stratejinize bağlıdır. Genel olarak CLTV modelleri kafa karıştırılabilir ve yanlış kullanılabilir. CLTV’ye aşırı odaklanma körlüğe yol açabilir. Şirketler yalnızca en iyi müşteri grubunu bulmaya, onlara odaklanmaya ve işi tekrarlamaya yönelir; ancak diğer müşterilere de dikkat etmek önemlidir.
Sonuç
Tebrikler, bu eğitimin sonuna ulaştınız!
Bu eğitimde, Customer Lifetime Value hakkında birçok detayı ele aldınız. CLTV’nin ne olduğunu, CLTV hesaplama yaklaşımlarını, Python’da sıfırdan CLTV uygulamasını, CLTV için bir tahmin modelini ve CLTV’nin artıları ile eksilerini öğrendiniz. Ayrıca, seçili sütun ve satırların özetlenmesi için groupby ve pivot tablo gibi bazı temel pandas kavramlarını da gördünüz.
Umarız artık kendi veri kümelerinizi analiz etmek için CLTV kavramını kullanabilirsiniz. Bu eğitimi okuduğunuz için teşekkürler!
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
İtalyan ekonomist Vilfredo Pareto, etkinin %80’inin nedenlerin %20’sinden geldiğini söyler; bu, 80/20 kuralı veya Pareto ilkesi olarak bilinir. Benzer şekilde, şirketlerin işlerinin %80’i müşterilerin %20’sinden gelir. Şirketlerin bu en iyi müşterileri belirleyip onlarla ilişkiyi sürdürmesi, düzenli gelir için kritik önemdedir. Müşterilerle uzun vadeli ilişkiyi sürdürmek için indirim, kampanya, kupon, puan ve hediye gibi sadakat programları planlanmalıdır.
Yeni bir müşteriyi hedeflemek, mevcut müşterileri elde tutmaktan daha maliyetlidir; çünkü yeni müşteri kazanımı için kaynak, zaman ve yoğun çaba harcamanız gerekir. Yapmanız gereken, mevcut müşterileri memnun etmektir. İş analistleri, CLTV (Customer Lifetime Value) kullanarak müşteri edinme maliyetini doğru şekilde hesaplar. CLTV, müşteriyle tüm ilişki süresince elde edilen toplam geliri gösterir. CLTV, gelecekte daha fazla gelir getirebilecek potansiyel müşterilere odaklanmaya yardımcı olur.
Customer Lifetime Value (CLTV)
"Customer Lifetime Value, bir müşterinin ilişki süresi boyunca şirkete sağlayacağı gelir veya kâr miktarını ifade eden parasal bir değerdir". CLTV, kısa vadeli müşterilere kıyasla uzun vadeli müşterilerin kazanımının sonuçlarını ortaya koyar. Müşteri yaşam boyu değeri (CLV), her şirket için satışla ilgili en önemli soruların yanıtlanmasına yardımcı olabilir:
Customer Lifetime Value Hesaplama
CLTV hesaplamak için pek çok yaklaşım vardır. Herkesin bu konuda kendi görüşü olabilir. CLTV’yi hesaplamak için geçmiş müşteri verilerine ihtiyaç duyarız; ancak yeni müşteriler için hesaplama yapamazsınız. Bu sorunu çözmek için İş Analistleri, yeni müşterilerin CLTV’sini tahmin eden makine öğrenmesi modelleri geliştirir. CLTV hesaplamasına yönelik bazı yaklaşımları inceleyelim:
1) Belirli bir döngüde müşterilerden elde edilen kâr/geliri toplayarak hesaplayabilirsiniz. Örneğin, müşteri son 3 yıldır sizinle ilişkiliyse bu 3 yıldaki toplam kârı toplayabilirsiniz. Kârı yıllık, altı aylık veya aylık ortalama alabilirsiniz; ancak bu yaklaşımda yeni müşteriler için öngörü modeli kuramazsınız.
2) Mevcut müşteriler için bir regresyon modeli kurun. Son altı aylık verileri bağımsız değişken, üç yıldaki toplam geliri bağımlı değişken olarak alın ve bu verilerle bir regresyon modeli oluşturun.
3) CLTV, RFM (Recency, Frequency, Monetary) değerleri kullanılarak da uygulanabilir. Daha fazla bilgi için bu eğitimime bakabilirsiniz.
4) Aşağıdaki denklemi kullanarak: CLTV = ((Ortalama Sipariş Değeri x Satın Alma Sıklığı)/Terk Oranı) x Kâr marjı.
Average Order Value (AOV): Ortalama Sipariş Değeri, toplam gelirinizin toplam sipariş sayısına oranıdır. AOV, müşterinin bir siparişte harcadığı ortalama gelir tutarını temsil eder.
Purchase Frequency (PF): Satın Alma Sıklığı, toplam sipariş sayısının toplam müşteri sayısına oranıdır. Her müşterinin verdiği ortalama sipariş sayısını temsil eder.
Churn Rate: Terk Oranı, tekrar sipariş vermeyen müşterilerin yüzdesidir.
Customer Lifetime: Müşteri Yaşam Süresi, müşterinin kesintisiz olarak sipariş verdiği zaman aralığıdır.
Repeat Rate: Tekrar Oranı, birden fazla siparişi olan müşteri sayısının benzersiz müşteri sayısına oranı olarak tanımlanabilir. Örnek: Bir ayda 10 müşteriniz varsa ve bunlardan 4’ü geri dönerse tekrar oranınız %40’tır.
Python’da CLTV Uygulaması (Formül Kullanarak)
Gerekli Kütüphaneyi İçe Aktarma
Veri Kümesini Yükleme
Önce pandas read CSV işlevini kullanarak gerekli Online Retail veri setini yükleyelim. Veriyi buradan indirebilirsiniz.
Çift Kayıtları Kaldırma
Bazen karmaşık bir veri kümesiyle karşılaşırsınız. Yinelenen kayıtlarla uğraşmanız gerekebilir; bu da analizinizin sapmasına yol açar. Python’da pandas, tekrarlanan veya yinelenen kayıtları düşüren drop_duplicates() işlevini sunar.
Veri İçgörülerine Geçelim
Verilen veri setinde müşterilerin çoğunun "United Kingdom" kaynaklı olduğunu gözlemleyebilirsiniz. Bu nedenle, Birleşik Krallık müşterileri için veriyi filtreleyebilirsiniz.
pandas’taki describe() işlevi, çeşitli özet istatistikleri elde etmek için kullanışlıdır. Bu işlev, sayım, ortalama, standart sapma, minimum ve maksimum değerler ile çeyreklikleri döndürür.
Burada, bazı müşterilerin negatif miktarda sipariş verdiğini görebilirsiniz ki bu mümkün değildir. Bu nedenle, Quantity değerini sıfırdan büyük olacak şekilde filtrelemeniz gerekir.
Gerekli Sütunları Filtreleme
Burada, CLTV hesaplamak için gerekli sütunları filtreleyebilirsiniz. Yalnızca beş sütuna ihtiyacınız var: CustomerID, InvoiceDate, InvoiceNo, Quantity ve UnitPrice.
Burada şu işlemleri yapacaksınız:
Sütunları Yeniden Adlandırma
Aşağıdaki formülü kullanarak CLTV hesaplayın:
1. Ortalama Sipariş Değeri Hesaplama
2. Satın Alma Sıklığı Hesaplama
3. Tekrar Oranı ve Terk Oranı Hesaplama
4. Kâr Marjı Hesaplama
Kâr marjı, yaygın olarak kullanılan bir kârlılık oranıdır. Toplam satışın yüzde kaçının kâr olarak elde edildiğini gösterir. Toplam satış üzerinden yaklaşık %5 kârımız olduğunu varsayalım.
5. Müşteri Yaşam Boyu Değeri Hesaplama
CLTV için Tahmin Modeli
CLTV tahmin modelini oluşturalım.
Burada, Doğrusal Regresyon Modeli kullanarak CLTV’yi tahmin edeceksiniz.
Önce yukarıda yüklenen ve filtrelenen verileri kullanalım.
InvoiceDate alanından ay ve yılı çıkarın.
Pivot tablo, sütunları girdi olarak alır ve veriyi iki boyutlu bir tabloda gruplayarak çok boyutlu bir özet sağlar.
Tüm ayların satışlarını toplayalım.
Özellik Seçimi
Burada, verilen sütunları iki tür değişkene ayırmanız gerekir: bağımlı (veya hedef değişken) ve bağımsız değişkenler (veya özellik değişkenleri). Bağımsız değişken olarak son 6 ayı seçin.
Veriyi Bölme
Model performansını anlamak için veri kümesini eğitim ve test seti olarak bölmek iyi bir stratejidir.
train_test_split() işlevini kullanarak veri kümesini bölelim. Üç parametre geçirmeniz gerekir: özellikler, hedef ve test_set boyutu. Ek olarak, yeniden üretilebilirliği korumak için random_state’i tohum değeri olarak kullanabilirsiniz; bu, veriyi her bölüşünüzde sonuçların etkilenmeyeceği anlamına gelir. Ayrıca, random_state None ise, kayıtları rastgele seçmek için rastgele sayı üreteci np.random’ı kullanır. Yani bir tohum ayarlamazsanız, her seferinde farklıdır.
Model Geliştirme
Önce Doğrusal Regresyon modülünü içe aktarın ve bir Doğrusal Regresyon nesnesi oluşturun. Ardından, fit() işlevini kullanarak modelinizi eğitim setine oturtun ve predict() işlevini kullanarak test seti üzerinde tahmin yapın.
Model Veriye Ne Kadar İyi Uyar?
Doğrusal modelin genel uyumunu değerlendirmek için R-kare değerini kullanırız. R-kare, model tarafından açıklanan varyans oranıdır. R-kare değeri 0 ile 1 arasında değişir. Daha yüksek R-kare değeri daha iyidir; çünkü modelin daha büyük bir varyansı açıkladığını gösterir.
Bu modelin R-kare değeri yüksektir (0,96). Model, veriye daha iyi uyum sağlamaktadır.
Model Değerlendirme
Regresyon problemleri için aşağıdaki değerlendirme metrikleri kullanılır (Ritchie Ng):
RMSE, MSE ve MAE’den daha popülerdir; çünkü RMSE’nin birimi y ile aynıdır ve bu nedenle daha yorumlanabilirdir.
CLTV’nin Artıları ve Eksileri
CLTV, etkili bir iş planı tasarlamanıza yardımcı olur ve işinizi ölçeklendirme fırsatı da sunar. CLTV, anlamlı müşteri segmentleri çıkarır; bu segmentler, farklı segmentlerin ihtiyaçlarını belirlemenize yardımcı olabilir.
Customer Lifetime Value bir araçtır, strateji değil. CLTV en kârlı müşterileri ortaya çıkarabilir; ancak onlardan nasıl kâr edeceğiniz stratejinize bağlıdır. Genel olarak CLTV modelleri kafa karıştırılabilir ve yanlış kullanılabilir. CLTV’ye aşırı odaklanma körlüğe yol açabilir. Şirketler yalnızca en iyi müşteri grubunu bulmaya, onlara odaklanmaya ve işi tekrarlamaya yönelir; ancak diğer müşterilere de dikkat etmek önemlidir.
Sonuç
Tebrikler, bu eğitimin sonuna ulaştınız!
Bu eğitimde, Customer Lifetime Value hakkında birçok detayı ele aldınız. CLTV’nin ne olduğunu, CLTV hesaplama yaklaşımlarını, Python’da sıfırdan CLTV uygulamasını, CLTV için bir tahmin modelini ve CLTV’nin artıları ile eksilerini öğrendiniz. Ayrıca, seçili sütun ve satırların özetlenmesi için groupby ve pivot tablo gibi bazı temel pandas kavramlarını da gördünüz.
Umarız artık kendi veri kümelerinizi analiz etmek için CLTV kavramını kullanabilirsiniz. Bu eğitimi okuduğunuz için teşekkürler!
Python’da müşteri verilerini analiz etmeyi daha fazla öğrenmek isterseniz, DataCamp’in Customer Analytics & A/B Testing in Python kursunu inceleyin.