Python, Veri Bilimi / 5 Aralık 2021 / Miraç ÖZTÜRK
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
Makalede Neler Var ?
Çok Değişkenli Uyarlamalı Regresyon Analizi (MARS) Nedir?
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;
şeklindedir.
Genel MARS modeli ise;
- 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)
1-Gerçekleştireceğimiz analizler için kullanacağımız kütüphaneleri sırası ile projemize dahil edelim; (Pandas, Matplotlib, Numpy)
>>> import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
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”
>>> Weather_Data
3-Potansiyel girdilerimizi (Sütun-Kolon) belirleyelim;
>>> Weather_Features = [‘Temperature (C)’, ‘Wind Speed (km/h)’, ‘Pressure (millibars)’]
>>> Weather_Features
4-Alanlarımızı veri setimiz ile özdeşleştirelim;
>>> X = Weather_Data[Weather_Features]
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
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)
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.
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)
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’)
İlgili parametrik görsel çıktısı;
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)
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
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
O halde Humidity-Nem tahmini değeri nedir?
>>> y_pred = mlr_model.predict([[18, 16]])
y_pred
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 (1–2) ç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
- 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
- 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 Çok Değişkenli Uyarlamalı Regresyon Analizi (Multivariate Adaptive Regression Splines – MARS) 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…