Veri Madenciliğine Giriş (1. Kısım)

Veri madenciliği hakkında yazılar yazmaya başladım. Giriş yapmadan önce şunu belirtmek isterim. Yazılarım parça parça olacak ve öngördüğüm süre 2-3 haftalık dönemler. Ayrıca yazıdaki hedef kitlemin Endüstri Mühendisliği okumuş ya da bir şekilde istatistik işlerine bulaşmış kişiler olduğunu söylemek zorundayım. Buradaki yazılan her şey tamamıyla doğru olmayabilir. Yapmaya çalıştığım şeyi, öğrendiklerimi kendi süzgeçimden geçirdikten sonra aktarmak diye adlandıralım.

Giriş
Veri madenciliği nedir sorusuna cevap vermeden önce derslerde öğrendiğimiz (ya da öğrenemediğimiz) hipotez testlerine dayalı veri analizinden bahsetmek anlamlı olacaktır. Bunun sonraki kısımlarda işleri kolaylaştıracağını düşünüyorum.

Karşımıza çıkan birçok problemde belki bilmeden yaptığımız bir şeye açıklık getirmeye çalışacağım. Mühendislik deneylerinin tasarlanması (‘design of engineering experiments’) konusunda çalışmış/çalışan, ders almış kişiler bilirler. Bunlardaki temel amaç bir çıktıya potansiyel olarak etki ettiğini düşündüğümüz faktörlerin incelenmesidir. Aldığım bir derste yaptığım projeden örnek verecek olursam. Yoğurdun pekliği üzerine etki eden faktörleri incelemek istediğiniz bir deneyde sütün kaynamış olup olmadığı, süt sıcaklığı, maya miktarı, süt türü, bekleme süresi ve buzdolabında bekletme süresi potansiyel faktörlerdir. Bir çok evde yoğurt mayalama sürecine (proses) bilimsel açıdan yaklaşmadan istenilen düzeyde yoğurtlar yapılmaktadır (ister deneme yanılma olsun, ya da siz tecrübe deyin). Diyelim ki yukarıda bahsettiğim faktörlerin pekliğe etkisini belli güvenilirlik seviyelerinde ölçmek amacında olalım. Bunun için öncelikle faktörleri belirlememiz gerekir. Aşağıda belirtilen faktörlerin bizim için önemli olduğunu varsayalım (bir başka deyişle yoğurt mayalanmasında etkili rol oynadığını varsayalım):

  1. Süt sıcaklığı
  2. Süt türü
  3. Maya miktarı
  4. Bekleme süresi

Daha sonra bu faktörler için seviyeler belirlememiz gerekir ki, değişik faktör seviyelerinin yoğurt pekliği üzerine etkisini inceleyebilelim. Örneğin süt türü; yağsız, yarım yağlı ve tam yağlı olabilir. Bunlar belirlendikten sonra bizim için önemli olan çıktıyı belirlememiz gerekir. Şimdilik yoğurt pekliğini, yoğurt yapıldıktan sonra 10 dakikalık süzme sonucu çıkan şu miktarı olarak belirleyelim. Burada farklı çıktılar belirlemek mümkün.

Özetle 4 faktörümüzün farklı seviye kombinasyonlarında süzülen su miktarı elde edebiliriz. Mühendislik deneylerinde her faktör seviyesi kombinasyonu için en az bir deney yapılması beklenir. Bu deney tipine göre değişebilir ama klasik deney tasarımında durum böyledir. 4 tane faktörümüzün 2′şer seviyesi olduğunu varsayarsak (süt sıcaklığı 60 derece ve 70 derece, süt türü yarım yağlı ve tam yağlı, maya miktarı az ve çok, vs gibi), 2^4=16 tane farklı seviye kombinasyonunda yoğurt yapmamız beklenir. Daha güvenilir bir sonuç elde etmek için her seviye kombinasyonunun tekrarlanması önemlidir. Her kombinasyonu da 5 kere tekrarladığımızı düşünürsek (daha fazla yapabiliyorsak çok daha iyi), bu deneyde 16×5=80 farklı yoğurt yapmamız beklenir. Eğer ilgilenirseniz 3 sene kadar önce yaptığımız deneyin sonuçlarını gönderebilirim. Bana http://mustafabaydogan.com/contact.html linkinden atacağınız mesaj ile ulaşabilirsiniz.

Çok fazla dağılmadan konuya devam edecek olursam, şimdiye kadar klasik bir deney tasarımı anlattım. Dediğim gibi bunu günlük hayatınızda birçoğunuz farklı problemler için yapıyorsunuzdur. Özetle ortaya bir hipotez attık. Bu hipotez yoğurdun pekliği belirtilen dört faktörden etkilenebilir idi. Faktör seviyelerini belirledik ve hangi seviyelerde kaç tane yoğurt yapacağımıza karar verdik. Kısacası deneyimizi tasarlamış olduk. Daha sonra deneyi yaptık ve verimizi elde ettik. Sıra geldi bu veriyi analiz etmeye. Klasik yaklaşımın aşamalarını aşağıdaki şekilde de göstermeye çalıştım.

image

Aranızdan ANOVA’yı yani ‘Analysis of Variance’ yani Varyans Analizi’ni duymayanınız yoktur diye düşünüyorum (İstatistik ya da Kalite derslerinden). En kötü ihtimal t-testi ve F-testini istatistik derslerinde görmekteyiz. Temel amaç faktörlerin çıktıya olan etkisinin önemini ölçmektir. Bu türden bir yaklaşım ile faktörlerin yoğurt pekliğine etkisini analiz edebiliriz. Bunun detaylarına girmeyeceğim.

Gel gelelim veri madenciliğine. Çok klasik bir giriş olacak ama günümüzde toplanan verinin hacmi inanılmaz seviyelerde. Bankalar, hastaneler, telekomünikasyon kurumları vs. topladığı verinin günlük hızı belki terabaytlar seviyesinde ve takdir edersiniz ki bu veriler belirlenen bir hipoteze dayalı olarak tasarlanmış bir deneyle toplanmıyor (genellikle böyle, deney tasarımı yapılarak da toplanan veriler mevcut). İşte veri madenciliği burada devreye giriyor. Şekille başladık şekille devam edelim. Bunu da aşağıdaki şekille özetleyebiliriz.

image (1)

Yani ortada bir süreç (proses) veya deney var ve bu size devamlı bir veri üretmekte. Süreçlerden toplanan verilerin analizinde veri madenciliği yöntemleri genel itibariyle önden atılmış bir hipoteze dayanarak yola çıkmaz. Toplanmış/toplanan bir veri üzerinden anlamlı bir bilgi/özet çıkarabilir miyiz sorusunu cevaplamaya çalışır. Bu sıralar çokça karşıma çıkan bir problem için örnek verecek olursam.

Bir şirket müşterilerinin şirketle ilişkisini kesip kesmeyeceğini (müşteri kaybı ve ingilizce olarak ‘customer churn’ deniyor buna) tahmin etmeye çalışıyor. Müşteriler hakkında sürekli bir bilgi toplanması var. Çok klasik olarak müşterinin demografik bilgisini biliyoruz. (Yaş, nerede yaşadığı vs.). Geçmişe dönük kaç yıldır müşteri olduğu ve hangi tür paketlere üyeliği olduğunu biliyoruz. Daha ileriye gidelim. Müşterilerin çağrı merkezi kayıtları var. Yani çağrı merkezini kaç kere aradığı, aramaların kaç dakika sürdüğü gibi bilgiler mevcut. Daha da ileri gidersek müşteri ses kayıtlarını bir takım araçlar ile işleyip (ses işleme araçları) müşterinin sesinin yüksekliği bilgisini de kullanalım (niye? Çünkü yüksek ses kızgınlığın bir ifadesi olabilir ve bu da müşteri kaybına işaret edebilir). Kısacası çoğu zaman çıktıdan bağımsız (ya da klasik anlamda hipotezimizden bağımsız) bir sürü veri toplanmakta. Bu veri sadece ham haliyle değil (yaş ve yaşanılan şehir direk olarak girdi olabilir), işlenmiş bir biçimde kullanılabilmekte. Ses işleme örneğinde olduğu gibi ham veriyi kullanmayıp ham veriyi işleyip elde edeceğimiz ses yüksekliğini bir oznitelik olarak düşünebilirsiniz (evet ingilizcesi ‘feature’ olan bu ifade Türkçe’ye oznitelik diye çevrilmiş).

Müşteriden bağımsız olarak şirketin genel durumu da bu tür bir tahminde önemlidir. Yani şirket hakkında söylentiler çıktığı bir ortamda, normal zamanda müşteri kaybına neden olmayacak bir faktör, artık kayba neden olabilir. Şirketin genel şikayet durumunu şikayetvar gibi sitelerden takip edebiliriz. Ya da twitterdan şirkete yazılan twitleri kullanabiliriz. Özetle veri madenciliği yöntemleri birçok kaynaktan gelen veriyi kullanarak, hangi müşterinin ayrılma potansiyeli olduğunu tahmin etmek için yoğun olarak kullanılmakta.  Eğer bunun klasik yöntem ile ilişkisini düşünecek olursak, aslında yaş, nerede yaşadığı, çağrı merkezini kaç kere aradığı gibi verileri faktörler olarak düşünüp, müşterinin ayrılmış olması ya da olmamasını da çıktı olarak düşünebilirsiniz. Yani faktörlerin müşteri kaybı üzerine etkilerini incelemek temel amaç. Tek fark ortada kontrollü bir deney yok ve aslında yapması zor. İki yaklaşımın benzerliklerini/farklılıklarını göstermek adına bahsetmek istedim. Diyebilirsiniz ki niye klasik yöntemler kullanılmıyor o durumda. Temel sebep klasik yöntemlerin varsayım problemleri. Günümüzde toplanan veri oldukça kirli ve klasik yöntemlerin gerektirdiği varsayımları sağlamıyor. Böyle durumlarda veri madenciliği yöntemleri gürbüz (‘robust’) çözümler üretebilmekte.

Bir dahaki yazıda yukarıda bahsettiğim örnek üzerinden (‘müşteri kaybı’), veri madenciliği yaklaşımlarını anlatmaya devam edeceğim.

Veri Madenciliğine Giriş (1. Kısım)” üzerine 2 düşünce

  1. filiz

    Merhabalar, oldukça faydalı ve güncel bir konu. Ben de şu an bununla ilgili bir proje hazırlamaya çalışıyorum. Sigortacılıkta müşteri kaybı olarak belirledim. End. müh. değilim, istatistikçi de.. Bu yüzden çok fazla araştırmam gerekiyor. Burada input ve output olarak belirlenebilecek olanlar sizce nedir? Ben bir şeyler buldum, bir de sizden duymak faydalı olabilir.

    Çalışmalarınızın devamını dilerim.

    Yanıtla
    1. Mustafa Gokce Baydogan Yazar

      Ilginiz icin tesekkur ederim. Musteri kaybi ile ilgili bir takim calismalar yapmaktayim ben de. Onumuzdeki gunlerde bu konu hakkinda yazmak isterim. Su sira yeni baslayan donemin yogunlugu var maalesef.

      Yanıtla

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir