microsoft power bi python multivariate sdaptive segression splines mars algorithm

Python ile Sınıflandırma Analizleri – Çok Değişkenli Uyarlamalı Regresyon Analizi (Multivariate Adaptive Regression Splines – MARS) Algoritması

Merhaba, iyi günler.

Bugün; çeşitli veri kümeleri üzerinde özel işlemler ile farklı çözümlemeler için yapılandırılmış denetimli/gözetimli öğrenme algoritmalarından, gerçek dünyadaki metrikler arasındaki etkileşimi değerlendirmemizi sağlayan Çok Değişkenli Uyarlamalı Regresyon Analizi (Multivariate Adaptive Regression Splines – MARS) algoritması üzerine çeşitli bilgi ve çözümlemeler aktarmaya çalışacağım.

Genel konu özetinin bulunduğu Python Veri Analizi yazısına link üzerinden ulaşabilirsiniz

MARS (Mutivariate Adaptive Regression Splines) algoritması; çok boyutlu veri kümeleri için parametrik olmayan (Nonparametrik) regresyon analizinin bir yaklaşımıdır/formudur.

Hatırlatmak gerekir ise; regresyonun kendisi, veri girişleri (bağımsız değişkenler) ve sonuç çıktıları (bağımlı değişkenler) arasındaki ilişkiyi modellemek için etiketli verileri kullanan denetimli Makine Öğrenimi (Machine Learning-ML) kategorisinin bir parçasıdır. (Doğrusal Regresyon problemleri için MARS alternatiftir.)

Jerome H. Friedman tarafından 1991 yılında geliştirilen algoritma hedef olarak bağımsız değişken sayısı oldukça fazla olan kompleks problemler için, doğrusal olmayan çok değişkenli fonksiyonların uyarlanmasına yönelik geliştirilmiştir.

MARS algoritması temel olarak; bağımsız değişken değerlerini bölgelere ayırarak, her bölgeyi bir regresyon eşitliği ile ilişkilendirmektedir.

Algoritmanın temel istatiksel formalizasyonu ise; 

python mars multivariate adaptive regression splines base formula

şeklindedir.
Genel MARS modeli ise;

python mars multivariate adaptive regression mathematical formulazation
  • k: Düğüm sayısını,
  • K: Temel fonksiyon sayısını,
  • X: Bağımsız değişkeni,
  • ak: Temel fonksiyonun katsayısı,
  • B0: Modeldeki sabit terim,
  • BkXt: Bağımsız değişken için k. temel fonksiyonu

şeklindedir.

Model seçimi ve yapılandırma eğilimlerinde doğrusal olmayan modeller, esnek yapıya sahiptirler.
(Gereğinden fazla yaklaşma eylemi hata oluşturabilir.)
Test edilmiş verilerde sıfıra yakın hata payı oluşturmalarına rağmen yeni gözlem ve durumlarda etkisiz ya da zayıf performans gösterebilirler.
Diğer metotlarda olduğu gibi MARS algoritması da veriye aşırı uyum (karmaşıklığı arttırma, over-fit) eğilimindedir.
Bunu engellemek ve modelin karmaşıklığı azaltmak için Budama Yöntemi* kullanılır.

*Pruning (Budama):Overfitting durumunu çözmek için kurgulanan/belirlenen yöntem.
**Overfit (Aşırı Uyumsuzluk-Uyum Sağlayamamak):Üretilen bir analizin belirli bir veri kümesine aşırı oranda uyum göstermesi, dolayısıyla bu veri kümesinde yer almayan yeni verilere uyum sağlayamaması problemidir

MARS Algoritması Uygulama Örneği

MARS (Multivariate Adaptive Regression Splines) algoritması uygulamasına örnek olarak, çokça duyulan ve kullanılan Data Weather Veri Seti üzerinden basit bir örnek ile çözümlemelerde bulunalım.

İlgili veri setine ait csv. uzantılı dosyasına buradan ulaşabilirsiniz.  (EK)

data weather python data sets
python regression i value
python regression j value
python lineer regression multiple value analyze

1-Gerçekleştireceğimiz analizler için kullanacağımız kütüphaneleri sırası ile projemize dahil edelim; (Pandas, MatplotlibNumpy)

>>> import pandas as pd
       import matplotlib.pyplot as plt
       import numpy as np

python multivariate adaptive regression splines mars import library

2-Çalışmamıza ilgili verilerimizi dahil edelim ve önizleme gerçekleştirelim;

>>> Weather_Data = pd.read_csv(“C:\\Users\\WeatherData.csv”) 

Burada aşağıdaki gibi bir hata alındığında;
‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape [duplicate]

  • “C:\\Users\\WeatherData.csv”
  • r”C:\Users\WeatherData.csv”
  • “C:/Users/WeatherData.csv”
formatlarını sisteminize uygun şekilde deneyebilirsiniz.
python mars multivariate adaptive regression slines data view

>>> Weather_Data

python mars multivariate adaptive regression slines dataset view data

3-Potansiyel girdilerimizi (Sütun-Kolon) belirleyelim;

>>> Weather_Features = [‘Temperature (C)’, ‘Wind Speed (km/h)’, ‘Pressure (millibars)’]

python mars multivariate adaptive regression slines data potential column

>>> Weather_Features

python mars multivariate adaptive regression slines data potential column view

4-Alanlarımızı veri setimiz ile özdeşleştirelim;

>>> X = Weather_Data[Weather_Features]

python mars multivariate adaptive regression slines data potential column view fit

5-Alanlarımız üzerindeki Nem parametremizi y parametresine atayalım;
(Çalışmanıza yönelik herhangi bir parametre olabilir. Analizin içeriğine bağlı.)

>>> y = Weather_Data.Humidity

python mars multivariate adaptive regression slines data potential add parameter

6-Parametrik değerlerimize yönelik görselleştirme gerçekleştirelim;

>>> plt.subplot(2,2,1)
       plt.scatter(X[‘Temperature (C)’],y)
       plt.subplot(2,2,2)
       plt.scatter(X[‘Wind Speed (km/h)’],y)
       plt.subplot(2,2,3)
       plt.scatter(X[‘Pressure (millibars)’],y)

python mars multivariate adaptive regression slines graph

Ek olarak;

<matplotlib.collections.PathCollection at 0x173f8d41ac0>

ifadesi bir hata mesajı değildir.Nesnenin temsili dize formatıdır.

plt.show() ek kod parçacığı ile doğrudan önizleme oluşturur, üst kısımdaki gibi nesne dize formatı çıktısı ile karşılaşmazsınız.

python mars multivariate adaptive regression slines graph solved

7-Parametrik değerlerimizi göz önüne aldığımızda üç boyutlu görsel oluşturmak için mevcut parametrelerden bir tanesini inaktif etmemiz gerekmektedir;
(Bu eylem için Basınç değerini baz aldık.)

Göz önünde bulundurduğumuz durum; parametreler arasındaki doğrusallık ilişkisi.

  • Rüzgar Hızına karşı Nem doğrusal bir ilişki oluşturur.
  • Basınca karşı Nem doğrusal bir ilişki oluşturmaz.

>>> X = X.drop(“Pressure (millibars)”, 1)

python mars multivariate adaptive regression inactive parameter

8-Parametrik düzenlememizin ardından 3 boyutlu görselleştirmemizi gerçekleştirelim;

>>> from mpl_toolkits.mplot3d import Axes3D
       fig = plt.figure()
       ax = fig.add_subplot(111, projection=’3d’)
       x1 = X[“Temperature (C)”]
       x2 = X[“Wind Speed (km/h)”]
       ax.scatter(x1, x2, y, c=’r’, marker=’o’)

       # EKSEN DUZENLEMELERI-ATAMALARI

       ax.set_xlabel(‘Temperature-Sıcaklık (C)’)
       ax.set_ylabel(‘Wind Speed-Ruzgar Hızı (km/h)’)
       ax.set_zlabel(‘Humidity-Nem’)

python mars multivariate adaptive regression 3rd dimension graph

İlgili parametrik görsel çıktısı;

python mars multivariate adaptive regression 3rd dimension graph view

9-Oluşturmuş olduğumuz parametrik yapımız üzerinde regresyon analizini gerçekleştirelim;

>>> from sklearn.linear_model import LinearRegression
       mlr_model = LinearRegression()
       mlr_model.fit(X, y)

python mars multivariate adaptive regression linear model fitting

10-X değişkenlerimizden önce gelen katsayılarımızı oluşturalım;
Hatırlatma:  ŷ = theta0+theta1𝑥¹+theta2𝑥²

>>> theta0 = mlr_model.intercept_
       theta1, theta2 = mlr_model.coef_
       theta0, theta1, theta2 

python mars multivariate adaptive regression linear model theta parameter

O halde denklemimiz;

ŷ = 1.1147-0.0279𝑥¹-0.0056𝑥²

olur.

11-Son olarak oluşturmuş olduğumuz denklemimiz üzerinde çeşitli değerleri ele alarak tahminleme gerçekleştirelim;

  • Temperature-Sıcaklık (C)=18C
  • Wind Speed-Ruzgar Hızı (km/h)=16 km/h
baz alalım.

O halde Humidity-Nem tahmini değeri nedir?

>>> y_pred = mlr_model.predict([[18, 16]])
       y_pred

python mars multivariate adaptive regression linear model prediction

MARS algoritmasına yönelik basit veri seti üzerinden bir analiz gerçekleştirdik.
Mevcut algoritma; kompleks ve bağlantısı yüksek olan karmaşık veri yapıları üzerinde çokça tercih edilmektedir*.
Elbette ki avantaj ve dezavantajlar yer almaktadır.
*Özellikle verilerin etkileşimlerini saptayabilmek için kullanılan veri/parametre karşılaştırılma çözümü için. 

Görselleştirme işlemleri için dilerseniz Python üzerinde ki çeşitli kütüphaneleri kullanarak dilerseniz de geçmiş dönemlerde uygulamış olduğumuz Power BI ile görselleştirme (12) çalışmalarından faydalanabilirsiniz. 

Günlük Hayatta Algoritma Uygulama Alanları

Bankacılık Sektörü

  • Kredi ve Risk Analizleri
  • İşletme İflas Tahminlemeleri
  • Borsa Analizleri (Alım-Satım İşlemleri)

Yazılım Sektörü (İş Analitiği/Analizi – İş Geliştirme)

  • Müşteri Davranışı Modellemesi,
  • Müşteri Bölümlemesi (Segmentasyonu) ,
  • Dolandırıcılık Eğilimi Takibi,
  • Pazar Araştırması,
  • Pazar Karması,
  • Pazar Yapısı ve Yıpranma Analizi,
  • Temerrüt,
  • Satın alma ve yenileme modelleri
Savunma Sanayi Sektörü

  • Terörle Mücadele,
  • Yüz Tanıma,
  • Özellik Çıkarma,
  • Gürültü Bastırma,
  • Nesne Ayırt Etme,
  • İleri Düzey Sensör Teknolojileri,
  • Sonar,
  • Radar ve Görüntülü Sinyal İşleme,
  • Hedef İzleme ve Takip
Eğitim Sektörü

  • Uyarlanabilir Öğrenme Yazılımları,
  • Eğitim Sistemi Analizi ve Tahmini,
  • Öğrenci Performans Modellemesi ve Kişilik Profili Oluşturma

Spesifik Problemler

  • Ekolojik Eylem Analizleri
  • Biyolojik Analizler
  • Kompleks Metin Madenciliği Analizleri
  • Farklılaşmış Hastalık Analizleri (İleri Seviye Kanser/Tümör)
  • Benzerliğe Dayalı Kayıp Veri Analizleri (Kompleks Seviye)

en çok tercih edilen alanlar veya problemler olarak dile getirilmektedir.
Genel olarak algoritma; yüksek ölçekli yapılar ve karmaşık etkileşimli sayıca fazla parametre içeren kurgusal senaryolar için tercih edilmektedir. 

Avantaj Dezavantaj

MARS algoritması avantajları olarak;

  • Karmaşık/Kompleks veri yapıları ve büyük ölçekli veri tabanları için uygun regresyon modellerini kolaylıkla geliştirilebilmenizi sağlamaktadır,
    (Diğer tahmin modellerine göre zaman ve efor kazancı sağlar)
  • Büyük ölçekli yapılar ve karmaşık eğilimlerde yüksek oranda tahminleme değerleri sağlamaktadır
    (Bu yapılarda öncelikli tercih nedenidir)
  • Tüm optimizasyonlar optimum seviyede oluşturulduğunda diğer çok parametrik tahminleme modellerine göre ileri seviye sonuçlar sağlamaktadır

MARS algoritması dezavantajları olarak;

  • Geleneksel tahminleme yöntemlerine göre son derece zor olan/olabilen yapıdadır,
    (Yüksek seviyede zaman gerektirmektedir)
  •  Bağımlı değişkenin nitel ve sürekli olduğu durumlarda bağımsız değişkenler ile bağımlı değişkenler arasındaki ilişki kolay ifade edilmeyebilir/saptanamayabilir
    (İdeal parametrelerin saptanması zaman alabilir)
  • Global ve yerel algoritma optimizasyonu problemlerine sıkça rastlanmaktadır
    (İdeal-hızlı algoritmik çözüm, kod performansı)

Bu bölümde genel manada Sınıflandırma metoduna ait ve En Yakın Komşu (K-Nearest Neighbours – KNN) yöntemine (algoritmasına) değinmeye çalıştım.

Gelecek yazımda Naive-Bayes Teorisi (Naive-Bayes Theory) ele almaya çalışacağım.

İyi günler, iyi çalışmalar…

, ,

İlgili Yazılar