• Mert Türe

Makine Öğrenmesi Nedir?

En son güncellendiği tarih: Eki 11

Mert Türe - Bilgisayar Topluluğu






Herkese merhabalar!

Bugün fazla ayrıntıya girmeden Makine Öğrenmesi’nden bahsedeceğim.


Makine Öğrenmesi’nin (ML - artık böyle kısaltacağım) ne olduğunu bilseniz de bilmeseniz de muhtemelen yıllardır bu alanın avantajlarından günlük hayatınızda yararlanıyorsunuz. Çoğumuz, günlük yaşantımızda ML tarafından yönlendirilen en az bir mobil uygulama, bilgisayar uygulaması ya da web teknolojisi kullanmadan tam bir gün geçirmeyi zor bulabiliriz.


Peki o zaman bu kadar bahsettiğimiz ML nedir?

Tarihi ile başlamak gerekirse bu konuya dahil olmamış insanların birçoğu ML, Derin Öğrenme (DL - artık böyle kısaltacağım) gibi alanların son 10-20 yılda çıkmış alanlar olduğunu düşünüyor.

Arthur Samuel, ilk defa 1959 yılında ML terimini resmi olarak tanımladı. Bu alan, Yapay Zekâ ile daha çok oyunlarda ve sporlarda öncüydü, günlük hayatımızda kullanıma entegre edilmemişti. Kısaca Arthur Samuel, ML’i “bilgisayarlara açıkça programlanmadan öğrenme yeteneği veren çalışma alanı” olarak tanımladı. Peki bu zamanlarda bilgisayarları programlamak bu kadar kolay mıydı? Kesinlikle değildi çünkü şimdiki gibi Scikit-Learn, Pandas, Tensorflow gibi kütüphaneler bulunmuyordu. Bu alanların şu anda öne çıkmasının, o zamanlarda fazla bilinmemesinin ana sebeplerinden birisi de bu kolaylıkların olmaması durumudur. 2000 yılları öncesinde ML ve DL genel anlamda matematiksel bir çalışma alanı olarak kullanılıyordu ve programlanması kolay değildi. Aynı bağlamda incelememiz gerekirse, iki önemli alanın ataları kısaca iyi bir matematik geçmişinden geliyor. Bu sebepten ötürü de günümüzde ML, Veri Bilimi terimleri daha yaygın hale gelse de insanların çoğu hala algoritmaların ne anlama geldiğini, nasıl çalıştığını araştırmadan sadece yazılım dili kütüphaneleri üzerinden çalışıyor. Bu bağlamda da verilecek önemli tavsiyelerden birisi de bu alana girecek arkadaşlar için öncelikle bu alanın mantığını, matematiğini ve algoritmalarını anlamaları gerektiğini söyleyebilirim.

Önerimizi de verdikten sonra konumuza daha derin bir şekilde girebiliriz. ML, Yapay Zekanın bir alt kümesidir. Günümüzde ML, bilgisayara kendi programlarını öğrenme ve geliştirme yeteneği vererek, davranışlarında ve kararlarında daha insan benzeri hale getirme ve hatta bazı durumlarda insanlardan daha iyi duruma getirme çalışmalarının bir bütünüdür.


Bu, minimum insan müdahalesi ile, yani açık programlama olmadan yapılır. Öğrenme süreci, süreç boyunca makinelerin deneyimlerine göre otomatikleştirilir ve geliştirilir. Makineler kaliteli eğitim(training) verileri ile beslenir ve makineleri bu veriler üzerinde eğitmek, ML modelleri oluşturmak için farklı algoritmalar kullanılır. Algoritma seçimi, eldeki veri türüne ve otomatikleştirilmesi gereken etkinlik türüne bağlıdır. Algoritma seçimi, veri işlenmesi ve temizlenmesi gibi işlemlerin çok farklı yöntemleri bulunuyor.

Yukarıdaki tanımlar ML’in biraz daha fiziksel anlatımıydı.


Programlama yönünde anlatmak istersem, öncelikle bir veri setine ve probleme uygun bir makine öğrenmesi algoritması seçiyoruz. Daha sonra bu veri setimizdeki bazı problemleri düzeltmemiz gerekiyor. Bu problemler neler olabilir? Veri setimizdeki eksik bilgiler, işimize yaramayacak yanlış özellikler, verinin türü (yazı olarak kaydedilmiş verileri sayıya çevirebiliriz) gibi gibi…

Bu veri setimizi düzenleme işleminden sonra ML algoritmamız için veri setimizi 2’ye ayırıyoruz. Eğitim (train) seti ve test seti. Öncelikle eğitim setimiz (daha önce olmuş olaylar, kişiler) ile algoritmamızı, yani ML modelimizi eğitiyoruz. Bu eğitim bittikten sonra da modelimiz nasıl öğrenmiş görmek için test seti ile deniyoruz ve karşımıza bir doğruluk (accuracy) puanı çıkıyor. İşlemimiz bu kadar, daha sonrasında yapmamız gereken optimizasyon ve farklı metotlar ile modelimizi, puanımızı geliştirmek (aslında zor kısım buradan sonra başlıyor :) ). Yazımızı bitirmeden önce bir örnek verelim.


Bu örneğimiz bir futbol oyuncusunun maaşını tahmin etmek olsun. Yazımız biraz daha konunun üzerinden olduğu için problemlerin alanlarından bahsetmedik ancak maaş tahmini gibi farklı farklı sayılar tahmin ettiğimiz problemler regresyon problemi olarak bilinir. Yani bu bağlamda, bir regresyon algoritması kullanmamız gerekirdi. Ancak öncelikle bir şeyi unuttuk, algoritmadan önce veri setimizideki sorunları düzeltmemiz gerekiyordu. Eksik veri, özellik (feature) seçimi, standardizasyon gibi işlemleri yapıyoruz. Peki veri setindeki bu özellikler neler olabilir? Futbolcu’nun yaşı, daha önce oynadığı takım, attığı gol, kurtardığı gol, oynadığı mevki…


Veri setimizin işlemlerini yaptıktan sonra yine setimizi eğitim (train) ve test setlerine ayırıyoruz. Daha sonra Python dilinde, Scikit-Learn kütüphanesi ile regresyon modelimizi eğitiyoruz ve modelimiz hazır. Geriye tek kalan nasıl bir model ürettiğimizi görmek için test setimiz ile puanımızı görmek. Umuyorum ki geliştirdiğiniz projelerde yüksek bir puan alırsınız. Bugünlük yazımız buraya kadar.


Bir sonraki blog yazımızda görüşmek üzere.


33 görüntüleme

©2020 Sabancı University IEEE Student Branch tüm hakları saklıdır!

  • Instagram
  • YouTube
  • Twitter
  • LinkedIn