Makine Öğrenmesini Tahmin İçin Kullanmak: Regresyon

Özet: Regresyonu tanımlayıp Excel’de bir örnek üzerinde anlattıktan sonra Python ile giriş seviyesinde adım adım uyguladım.

realpython.com/linear-regression-in-python/*

Regresyon Nedir?

☞ Genel Tanım : Değişkenler arasındaki (bağımlı/bağımsız) ilişki gözlenerek tahminde bulunmak, değişkenlerin birbirleri üzerinde nasıl etkide bulunduğunu incelemek ve bilinmeyene dair çıkarım yapmak için regresyondan yararlanılır.

1 bağımlı ve 1 bağımsız değişken ile tahmin yapmaya çalıştığımızda bu basit doğrusal regresyon, birden çok değişkenler olduğunda ise çoklu doğrusal regresyon olur. Bu yazımda giriş amaçlı basit doğrusal regresyon üzerinden gideceğim.

İlişkiyi kurup istenen tahmine ulaşmak için gereken model y=a+bx+e ' dir. a⇨ sabit değer, b⇨ regresyon katsayısı/doğrunun eğimi, y⇨ tahmin edilmesi istenen değer, x⇨ bağımsız değişkenin değeri ve e⇨ (var ise) ana kütledeki hatadır.

Vereceğim örnekle model işini basite indirgeyerek bu değerlerin Excel’de nasıl bulunduğunu ve çok rahat yerlerine koyulduğunu göstereceğim.

Problem-1: Çalışma Saati Notu Etkiliyor mu?

Elimizde 5 öğrencinin bir derse ait ne kadar çalıştığı ve karşılığında hangi notu aldığını gösteren bir veri var.

Model kurup yerine koymak için Excel ile sabit değer (a, x=0 iken alacağı not) ve regresyon katsayısı (b, çalıştığı her saat için notunun kaç puan artacağı) değerlerini bulacağız.

Giriş sekmesinde sağ üstte yer alan ∑ (formüller) > alt ok tuşu > Diğer İşlevler diyoruz. İşlev Ara > DOT yazıyoruz. Açılan sayfada Bilinen_y’ler (tahmin edilmesi istenen, y) Not sütunumuz oluyor ve seçiyoruz. Bilinen_x’ler (nota etki edenler, b) Çalışma Saati sütunumuz oluyor. İkisinde de sadece sayıları seçiyoruz, yani sütun isimlerini değil.

Aldığımız sonuç sırası ile ilk yazılan hücre (b:)5,03 ve ikinci yazılan (a:)17,83 oluyor. Sayıları modele döktüğümüzde y=17,83+5,03.x ' e ulaşıyoruz. Bunun anlamı şu : Bir öğrencinin çalıştığı her extra saat için notunun 5,03 puan artması ve hiç çalışmayan bir öğrencinin 17,83 alması beklenir. Artık kaç saat çalıştığını x’e yazdığımızda sonucu alabiliriz.

6 saat ders çalışan bir öğrencinin kaç alması beklenir?

y=17,83+5,03*6=47,9 ≌ 48

Excel ile Regresyon Doğrusu Eğimi

Amacımız bu çizilen çizginin tüm noktalara en yakın, hata değeri minimum olacak şekilde çizilmesidir.

Excel’de oluşturduğum doğrusal grafik

ctrl+A ile tablo seçilir. Ekle>Dağılım (XY) > tablodan 1 noktaya farenin sağ tuşu ile tıkla>eğim çizgisi ekle.

Çalışma saati(x) artarken notlar(y) da arttığı için aralarında pozitif bir ilişki olduğunu söyleyebiliriz.

Python ile Regresyon Uygulaması

Problem-2 : Satışlar Reklam Harcamalarından Etkileniyor mu?

realpython.com/linear-regression-in-python/**

1-Kullanacağımız paketleri çağıracağız.

2-Veri setini tanımlayacağız.

3-En uygun Regresyon modelini kurmaya çalışacağız.

4-Sonuçları değerlendirip tahminde bulunacağız.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, r2_score

Paketler çağrıldı.

satislar=np.array([22,21,23,26,30,31,32]) #bağımlı değişken
reklam_giderler=np.array([7,11,15,22,26,28,31]) #bağımsız değişken
df=pd.DataFrame({“satislar”:satislar, “reklam_giderler”:reklam_giderler}) #sözlük ile oluşturdum.
#indexlere yılları atıyorum
yillar=[str(x+2000) for x in range(7)] #2000'den başlasın 7 tane olsun
df.index=yillar

Veri tanımlandı.

#Parametre gereği 2 boyutlu yapmamız gerekte.
reklam_giderler=reklam_giderler.reshape(-1,1)
linear_model.fit(X=reklam_giderler, y=satislar)
linear_model.coef_ #b değeri: katsayı, lineer çizginin y eksenini kestiği yer.
linear_model.intercept_ #x sıfır olduğunda y’nin değeri
print(“a={}, b={},”.format(linear_model.intercept_,linear_model.coef_))

çıktı: a=16.74857142857143, b=0.484 ⇨ Model: 16.74+0.48*x

linear_model.score(X=reklam_giderler, y=satislar) #Model öğrenme performansı

çıktı: 0.9317000000000001 | Öğreterek elde ettiğimiz model %93 oranında başarılı diyebiliriz. Artık yukarıdaki modelde x yerine ulaşmak istediğimiz sayıyı girdiğimizde bize %93 doğru yanıt verecek.

Karşılaştırmalı Görsel

--

--

--

Tecrübe edindiğim bilgileri paylaşmak mutluluk verdiği için buradayım. İletişim: akdoganf1510@gmail.com | www.linkedin.com/in/fadime-akdogan

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Fadime Akdoğan

Fadime Akdoğan

Tecrübe edindiğim bilgileri paylaşmak mutluluk verdiği için buradayım. İletişim: akdoganf1510@gmail.com | www.linkedin.com/in/fadime-akdogan

More from Medium

Luigi Pipelines — an experiment

Combining hourly and daily tasks in the same Airflow DAG

Using Python to generate an Anki deck

Python Behind the Scenes (Part 1)