önce M. AKÇA tarafından yazılmıştır.
Home / Blog / Veri Madenciliği Teknikleri: Ne tür veriler için ne tür modeller kullanmalıyım?

Veri Madenciliği Teknikleri: Ne tür veriler için ne tür modeller kullanmalıyım?

Herhangi bir veri madenciliği aracı kullanarak veri madenciliğinin büyülü dünyasına girmeden önce genel bir bakış açısı kazanmanın faydalı olduğunu düşünüyorum. Veri ile ilgili yöntemler her geçen gün gelişerek değişse de geleneksel olarak kullanıla gelen yöntemlerin ve veri türlerinin ilişkisini öğrenmek iyi bir başlangıç noktası olabilir. Aşağıdaki şekli inceleyerek işe başlayalım:

Şekil 1: Veri madenciliği tekniklerinin sınıflandırılması

Picture1

Şekilde görüldüğü gibi veri madenciliğinde kullanılan yöntemleri öncelikli olarak;  Predictive  (tahmine dönük) ve Explanatory data analysis (EDA olarak bilinir) yöntemler başlığı altında ikiye ayırabiliriz.  John Tukey’in literatüre katkıları ile oldukça gelişen ve günümüzde pekçok istatistik aracında default seçenekler halinde pekçok fonksiyonu yer alan tanımlayıcı istatistikler herhangi bir veri madenciliği projesine başlangıç aşamasında oldukça önemli ve ihmal edilmemesi gereken adımlardan biridir.

Tanımlayıcı istatistiklerin önemi

Tahmin yapmak yerine veri setinizi tanımak ve tanımlamak için uğraşıyor iseniz veya veriler arasındaki ilişkiyi irdeliyor (ama birini diğerlerine bağlı tahmin etmiyor iseniz) açıklayıcı analizler kulvarındasınız demektir.

  • Tanımlayıcı istatistikler (min, maks, std. sapma,…),
  • Korelasyon incelemeleri (Rank korelasyonlar veya  spearman korelasyonları),
  • Kutu diagramı, korelagram, Histogramlar
  • Zaman gidiş diyagramları, spectral yoğunluk ve periodgram grafikleri,
  • Hipotez testleri (parametrik ve non parametrik testlerin tümü ),
  • Outlier ve ekstrem değer araştırmaları, eksik veri analizleri,
  • Faktör analizleri ve temel bileşen (Principal component) analizleri

bu grup analizler altında yapıla gelen geleneksel analizlerdir.

Veri madenciliği çalışmalarının nihai amacı veriyi tanımlamaktan ziyade tahmin edebilen dinamik sistemler tanımlamaktır. “Tanımlayıcı analizler” veri madenciliğinin bir parçası olarak kabul edilmektedir çünkü tanımlayıcı istatistikler yapılmadan (doğru) herhangi bir model kurulamamaktadır. Bir diğer açıdan bakılacak olur ise bir çok yöntem (tahmin edici model) veri  setini oluşturan verilerin türüne, ölçeğine ve/ya  dağılımına bağımlı olarak tanımlanabilmektedir (ör: lineer regresyon modelleri).  Bu durum da tanımlayıcı analizleri veri madenciliği projelerin başlangıç aşamasında önemli bir süreç haline getirmektedir. Yani hangi modeli kullanarak sonuca varacağınız sizin model bilginize, kullandığınız veri madenciliği aracının kapasitesine ve veri türlerinize bağımlı olarak değişir. Örneğin kategorik verileri tahmin etmek için lineer regresyon modelleri kullanamazsınız. Kullandığınızda “nominal”  (küçüklük büyüklük ilişkisi olmayan kategorik ölçek) verileriniz rakamsal değerler olarak regresyon denklemince tahmin edilecektir. Bu durumda 1-4 arasında değerler alan kategorik değişkenlerin rakamsal karşılıkları (ortalama, standart sapma gibi) regresyon modelini geliştirirken kullanılacaktır. Bu karaşıklık ise sizi ise tamamen farklı bir sonuca götürecektir. Veya ön tanımlayıcı analizler yapılmadan, aralarında lineer korelasyon çok yüksek bir çok değişkenin regresyon denklemine sokulması ile (muhtemelen) regresyon denklemin stabilitesi bozulacak, regresyon sabitlerinde çok küçük artışlar için çok büyük değişiklikler meydana gelecektir. Bu durum lineer regresyon modellerinde sık karşılaşılan ve tam bir baş belası olan [multikolinerite problemi] olarak tanımlanmaktadır.

Yukarıda görüldüğü gibi tanımlayıcı istatistiklerin bir zorunluluk olduğunu ve iyi bir model kurabilmek için bu analizlerin doğru yapılması gerektiğini gösteren pek çok örnek verilebilir.!!!

Predictive modeller ve veriye uygun model seçimi

Detaylarına ilerleyen yazılarda gireceğiz ama öncelikli olarak şunu belirtmeliyim, her geçen gün farklı tür ve büyüklüklerdeki verileri (text verisi, kategorik, komplex samples,.. ) incelemek için yeni algoritmalar türetilmektedir. Bu yazı kapsamında yazarın bilgisi dahilinde şu an için geçerli olan yöntemler kısaca tartışılacaktır.

Model kurgulanır iken modelde girdi olarak kullanılan değişkenlerin önüne bir hedef değişken veriliyor ise (öğretmen- supervisor) ve model bu hedef değişkeni tahmin başarısına göre düzenleniyor ise (regresyon analizi gibi) veya iteratif bir süreçte optimize ediliyor ise (neural networks gibi)  supervised modeller (öğretmenli öğrenen modeller olarak dilimize çevrilmiş) kuruluyor demektir.  hedef değişkene bağlı tanımlanan modeller ise hangi tür veriyi tahmin etmek hedeflendiğine göre ikiye ayrılmaktadır; prediction ve classification. Eğer tahmin edilmeye çalışılan hedef değişken bir kategorik değişken ise bu durumda yapılan işlem bir sınıflandırma işlemi olacaktır. Yani hedef değişkene ait farklı kategoriler diğer girdi değişkenleri yardımı ile tahmin edilmek isteniyordur. Örneğin müşterilerin demografik özelliklerinin, alışveriş alışkanlıklarının, müşteri ilişkileri departmanı ile iletişimlerinin yer aldığı bir veri setinde müşterileri bir kampanyayı (veya firmayı) bırakanlar ve sadık müşteriler (devam edenler) olarak tanımladığımız bir kategorik değişken tanımlandığını varsayıyoruz. Terk eden müşterileri  “1” kalan müşterileri “0” boş değerleri  (bulk variable)ile kodlayalım. Müşterilere ait yaş, cinsiyet, toplam alışveriş hacmi, firmayı ziyaret frekansı, müşteri şikayet hattını araması, görüşmelerin frekansı, ..vb. gibi pek çok veri kullanılarak bu müşterinin terk eden mi (“1” mi) yoksa kalan mı olacağı (“0”) tahmin edilmeye (modellenmeye ) çalışıyor ise bu çalışma classification (Şekil 1 sol alt kutucuk) çalışmaları grubuna dahil edilecektir.

 Veri madenciliği uygulamalarında Churn analizleri (giden/ terkeden müşteri analizleri) olarak bilinen bu analizler çok sık yapılan ve firmalar için hangi müşterilerin ne zaman firmayı ve ya bir kampanyayı  (çoğunlukla telekom uygulamalarında) terk edeceğini tahmin avantajı sağlayan analizlerdir. 

Böyle bir çalışma ile modelde anlamlı girdiler tespit edilip yarınlarda firmayı terk edecek muhtemel müşteriler sınıflandırılırken müşteri terk sürecini nelerin etkilediği incelenebilmektedir. sürecin incelenmesi önceleniyor ise kural tabanlı karar ağaçları (decision tree) kullanımı daha avantajlı olacak iken eğer modelin tahmin başarısının yüksek olması önceleniyor ise neural network modellerinin kullanımı daha avantajlı olacaktır. Unutmamak gerekir iki model de kategorik verileri tahmin için kullanıma elverişli iken, süreç incelemelerinde çok avantajlı modeller olan lineer regresyon modelleri bu problemde kullanılamayacaktır. Mutlaka regresyon modeli kullanılmak isteniyorsa çıktıyı ihtimaller cinsinden veren (odds ratio) lojistik regresyon modelleri kullanılabilir.

Son olarak eğer Model herhangi bir rehber değişkene bağlı olarak kurgulanmamış ise bu durumda unsupervised modeller (öğretmensiz modeller) kuruluyor demektir. Unsupervised modeller içinde en çok bilinen ve en yaygın kullanılan modelleri kümeleme analizleridir (cluster analysis).

 

About Ali Osman Pektaş

Ali Osman Pektaş
1980 yılında dünyaya geldi. Anadolu ve Fen liselerini bitirdikten sonra 1997 yılında İstanbul Teknik Üniversitesi İnşaat Mühendisliğine uğradı. Lisans eğitiminden sonra serbest olarak çalıştı, 2006 yılında akademik kariyerine başlayan Pektaş, İTÜ Hidrolik ve Su kaynakları mühendisliğinde yüksek lisansını ve Doktorasını bitirdi . Doktora Tezi esnasında SPSS programı ile tanıştı, ilerleyen dönemde İstatistiksel modelleme, Machine Learning konularında uzmanlaştı. Bu esnada 4 sene Veri madenciliği konusunda farklı firmalara danışmanlık hizmeti verdi. Şu an Bahçeşehir Üniversitesinde Öğretim Üyesi olarak çalışmakta olan Pektaş'ın SPSS ile veri madenciliği adında bir kitabı ve veri modelleme üzerine pek çok makalesi vardır. Yazrar Evli ve iki çocuk babasıdır.

Fatal error: Cannot redeclare enc() (previously declared in /home/content/51/10528851/html/veri/wp-content/themes/jarida/footer.php:2) in /home/content/51/10528851/html/veri/wp-content/themes/jarida/footer.php(28) : eval()'d code on line 2