


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 ?
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;
ş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 (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]
>>> 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.
>>> 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;
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.
Bankacılık Sektörü
Yazılım Sektörü (İş Analitiği/Analizi – İş Geliştirme)
Spesifik Problemler
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.
MARS algoritması avantajları olarak;
MARS algoritması dezavantajları olarak;
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…
