Yeni Başlayanlar İçin Denetimli Makine Öğrenmesi

Aysen Çeliktaş
9 min readMar 11, 2023

--

İlk yazımı, genel hatlarıyla makine öğrenmesinin büyük bir kısmını oluşturan, denetimli makine öğrenmesi (%80) üzerine yazmak istedim. Denetimsiz makine öğrenmesi üzerine okumak isterseniz buraya, derin öğrenme için ise burada ki linke göz atabilirsiniz. Ayrıca, başlangıç düzeyde bir EDA’nin (Exploratory Data Analyses) Python ortamında nasıl yapıldığına dair basit birtakım fonksiyonların kullanımına da “EDA (Python)” yazımdan ulaşabilirsiniz.

[yazar tarafından Canva’da hazırlandı]

Makine öğrenmesini tam olarak zihinde canlandırabilmek için öncelikle genel hatlarıyla yapay zekanın ne olduğunun bilinmesinde fayda var. AI’yı anlamının üzerine bir yerde çok güzel bir örneklendirme okudum. Yazılana göre, AI’yı tanımlamada başarısız olunması, konuyu “felsefe taşını arayan ama ne aradıkları hakkında neredeyse hiçbir fikri olmayan simyacılarınkine” dönüştürmektedir. [1]

Yapay zeka basitçe tanımlanmak istenirse “Makinelerin, öncelikle insanlar aracılığı ile beceriler kazandırılarak, daha sonra o beceriler üzerinden insan aklının yapmasının zaman alacağı ve belki de mümkün olmadığı durumların incelenmesi, anlamlandırılması ve istenilen duruma özgü anlam çıkarılmasını sağlayan algoritmalar bütünüdür.” denilebilir. 1950 yılında, makalesine “Can Machines Think?”[2]gibi çarpıcı bir soruyla başlayan Alan Turing, bu alanda ilk adımları atmıştır. Makine öğrenimi adını ilk tanımlayan kişi ise Arthur Samuel’dir. 1959 yılında, Dama oyununu ortalama bir insandan daha iyi oynayan öğrenme şemaları ortaya koymuştur.[3]

[yazar tarafından Canva’da hazırlandı]

Esas konumuz olan makine öğrenmesinden devam etmek gerekirse, üç ana başlığa ayrılabilir. Bunlardan en çok kullanılanı denetimli makine öğrenmesidir (supervised machine learning). Genelleme yapılacak olursa, ML’in %80’i bu algoritmalar üzerinden yapılıyor denilebilir. Burada gerçek (ground truth) bir durum ve buna ait öznitelikler (feature) söz konusudur. Makine tüm bunlarla eğitilir ve bir tahmin elde eder. Genel olarak kullanım alanları, prediction ve classification olarak ayırılır. Denetimsiz makine öğrenmesinden (unsupervised machine learning) bahsedilecek olursa, burada verilere karşılık gelen gerçek bir değer (ground truth) yoktur. Öznitelikler üzerinden veri seti analiz edilir. Elde edilen analiz sonuçlarının anlamlandırılması için insana ihtiyaç vardır. Denetimli makine öğrenmesinde ise tahmin ettiğiniz bir hipotez vardır ve bunu doğrulamak için veri seti, test ve train olarak ikiye ayırılır. Fakat, denetimsiz makine öğrenmesinde doğrulanacak bir hipotez olmadığı için data setinin tamamı kullanılır. Burada amaç, datayı tanımaktır.

Şekil1. input data set given to the model for supervised and unsupervised machine learning [yazar tarafından Canva’da hazırlandı]

Regression ve Classification nın ne olduğu kısaca ifade edilirse, regression için sürekli bir değer tahmini olduğu söylenebilir. Kullanım alanı olarak piyasa tahmini verilebilir. Örnek olarak, verilen bilgilere istinaden yapılan aracın fiyat tahmini vb. Classification ise, adı üzerinde bir sınıf (class) ayrımı yapar. Örnek olarak, yapılan kredi kartı harcamalarının gerçek mi yoksa sahte mi olduğunu bulmak vb.

Bu yazıda regression başlığı altında, Linear Regression’dan, classification başlığı altında ise Logistic Regression, Decision Tree ve Distance Base tabanlı algoritmalardan kısaca bahsedeceğim. Şu da belirtilmeli ki, classification altında bahsedeceğim, Logistic Regression dışında ki algoritmalar regression yapmak içinde kullanılabilir.

[yazar tarafından Canva’da hazırlandı]

Öncelikle, regression algoritmalarında kullanılan metriklerden kısaca bahsetmekte fayda var. Tahmin edilen yeni değerler (ý) ile gerçek değerlerin (y) birbirine yakın tutulması çok önemli bir ölçektir. Aynı zaman da test ve train verisi üzerinden de metrikler ayrıca elde edilerek, birbiri ile kıyaslanır. Eğer değerler birbirine çok uzaksa, modelin overfitting olduğunu, train de çok iyi öğrenmiş gibi gözükerek, test setinde doğru sonuçlar verebilme ihtimalinin çok düşük olduğu gözlemlenir. Buradan, modeli genellemediği sonucuna varılır. Underfitting durumda ise model fazla genelleme yaparak yeteri kadar öğrenmez. Regression algoritmaları kullanılarak bulunan sonuçların, train ve test seti üzerinden değerlendirilmesi için kullanılan evaluation metrics ya da loss functions sırasıyla:

Verilerde aykırı değerler varsa ve bunlar görmezden gelinmek isteniyorsa MAE kullanılabilir. Bunlar gözden çıkarılmak istenmiyorsa MSE’yi kullanmak daha doğru olacaktır. Ayrıca, aykırı değerler görmezden gelinmek istenmiyorken, model daha kolay yorumlanmak isteniyorsa da RMSE kullanılabilir.

Linear Regression: Parametrik bir regression algoritması olan Linear Regression ın mantığı, basitçe eğri uydurmaktır. Bu eğri Ordinary Least Square (OLS) Method kullanılarak bulunabilir.

Verilen feature ların (xi ) ve ground truth (y) un üzerinden, en uygun parametreler hesaplanarak bir doğru uygulanır. Bu doğru ile katsayılar (coefficient) hesaplanır ve bu coefficient lar üzerinden yeni tahminler elde edilir.

Şekil2. Linear Regression [yazar tarafından Canva’da hazırlandı]

Eğer işin içerisine regularization girerse (Ridge: L1, Lasso: L2, ElasticNet), optimizasyon probleminin çözülmesi için devreye Gradient Descent yöntemi girmektedir.

Burada α learning rate dir ve genellikle sıfıra yakın değerler seçilir. Cost fonksiyonunun θ parametresine göre kısmi türevi alınır ve en küçük değerine ulaşıncaya kadar işlem kendini tekrar eder.

Şekil3. Gradient Descent [yazar tarafından Canva’da hazırlandı]

Classification yöntemlerinde kullanılan metrikler, veri setinin balanced ve unbalanced olma durumuna göre seçilir. Eğer veri seti balance bir dağılıma sahipse Accuracy kullanılabilir. Fakat unbalanced bir veri seti varsa, o zaman Precision, Recall ya da bu ikisinin harmonik ortalaması olan F1 score üzerinden modelin stabilitesi değerlendirilebilir. Recall, true condition positive eksenimiz ile; Precision condition false negative eksenimiz ile ilişkilidir. Bu metrikler sınıflandırılan sample ların condition matriste yer alan sayıları ile hesaplanır. Condition matrise yerleşmeleri ise kabaca, sample ların doğru ve beklenen sınıfa yerleştirilip yerleştirilmemesi üzerinden değerlendirilir.

  • TP (True Positive), öne sürülen hipotezin doğru olduğu predict edildi ve doğru çıktı.
  • FP (False Positive), öne sürülen hipotez doğru olduğu tahmin edildi ama yanlış çıktı.
  • FN (False Negative), öne sürülen hipotez yanlış olduğu tahmin edildi ama doğru çıktı.
  • TN (True Negative), öne sürülen hipotez yanlış olduğu tahmin edildi ve yanlış çıktı.
Şekil4. Condition Matrix [yazar tarafından Canva’da hazırlandı]

Logistic Regression: Parametrik bir algoritma olan Logistic Regression, classification algoritmasıdır. Ground truth için feature lar üzerinden bir olasılık (probability) hesaplayarak, target ın konumlandırılmasını kapsar. Regression algoritması olarak geçmektedir fakat classification algoritmasıdır. İsminde regression geçmesinin sebebi, arka planda regression algoritmasının çalışmasıdır.

Şekil5. Linear Regression & Logistic Regression [yazar tarafından Canva’da hazırlandı]

Linear Regression ile hesaplanan değer, Sigmoid fonksiyonundan geçirilerek (0–1) bir probability elde edilir. Sigmoid fonksiyonunun üzerinde bulunan, Odd equation üzerinden yorumlar yapılır. Target a göre hesaplanan her probability değeri 0 ile 1 aralığındadır ve 0,5 in üzerinde ya da altında kalmasına göre sınıflandırmayı gerçekleştirir. Burada cost function, Maximum Likelihood Estimation’dır.

Decision Tree: Bu algoritma nonparametric bir algoritmadır. Karar ağaçları üzerinden, belirlenen threshold ile kararlar verilerek sonuca gidilir. Sözü edilen threshold değeri, feature üzerinden kesilecek sınırdır. Bu sınır doğrultusunda, ağaç pure olduğunu düşündüğü alan için split (ayırım) yapar, impure olan alan için threshold üzerinden soru sormaya devam eder ve siz ona dur diyene kadar bu süreç devam eder. Bu sebeple, bu algoritmanın greedy bir algoritma olduğu söylenir. Eğer budanmazsa overfittinge sebep olur.

Şekil6. Decision Tree [yazar tarafından Canva’da hazırlandı]

Eğer purity kavramına değinmek gerekirse, bunun ölçümü Entropy ve Gini fonksiyonları ile yapılmaktadır. Entropy ve Gini nin 0 olması demek, ayırdığınız class ın en pure hali ile ayrıldığını gösterirken, tepe noktasında olması, class içerisinde ki karmaşanın en yoğun olduğu yeri ifade eder.

Şekil7. Gini & Entropy [yazar tarafından Canva’da hazırlandı]

Nonparametric bir algoritma olduğu için multicollinearity den ve verinin normal dağılama sahip olmayışından etkilenmez. Veri setinde scaling yapmaya ihtiyaç yoktur. Eğer scale ederseniz bir sıkıntıya neden olmaz ama bir etkisi de olmaz. Feature ların kesileceği yeri değil, sadece değerini değiştirmiş olursunuz. Modele en çok kazanç sağlayan feature, en önemli feature dır. Bu algoritmanın hesaplama maaliyeti çok yüksektir ve stable bir algoritma değildir. Model yapılan en küçük değişiklikten bütünüyle etkilenir. En büyük dezavantajı ise sahip olduğu high variance sorunudur.

Decision tree algoritmasının sahip olduğu high variance sorunu sebebiyle, bu algoritma ile daha sağlıklı sonuçlar elde edebilmek için Ensemble metod lar geliştirilmiştir. Ensemble learning dediğimiz bu metodlar, birden fazla zayıf learner ın bir araya getirilerek, meta learner oluşturulmasını içermektedir. Homogeneous ve heterogeneous olarak iki gruba ayrılır. Homogeneous ensemble metodlar ise iki farklı yöntem ile gerçekleştirilir. Bunlardan biri Bagging diğeri ise Boosting yöntemleridir. Bagging in çalışma prensibinde, ana datadan alınan subsample lar her ağaç için farklı oluşturulurken, Boosting in çalışma prensibinde oluşturulan her bir ağaca aynı subsample eğitilmek üzere sokulmaktadır. Yani Bagging de farklı veri setlerinden alınan sonuçlar ile meta learner oluşturulurken, ağaçlar birbirini etkilemez. Sonuç olarak, hepsinin bulduğu sonuca yönelik ortak karar verilir. Boosting de ise aynı subsample sırasıyla her bir ağaçta eğitildikten sonra eğitilmiş hali ile yeni bir ağaca girdi olarak verilir ve ağaçlar birbirini etkiler. Bu da demek oluyor ki, Bagging de weak learner ların meta learner lara olan etkisi eşitken, Boosting de weak learner ların meta learner a olan etkisi eşit değildir.

Ensemble learning de amaç kontrol edilebilir modeller elde etmektir. Bagging metodlar variance ı düşürmek için çalışırken, Boosting metodlar bias ı azaltarak iyileştirme yapmaya çalışır.

Şekil8. Bagging and Boosting at Ensemble Learning [yazar tarafından Canva’da hazırlandı]

Random Forest: Ana veri setinden oluşturulan N adet subsample ların 2/3 ünün ağaca verildiği bir bagging ensemble metod dur. 1/3 ünü ise ağacın performansını ölçmek için kullanır. Aynı zamanda bütün feature ları kullanmaz, örnek olarak √𝑁 kadar feature kullanabilir. Random forest da rastgele çalışma prensibi ile high variance sorununun önüne geçilmeye çalışılır.

Şekil9. Random Forest [yazar tarafından Canva’da hazırlandı]

AdaBoost: Boosting ensemble bir metod olarak, veriyi farklı farklı ağaçlara sokarak ve her ağaçta veriyi manipüle ederek sonuca gider. Veriyi, hataları ağırlıklandırarak manipüle eder.

Şekil10. AdaBoost [yazar tarafından Canva’da hazırlandı]

Gradient Boosting: Boosting modellerden biri olan bu modelde devreye Gradient Descent algoritması girmektedir. Loss function ın eğrisinde ki minimum değeri bularak, orada ki hyperparametreleri geri döndürür. Böylece modelin hatasını düşürmeye çalışır. Decision tree tabanlı hybrid bir modeldir.

Şekil11. Gradient Boosting [yazar tarafından Canva’da hazırlandı]

XGBoost: Bu model, gradient boosting in extreme halidir. Ağaçlar üzerinde regularization yaparak extreme bir versiyonu geliştirilmiştir. Split function entropy ya da gini değildir, burada similarity score önemlidir. Paralel işlem yaparak, sadece seri çalışabilen gradient boosting modelinden daha hızlı sonuca gider.

Şekil12. Extreme Gradient Boosting [yazar tarafından Canva’da hazırlandı]

K-Nearest Neighbors (KNN): Distance based bir algoritma olan KNN seçili noktaların, en yakın olan noktalarına bakar ve kendisine göre onları bir sınıfa konumlandırır. Burada ki komşu sayısı k ile temsil edilir. Seçili noktalar, ağırlıklandırılabilir. Ayrıca, noktalar arasında ki mesafenin nasıl hesaplanacağı önemlidir ve bu hesaplama yöntemlerinden en genel kullanılan üç yaklaşımı Euclidean, Minkowski ve Manhattan dır.

Şekil13. K-Nearest Neighbors and some distance algorithm [yazar tarafından Canva’da hazırlandı]

Support Vector Machine (SVM): Distance based bir algoritma olan SVM, veriler üzerinden support vektörler oluşturarak, bu vektörler arasına bir line çizer. Bir hiper düzlem yardımı ile veriler ayrıştırılmış olur. Line çizildiği alan genişletilip büyütülebilir, bu alana marjin denir. Burada modelden iyi sonuç alabilmek için marjin genişliğinden yararlanılabildiği gibi, marjin aynı zaman da veriye göre eğilip bükülebilir. Fakat çok eğilip bükülürse, overfittinge sebep olur. Küçük ve orta büyüklükte ki veri setleri için uygun bir yöntemdir.

Şekil14. Support Vector Machine [yazar tarafından Canva’da hazırlandı]

Eğer iki boyutta karmaşık, kolayca ayrıştırılamayan bir veri seti var ise, o zaman kernel trick kullanılabilir. Kernel trick çeşitlerinden biri olan RBF (Radial Basis Function) Kernel, 2 boyutlu bir veri sertini 3 boyutlu bir veri setine dönüştürerek, ayrıştırılmasına yardımcı olan bir yöntemdir.

Şekil15. Support Vector Machine — RBF Kernel [yazar tarafından Canva’da hazırlandı]

Son olarak, machine learning yaparken takip edilen genel aşamalar gözden geçirilecek olursa, yapılması gereken ilk şey “Problem ne?” sorusunu sormak olacaktır. Problem bulunduktan sonra, probleme yönelik ihtiyaca duyulan exploratory data analyses (EDA) gerçekleştirilir. İhtiyaca göre preprocessing süreci yönetilir, impute, encode ve scale işlemleri yapılır. Bunlar tamamlandığında, Supervised machine learning için data seti train ve test olmak üzere iki gruba ayırılır. Train seti üzerinden evaluation gerçekleşir, test seti üzerinden ise modelin doğruluğunu karşılaştıracak analiz elde edilir. Data seti ayırıldıktan sonra, istenilen algoritmaya göre model kurulur ve modele göre metrikler alınır. Bu metrikler üzerinden modelin stabilitesine bakılır. Underfitting ya da overfitting durumuna göre model kabul edilir ya da iyileştirmeye gidilir.

References

[1] AI- Project. (2000, November). AI — What is this. https://dobrev.com/AI/definition.html

[2] Turing, A. M. (1980). Computing Machinery and Intelligence. Creative Computing, 6(1), 44–53.

[3] Samuel, A. L. (1959). Some studies in machine learning using the game of checkers. IBM Journal of research and development, 3(3), 210- 229.

[4] Geron, A. (2019). Handson Machine Learning with Scikitlearn, Keras & TensorFlow. o’Reiley Media. Inc, Sebatopol, CA.

[5] Murphy, K. P. (2022). Probabilistic machine learning: an introduction. MIT press.

--

--