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.