Kaynak: https://medium.com/@florenciacoelho

Makine Öğrenmesi- I

Zeynep Budak
8 min readFeb 27, 2021

--

Herkese merhaba!

Bu yazımda makine öğrenmesinin genel modelini anlamak için takılması gereken iki gözlükten birincisini anlatacağım. Fakat her şeyden önce isterseniz öğrenmenin tanımına bir bakalım.

Öğrenme, bireyin yaşantılar sonucu davranışlarda meydana gelen oldukça uzun süreli değişmelerdir. Bir bilgi ve becerinin, öğrenme sayılması için davranışta değişiklik yapması ve davranıştaki değişikliğin uzun süreli olması gerekmektedir. Vikipedi

Yukarıda belirtildiği gibi öğrenme uzun sürelidir. Fakat yeterli veriye sahip olan bir makine için bu süre tam tersinedir.

Daha düzgün bir ifadeyle belirtecek olursak; bilgisayarların insanlar gibi öğrenmesini sağlamak için çeşitli algoritma ve teknikler geliştiren bilimsel bir çalışma alanıdır makine öğrenmesi. Veri ile beslenen bu algoritmalar, veriye dayanarak kendi mantığını oluşturur ve öğrenir!

Makine öğrenmesinin derinliklerine inmeden önce bazı temel kavramlarından bahsetmek istiyorum. Bunlar:

  1. Değişkenler(Variables - X, Y)

Bağımlı Değişken( Target, Dependent, Output, Response)

Veri setinde ilgilendiğimiz değişkendir.

Doğrusal modellerde hedeflediğimiz değişken yani y bağımsız değişkeni, diğer x bağımsız değişken(ler)ine bağlı olduğu için bunu bağımlı değişken olarak adlandırırız. Ağaç yöntemlerinde ise doğrusal bir ilişki olmadığı için genelde target olarak isimlendirilir. Yapay sinir ağlarında ise output olarak ifade edilir. Yaygın olarak ise target ifadesi kullanılır.

Bağımsız Değişken(Feature, Input, Column, Predictor, Explanatory)

Bağımlı değişkeni oluşturan diğer değişkenlerdir. Genelde feature ifadesi kullanılır.

2. Öğrenme Türleri

Gözetimli(Supervised): Bağımlı ve bağımsız değişkenlerin bir arada olduğu öğrenme türüdür.

Gözetimsiz(Unsupervised): Bağımlı değişkenin olmadığı öğrenme türüdür.

Pekiştirmeli Öğrenme(Reinforcement): Amaca yönelik ne yapılması gerektiğini öğrenen türdür.

3. Problem Türleri

Regresyon: Bağımlı değişken sayısal değerlerden oluşuyorsa bu regresyon problemidir. Fiyat gösteren bir değişken gibi.

Sınıflandırma: Bağımlı değişken kategorikse(kedi- köpek, kadın-erkek…gibi) ve sınıf tahmini yapılmak isteniyorsa bu bir sınıflandırma problemidir. İlgilendiğimiz noktaya 1 diyerek çözüm yaparız.

4. Model Eğitmek (Model Training/ Fitting)

Model kurmak demek elimizdeki verinin yapısını öğrenmek demektir.

Image created by myself

Diyelim ki elimizde ev fiyatları ve metrekareleri olsun. Ev fiyatı ile metrekareler arasındaki ilişkiyi öğrenmek istediğimizde bu ilişkiyi modelleriz. Yukarıda bulunan grafikteki pembe doğru da öğrenilen yapıdır. Elimizde olmayan verileri artık bu öğrenilen yapıdan genelleme yaparak çıkarabiliriz. Bu pembe doğruda fit ettiğimiz doğrudur, model kurmakta kısaca böyledir.

5. Model Değerlendirme Metrikleri

Tahmin modelini kurduktan sonra modelin performansı iyi mi kötü mü ölçmemiz gerekir.

Regresyon modellerinin başarısını gözlemlemek için ise bazı metrikler vardır. Bunlar:

a. Hata Kareler Ortalaması (MSE)

Regresyon problemleri için kullanılır. Gerçek değerler ile tahmin edilen değerler arasındaki farkların karesinin toplamının ortlamasıdır. Gerçek değerler ile tahmin ettiğimiz değerler arasında kıyaslama yapmamıza olanak sağlar.

b. Hata Kare Ortlamasının Karekökü (RMSE)

MSE’de yapılan kare alma işlemi şişirme yapar. Karekökünü alarak bunu dönüştürürüz. Böylece kare almanın maliyetini ortadan kaldırmış oluruz.

c. Mutlak Hatalar Yöntemi (MAE)

Bir başka metrikte mutlak hatalar yöntemidir. Hatanın şişik gözükmemesi için kullanılacak diğer bir yöntemde gözlemlerin mutlak farkını almaktır.

Tüm bu metrikler birer araçtır. Modelleri kıyaslamak için kullanılır. Biz bunların düşük çıkmasını bekleriz. Hatayı ölçmek için içlerinden herhangi birini kullanabiliriz. En sık kullanılanı ise MSE’dir. Aşağıda nasıl hesaplandığını görebilirsiniz. Burada görülen y ile bağımsız x değişkenleri arasındaki ilişkiyi modelliyoruz, böylelikle bunu öğrenmiş oluyoruz. Ayrıca kare işlemi de ölçüm hatasıyla karşılaşmamak için yapılır.

Şimdi ise sınıflandırma problemleri için başarı değerlendirme metriklerine bakalım:

d. Hata Matrisi (Confusion Matrix)

Sınıflandırma problemi için olası iki senaryomuz vardır. 1 sınıfına ya da 0 sınıfına ait olabilirler. Yukarıdaki kavramları örnek üzerinden açıklayalım:

Accuracy: Sahtekarlık durumunu sahtekarlık olarak doğru ifade etmektir. Accuracy sınıf dağılımı dengeli olduğunda doğru bir göstergedir. Genelde ilgilendiğimiz sınıfın frekansı az olduğundan accuracy yanlış sonuç vermektedir. Bu durumda recall ve precision değerlerine bakılmalıdır.

Precision: Sahtekar olarak tahmin edilenlerin gerçekte ne kadarının sahtekar olduğunu ifade eder.

False Pozitif: Önemi çok olmayan hatadır ve istatistikte 1. tip hata olarak adlandırılır. Yanlış alarm vermek gibi düşünülebilir.

Recall: Sahtekar ve sahtekar olmayan şekilde tutulmuş bir veri setimiz olsun. Bu sahtekarlık işlemlerinin ne kadarını doğru sınıflandırdığımızı ifade eder. Dengesiz veriler açısından odaklandığımız sınıfa ilişkin daha doğru yorum yapabilmemizi sağlar.

False Negatif: Sahtekarlık olduğu halde sahtekarlık olmadığını söylemektir. 2. tip hatadır. Kritik, riskli bir hatadır.

F1 score: Harmonik ortalamayla precision ve recall’u ağırlıklandırıp daha doğru sonuç vermesini sağlar. Dengesiz veri problemlerinde daha iyi bir sonuç verir.

Tek bir skora göre başarıyı ölçemeyiz. Hepsine bakmak gerekir.

e. ROC Eğrisi (ROC Curve, Alıcı İşletim Karakteristiği)

Model başarısını değerlendirmek için kullanılan görsel bir yöntemdir. False Positive Rate ile True Positive Rate değerlerini kullanır. ROC eğrisi, farklı sınıflandırma eşiklerine(threshold) göre görselleştirme yapar. Grafikte mavi doğru, eğer yazı tura atılacak olsa gelecek olan 0.50 sonucunu gösterir.

Sınıflandırma problemlerinde makine öğrenmesi modelinin çıktısı aslında 1 sınıfına ait olma olasılığını üretir. Farklı sınıflandırma eşiklerine göre true positive rate ve false positive rate değerleri hesaplanır. Bir eşik değer belirleyerek 0 ve 1 ataması yapılır ve bunun hata matrisi değerleri hesaplanır. Örneğin 1 sınıfının gerçekleşme olasılığı: 0.8, 0.7, 0.5, 0.2 gibi olasılıklar olsun. 1 sınıfına ait olma olasılığını hesaplayan bir de modelimiz olsun ve eşik değeri de 0.5 olsun. 0.5 altında kalanlara 0, üstünde kalana 1 deriz. Sınıflandırma eşiği düşürüldüğünde daha fazla gözlem pozitif olarak sınıflandırılır. Böylece hem false positive hem true positive değerleri artar.

True Positive Rate(Sensivity ya da Recall) = TP / (FN+TP) olarak hesaplanır. Pozitif sınıfın doğru tahmin edilme olasılığıdır. Pozitif sınıfı (1-fraud) hangi olasılıkla doğru yakaldığımızı buluruz.

False Positive Rate = FP/(TN+FP) şeklinde hesaplanır. Yanlış alarm üretme olasılığını verir.

f. Eğri Altında Kalan Alan /Area Under Curve (AUC)

AUC, tüm olası sınıflandırma eşikleri için toplu bir performans ölçüsüdür. ROC eğrisinin altında kalan alanı ifade eder. ROC eğrisinin tek bir sayısal değer ile ifade edilmesini sağlar. Bu alan da integral ile hesaplanır.

g. Log Loss

MSE değeri gidibir. Log Loss’da ortalama hatayı ifade eder. Buradaki tahmin edilen değerler(y şapkalar) sınıflandırma probleminde olduğumuz için birer sınıf olasılığıdır. Gerçek değerler(y’ler) 1,0,1,0.. gibi değerlerden oluşur.

İki farklı y şapka değeri için bu formülün ilk kısmını biraz yorumlayalım. İlk y şapka değerimiz 0.8 ve y değerimizde 1 olsun. Bu durumda ilk gözlem değerindeki hatamız 0.09 gibi değer olur. İkinci y şapka değerimiz ise 0.5 olsun. Bu durumda ikinci gözlem değerindeki hatamız 0.3 gibi değer olur. Buradan yola çıkarak şunları söyleyebiliriz: Aynı gözlem birimi için 1 sınıfının olasılığını yüksek bulduğumuzda entropi daha küçük çıktı. Entropi yüksekse bilgi çoktur. Çeşitlilik vardır. Varyans yüksektir. Yani entropi açısından 1 ile 0.8 arasındaki farktır bu. Düşük entropi bilgisizlik demektir. Bu da gerçek değer ile tahmin edilen değer arasındaki farktır. Bu fark ne kadar küçükse o kadar iyidir. Karmaşıklık azdır. Fonksiyonun geri kalanı ise genelleme yapmak için kullanılır.

Log Loss’u optimizasyon yöntemleri kullanırken sürecimizi raporlamak için kullanırız. Hata optimizasyonu yaparken süreci yönetmek adına odaklandığımız metriktir. Cross entropy olarakta bilinir.

Model Doğrulama (Validation) Yöntemleri

  1. Holdout Yöntemi(Sınama Seti yaklaşımı)

Elimizdeki orjinal veri seti eğitim ve test olarak iki parçaya ayrılır. Train seti ile model kurulur, test ile bu model test edilir. Veriyi 80/20 yada 70/30 gibi iki parçaya bölüyoruz. Bir parçayla modeli eğitiyoruz, diğeriyle test ediyoruz. Eğitim hatası test hatasının kötü bir tahmincisidir.

2. K Katlı Çapraz Doğrulama(k fold cross validation)

Yaygın iki kullanımı vardır.

Orijinal veri seti k (10) adet parçaya ayrılır. Her bir iterasyonda k-1 (9) parçayla model kurulur ve bir tanesiyle test yapılır. Bu işlem böyle devam eder ve k (10) sefer aynı hesaplama yapılır. Bütün test sonuçlarının ortalaması alınıp ortalama hata elde edilir. (auc, mse, accuracy…) Bu yaklaşım yaygındır fakat modellemek için kullandığı verileri tahmin etmek için de kullandığından dolayı bazı problemlere yol açar. Fakat küçük verilerde kullanılabilir.

Diğer yöntem ise şöyledir: Elimizde orjinal veri seti var, bunu eğitim ve test olarak ikiye ayırıyoruz. Sonra eğitim setine çapraz doğrulama yapıp burdan ortalama hatayı alıp modelle ilgili bilgi edinip sonra diğer veri setini alıyoruz. Elimizde yeteri kadar veri seti olduğunda kullanılması en doğru yöntemdir.

Yanlılık -Varyans Değiş Tokuşu (Bias- Variance Tradeoff)

Overfitting: Modelin elimizdeki veriyi öğrenmesidir, ezberlemesidir.

Underfitting: Modelin elimizdeki veriyi öğrenememesidir.

Doğru Model: Modelin elimizdeki veriyi belirli bir hata ile genellenebilir olarak temsil edebiliyor olmasıdır.

Overfitting, sınav sorularını ezberleyen bir öğrenci gibidir. Karşısına başka sorular çıktığında yapamayacaktır. Model verinin yapısını değil kendisini öğrenmiştir. İlişki yapılarını bilmez. Genellenemezdir.

Eğitim Hatası ile Test Hatasının Karşılaştırılması

Overfite düştüğümüzü nasıl anlarız, bu problemi nasıl çözeriz?

Eğitim setiyle test seti arasındaki fark artmaya başladığı anda anlarız. Eğitim seti takıntılıdır, bir yerde veriyi ezberlemeye başlar. Bizim de o noktada durmamız gerekir. Genellenebilirliğini zamanla yitirir.

Model karmaşıklığı: Doğrusal bir modelde değişken sayısının artması, bir lightgbm modelinde iterasyon sayısının artması, yapay sinir ağlarında katman sayısı, hücre sayısı, epoch sayısının artmasıdır.

Doğrusal (Lineer) Regresyon / Linear Regression

wp: ağırlıklar, değişkenin modele etkisi / xp: değişkenler / b: sabit ya da bias

Amacı bağımlı değişken ile bağımsız değişken arasındaki ilişkiyi doğrusal olarak modellemektir. Aşağıdaki örnekte daha iyi anlaşılacaktır:

Aşağıda verilen bias ve weight’e göre 90 metrekare bir ev için fiyat tahmini yapalım.

b: 150
w: 2.5

Python ile Basit Regresyon Uygulaması

Buraya kadar öğrendiklerimizi küçük bir python koduyla anlamaya çalışalım:

import numpy as np
import pandas as pd

# b
b = 150

# weight
w = 2.5

# bağımlı değişken gerçek değerleri
y = pd.Series([300, 310, 310, 330, 340, 350, 350, 400, 420, 450, 450, 470])

# bağımsız değişken değerleri
x = pd.Series([70, 73, 75, 80, 80, 80, 82, 83, 85, 90, 92, 94])

y_pred = b + x * w

150 + 2.5*70

df = pd.DataFrame()
df[“y”] = y
df[“x”] = x
df[“y_pred”] = y_pred

def mse(actual, predicted):
return np.mean((actual — predicted)**2)

mse(df[“y”], df[“y_pred”])

def rmse(actual, predicted):
return np.sqrt(np.mean((actual — predicted)**2))

rmse(df[“y”], df[“y_pred”])

def mae(actual, predicted):
return np.mean(np.abs(actual — predicted))

mae(df[“y”], df[“y_pred”])

Serinin devamını en yakın sürede sizlerle paylaşacağım. Umarım buraya kadar olan kısmı makine öğrenmesini anlamanıza yardımcı olmuştur. Geri bildirimleriniz benim için çok kıymetli. Hoşça kalın :)

Kaynak: https://www.veribilimiokulu.com/

--

--