Blog,  Mühendislik,  PROGRAM

Cohort analizi

Cohort analizi, belirli bir grup insanın davranışlarını, özelliklerini veya diğer ölçümlerini zaman içinde izleyen ve karşılaştıran bir analiz yöntemidir. Genellikle pazarlama, müşteri davranışı, insan kaynakları ve kullanıcı deneyimi gibi alanlarda kullanılmaktadır.

Cohort analizi, belirli bir grup insanın ortak özelliklere sahip olup olmadığını belirlemek için kullanılır. Örneğin, bir şirketin farklı müşteri gruplarının davranışlarını karşılaştırarak, hangi grupların daha değerli olduğunu belirlemesine yardımcı olabilir.

Kohort analizinde, “her yeni grup [kohort] yeni bir kullanıcı grubuyla başlama fırsatını sağlar şirketin yalnızca mevcut sorguyla ilgili verilere bakmasına ve buna göre hareket etmesine olanak tanır.

Örneğin e-ticarette son iki hafta içinde kaydolan ve satın alma işlemi gerçekleştiren müşteriler bir grup oluşturabilir. Yazılım için belirli bir yükseltmeden sonra kaydolan veya platformun belirli özelliklerini kullanan kullanıcılar bir grup oluşturabilir.

Belirli bir platformdaki oyuncuların grup analizine bir örnek: Uzman oyuncular, grup 1, yeni kaydolan grup 2’ye kıyasla gelişmiş özelliklere ve gecikme süresine daha fazla önem verecek. Bu iki grup belirlendikten ve analiz çalıştırıldığında, oyun şirkete iki gruba özgü verilerin görsel bir temsili sunulacaktır. Yükleme sürelerindeki hafif bir gecikmenin ileri düzey oyuncular için önemli bir gelir kaybına yol açtığı, yeni kaydolanların ise bu gecikmeyi fark etmediği görüldü. Şirket, tüm müşterilerinin genel gelir raporlarına bakmış olsaydı, bu iki grup arasındaki farkları göremezdi. Kohort analizi, bir şirketin kalıpları ve eğilimleri yakalamasına ve hem gelişmiş hem de yeni oyuncuları mutlu etmek için gerekli değişiklikleri yapmasına olanak tanır. 

Kohort Analizi Nasıl Kullanılır?

Pazarlama profesyonelleri için Google Analytics gibi hizmetler tarafından sağlanan kohort analiz araçları, web sitesinin edinme tarih aralığını kullanıcıyı elde tutma oranına göre içeren bir kohort tablosu biçiminde bir kohort analiz raporu oluşturur. Bir grubu analiz etmek için kullanılabilecek popüler ölçüm örnekleri şunları içerir: dönüşüm oranları, kullanıcı başına hedef tamamlama sayısı, kullanıcı başına sayfa görüntüleme, kullanıcı başına gelir, kullanıcı başına oturum, kullanıcı başına oturum süresi ve kullanıcı başına işlemler. 

Gelişmiş kohort analizi araçları, veri gruplarını daha da daraltmak için satın alma kohortları ile davranışsal kohortlar veya mobil kullanıcılar ile masaüstü kullanıcıları gibi daha fazla segmentasyon seçeneği de sunar. Tarih aralığı ve kohort boyutu tamamen özelleştirilebilir ve projenin kapsamına göre ayarlanabilir. 

Tipik olarak analiz sürecinde yer alan adımlar şunları içerir:

  • Ham verilerin çıkarılması : Ham veriler MySQL kullanılarak bir veritabanından alınır ve kullanıcı özelliklerinin birleştirilebileceği ve daha fazla bölümlere ayrılabileceği elektronik tablo yazılımına aktarılır. 
  • Grup tanımlayıcıları oluşturma : Kullanıcı verilerini, katılma tarihi, ilk satın alma tarihi, mezuniyet yılı, belirli bir yer ve saatteki tüm mobil cihazlar vb. gibi farklı gruplar halinde gruplandırın. 
  • Yaşam döngüsü aşamalarının hesaplanması : Kullanıcılar gruplara ayrıldıktan sonra, yaşam döngüsü aşamalarını hesaplamak için her müşteriye atfedilen olaylar arasındaki süre ölçülür.
  • tablolar ve grafikler oluşturma : pivot tablolar ve grafikler, kullanıcı verileri karşılaştırmalarının görsel temsillerini oluşturur ve kullanıcı verilerinin birden çok boyutunun toplanmasının hesaplanmasına yardımcı olur.

Örnek Çözüm Yolu

Yapmak istediğimiz ilk şey, ifadeyi çalıştırarak MySQL veritabanımızın yapısına bir göz atmak 

SHOW TABLES.

Tablo listesine baktığımızda muhtemelen en çok Kullanıcılar ve Siparişler tablolarıyla ilgileniyoruz. DESCRIBE Bu ifadeyi daha derine inmek için kullanalım .

DESCRIBE Users;
DESCRIBE Orders;

Görünüşe göre bu tablolar ihtiyacımız olan tüm bilgileri içeriyor:

  • Users.Created_Date– Kullanıcının kayıt tarihi.
  • Users.Campaign_ID– Onları web sitemize getiren pazarlama kampanyası.
  • Orders.Order_ID– Kullanıcı tarafından verilen siparişler.
  • Orders.Created_Date– Siparişin verildiği tarih.
  • User_ID– Kullanıcılar ve Siparişler tablomuzu bağlayacak yabancı anahtar.

Artık ilgili sütunları belirlediğimize göre, SELECT verileri doğrulamak için aşağıdaki ifadeyi çalıştırabiliriz.

SELECT
Orders.Order_ID AS 'Order ID',
Orders.Created_Date AS 'Order Date',
Users.User_ID AS 'User ID',
Users.Created_Date AS 'Join Date',
Users.Campaign_ID AS 'Campaign ID'
FROM Orders
JOIN Users ON Orders.User_ID = Users.User_ID

Her iki tablodaki verileri birlikte görüntüleyebilmemiz için temel bir MySQL birleşimi kullanıyoruz. TABLE.COLUMNBirleştirmeleri kullanırken, belirsiz sütun adlarını hesaba katacak şekilde tablo ve sütun adını belirtmemiz gerekir . Bu olmadan MySQL, hem ve tablolarında bulunan Created_Dateve alanlarını ayırt edemezdi .User_IDOrdersUsers

Sonuçlarımızı daha okunaklı hale getirmek için ASsütunlarımız için anlamlı bir takma ad oluşturmak üzere bir ifade kullanıyoruz. Örneğin, için ‘Katılım Tarihi’ takma adını oluşturmak Users.Created_Date.

Tarih sütunu tarihi milisaniyeye kadar gösterir ancak bizim ilgilendiğimiz tek şey aydır. DATE_FORMATBize yalnızca siparişin tarihini vermek için işlevi kullanacağız .

DATE_FORMAT(Orders.Created_Date, '%Y%m') AS 'Month of Order Date',
DATE_FORMAT(Users.Created_Date, '%Y%m') AS 'Month of Join Date',

Ayrıca ifademizden Users.User_ID’yi çıkaracağız çünkü bu bilgi alakalı değil, bu sütunu yalnızca tablolarımıza katılmak için kullanıyoruz.

Birleşim için kullanırken select ifadenize bir sütun eklemeniz gerekli değildir. Aşağıda katıldığımızı Orders.User_ID = Users.User_IDancak bu sütunlardan hiçbirini seçmediğimizi fark edeceksiniz.

SELECT
Orders.Order_ID AS 'Order ID',
DATE_FORMAT(Orders.Created_Date, '%Y%m') AS 'Month of Order Date',
DATE_FORMAT(Users.Created_Date, '%Y%m') AS 'Month of Join Date',
Users.Campaign_ID AS 'Campaign ID'
FROM Orders AS 'Orders'
JOIN Users AS Users ON Orders.User_ID = Users.User_ID

Artık yaklaşıyoruz. Ancak asıl bilmek istediğimiz şey, bir kullanıcının kaydolduktan sonra ne kadar süre aktif kaldığıdır. Bu, sipariş ile katılma tarihi arasındaki farka bakılarak belirlenebilir. Bu değeri bulmak için fonksiyonu kullanıyoruz PERIOD_DIFF.

PERIOD_DIFF(DATE_FORMAT(Orders.Created_Date, '%Y%m'),
DATE_FORMAT(Users.Created_Date, '%Y%m')) AS 'Difference In Months'

İşte son sorgumuz:

SELECT
Orders.Order_ID AS 'Order ID',
DATE_FORMAT(Orders.Created_Date, '%Y%m') AS 'Month of Order Date',
DATE_FORMAT(Users.Created_Date, '%Y%m') AS 'Month of Join Date',
PERIOD_DIFF(DATE_FORMAT(Orders.Created_Date, '%Y%m'),
DATE_FORMAT(Users.Created_Date, '%Y%m')) AS 'Difference In Months',
Users.Campaign_ID AS 'Campaign ID'
FROM Orders AS Orders
JOIN Users AS Users ON Orders.User_ID = Users.User_ID

Oldukça iyi görünüyor ancak bu tablodaki bilgilerin tümüne ihtiyacımız yok. ‘Sipariş Ayı Tarihi’ ve ‘Katılım Tarihi Ayı’ sütunlarını kaldıracağız.

COUNT Ayrıca sipariş sayısını listelemek yerine saymak için bir toplama kullanacağız .

COUNT(DISTINCT Orders.Order_ID) AS 'Count of Orders'

Şimdi aşağıdaki sorgumuz var:

SELECT
COUNT(DISTINCT Orders.Order_ID) AS 'Count of Orders',
PERIOD_DIFF(DATE_FORMAT(Orders.Created_Date, '%Y%m'),
DATE_FORMAT(Users.Created_Date, '%Y%m')) AS 'Difference In Months',
Users.Campaign_ID AS 'Campaign ID'
FROM Orders AS Orders
JOIN Users AS Users ON Orders.User_ID = Users.User_ID

Tüm verilerimiz nereye gitti? Bir sayım gerçekleştirdik Order_IDancak verileri nasıl gruplandırmak istediğimizi belirtmedik, dolayısıyla sorgumuz veritabanımızdaki tüm siparişleri saydı ve tek bir satırda döndürdü.

Verilerimizi anlamlı gruplar halinde gruplamak için GROUP BYve ifadeleri ekleyelim .ORDER BY

GROUP BY 'Difference In Months', 'Campaign ID'
ORDER BY 'Difference In Months' ASC

Son sorgumuz şuna benzer:

SELECT
PERIOD_DIFF(DATE_FORMAT(Orders.Created_Date, '%Y%m'), DATE_FORMAT(Users.Created_Date, '%Y%m')) AS 'Difference In Months',
Users.Campaign_ID AS 'Campaign ID',
COUNT(DISTINCT Orders.Order_ID) AS 'Count of Orders'
FROM Orders AS Orders
JOIN Users AS Users ON Orders.User_ID = Users.User_ID
GROUP BY 'Difference In Months', 'Campaign ID'
ORDER BY 'Difference In Months' ASC;

Kohort analizimiz başarılı ve anlamlı görsel veriler elde etmek için verilerimizi çeşitli şekillerde grafiklendirebiliyoruz.

Bir cevap yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir