Regresyon Algoritmaları - Genel Bakış
Regresyona Giriş
Regresyon, diğer önemli ve yaygın olarak kullanılan istatistiksel ve makine öğrenimi aracıdır. Regresyon tabanlı görevlerin temel amacı, verilen girdi verileri için sayısal değerler olarak devam eden çıktı etiketlerini veya yanıtlarını tahmin etmektir. Çıktı, modelin eğitim aşamasında öğrendiklerine dayalı olacaktır. Temel olarak, regresyon modelleri, girdiler ve karşılık gelen çıktılar arasındaki belirli ilişkiyi öğrenmek için girdi veri özelliklerini (bağımsız değişkenler) ve bunlara karşılık gelen sürekli sayısal çıktı değerlerini (bağımlı veya sonuç değişkenleri) kullanır.
Regresyon Modeli Türleri
Regresyon modelleri aşağıdaki iki türdendir:
Simple regression model - Bu, tahminlerin verilerin tek, tek değişkenli bir özelliğinden oluşturulduğu en temel regresyon modelidir.
Multiple regression model - Adından da anlaşılacağı gibi, bu regresyon modelinde tahminler verinin birçok özelliğinden oluşur.
Python'da Regresör Oluşturma
Python'da regresör modeli, sınıflandırıcıyı oluşturduğumuz gibi inşa edilebilir. Makine öğrenimi için bir Python kütüphanesi olan Scikit-learn, Python'da bir regresör oluşturmak için de kullanılabilir.
Aşağıdaki örnekte, verilere bir doğru, yani doğrusal regresör uyduracak temel regresyon modeli oluşturacağız. Python'da bir regresör oluşturmak için gerekli adımlar aşağıdaki gibidir -
Adım 1: Gerekli python paketini içe aktarma
Scikit-learn kullanarak bir regresör oluşturmak için, onu diğer gerekli paketlerle birlikte içe aktarmamız gerekir. Aşağıdaki komut dosyasını kullanarak içe aktarabiliriz -
import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
Adım 2: Veri kümesini içe aktarma
Gerekli paketi içe aktardıktan sonra, regresyon tahmin modeli oluşturmak için bir veri setine ihtiyacımız var. Sklearn veri setinden içe aktarabilir veya ihtiyacımıza göre diğerini kullanabiliriz. Kaydedilmiş girdi verilerimizi kullanacağız. Aşağıdaki komut dosyası yardımıyla içe aktarabiliriz -
input = r'C:\linear.txt'
Sonra, bu verileri yüklememiz gerekiyor. Yüklemek için np.loadtxt işlevini kullanıyoruz.
input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]
3. Adım: Verileri eğitim ve test setleri halinde düzenleme
Modelimizi görünmeyen veriler üzerinde test etmemiz gerektiğinden, veri setimizi iki bölüme ayıracağız: bir eğitim seti ve bir test seti. Aşağıdaki komut bunu gerçekleştirecek -
training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training
X_train, y_train = X[:training_samples], y[:training_samples]
X_test, y_test = X[training_samples:], y[training_samples:]
Adım 4: Model değerlendirme ve tahmin
Verileri eğitim ve teste böldükten sonra modeli oluşturmamız gerekir. Bu amaçla Scikit-learn'ün LineaRegression () işlevini kullanacağız. Aşağıdaki komut doğrusal bir regresör nesnesi oluşturacaktır.
reg_linear= linear_model.LinearRegression()
Ardından, bu modeli eğitim örnekleri ile aşağıdaki şekilde eğitin -
reg_linear.fit(X_train, y_train)
Şimdi, sonunda test verileriyle tahmin yapmamız gerekiyor.
y_test_pred = reg_linear.predict(X_test)
Adım 5: Çizim ve görselleştirme
Tahminden sonra, aşağıdaki komut dosyası yardımıyla onu çizebilir ve görselleştirebiliriz -
Example
plt.scatter(X_test, y_test, color='red')
plt.plot(X_test, y_test_pred, color='black', linewidth=2)
plt.xticks(())
plt.yticks(())
plt.show()
Output
Yukarıdaki çıktıda, veri noktaları arasındaki regresyon çizgisini görebiliriz.
Adım 6: Performans hesaplaması
Regresyon modelimizin performansını aşağıdaki gibi çeşitli performans ölçütleri yardımıyla da hesaplayabiliriz -
Example
print("Regressor model performance:")
print("Mean absolute error(MAE) =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error(MSE) =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))
Output
Regressor model performance:
Mean absolute error(MAE) = 1.78
Mean squared error(MSE) = 3.89
Median absolute error = 2.01
Explain variance score = -0.09
R2 score = -0.09
ML Regresyon Algoritması Türleri
En kullanışlı ve popüler makine öğrenimi regresyon algoritması, ayrıca iki türe ayrılan Doğrusal regresyon algoritmasıdır:
Basit Doğrusal Regresyon algoritması
Çoklu Doğrusal Regresyon algoritması.
Bunu tartışacağız ve sonraki bölümde Python'da uygulayacağız.
Uygulamalar
ML regresyon algoritmalarının uygulamaları aşağıdaki gibidir -
Forecasting or Predictive analysis- Regresyonun önemli kullanımlarından biri tahmin veya tahmine dayalı analizdir. Örneğin, GSYİH'yi, petrol fiyatlarını veya basit bir deyişle zamanla değişen nicel verileri tahmin edebiliriz.
Optimization- Regresyon yardımı ile iş süreçlerini optimize edebiliriz. Örneğin, bir mağaza yöneticisi, müşterilerin gelme zamanını anlamak için istatistiksel bir model oluşturabilir.
Error correction- İş hayatında, doğru karar almak, iş sürecini optimize etmek kadar aynı derecede önemlidir. Gerileme, halihazırda uygulanmış olan kararı düzeltmemizin yanı sıra doğru karar almamıza yardımcı olabilir.
Economics- Ekonomide en çok kullanılan araçtır. Arzı, talebi, tüketimi, envanter yatırımını vb. Tahmin etmek için regresyon kullanabiliriz.
Finance- Bir finans şirketi her zaman risk portföyünü en aza indirmekle ilgilenir ve müşterileri etkileyen faktörleri bilmek ister. Bütün bunlar regresyon modeli yardımıyla tahmin edilebilir.