Günümüz Yazılımcılığının Yükselen Değeri Makine Öğrenmesi (Machine Learning) Nedir?
makine öğrenmesi bilgisayar, telefon vb. elektronik cihazların, geçmiş verileri analiz edip, sonuçlar çıkarması ve çıkardığı bu sonuçlara göre yeni bir davranış oluşturması veya geliştirmesidir. diğer bir söyleyişle (bkz: machine learning)
örneğin: bir hastane laboratuvarının sistemini düşünün. burada yapılan onbinlerce tahlillerin çeşitli bilgiler ile (cinsiyet, boy, kilo, kan grubu, geçirdiği hastalıklar vb..) düzenli olarak kaydedilsin. kaydedilen bu veriler çeşitli algoritmalar ile analiz edilsin. analiz sonucunda:
* a rh+ kan gurubuna sahip 50-60 yaş arasında ki kadınlar x hastalığını geçirmişse y hastalığını da geçirmiştir.
* 1.80 1.90 boyları arasındaki k alerjisine sahip erkekler l hastalığını geçirmiştir.
* ab rh- kan grubuna sahip genç insanlar grip hastalığına daha fazla yakalanıyor.
gibi sonuçlar çıktığını düşünelim.
bu analiz sonuçlarını yönetebileceğimiz bir yazılım ile artık sistemimizi eğitebiliriz. eğittiğimiz sistem bir sonraki hastanın test sonuçlarını çok kısa sürede değerlendirip hangi hastalığa yakalanacağını veya hangi hastalığa sahip olduğunu tespit edebilecek.
üniversitede okuduğum zamanlarda geliştirdiğim bir mobil uygulama (watch me) kullanıcının davranışlarını arka planda çalışarak kaydediyor. belirli zamanlarda da kaydedilen verileri analiz ediyor. analiz sonuçlarına göre kullanıcıya çeşitli önerilerde buluyor. (instagram’a girebileceğini düşünüyorum, genelde şu saatlerde alarm kuruyorsun alarm kurmak ister misin? vb. gibi)
veriseti analizini sağlayan open source program (bkz: weka)
online olarak makine öğrenmesini api aracılığıyla kullanmanızı sağlayan "monkeylearn" adında bir site de mevcut. oldukça kullanışlıdır.
sonuca bağlamak gerekirse; makine öğrenmesi her geçen gün daha fazla alanda kullanılmaya başlıyor. örneğin: makine öğrenmesi kullanılarak geliştirilen sanal hakimin, gerçek hakimlere göre suçluları daha yüksek oranda tespit ettiği görülmüştür. sürücüsüz ulaşımı sağlayan araçlar, çeşitli ameliyatlar yapan robotik kollar, kişilik analizi yapan çeşitli testler, otomatik kargo servisi yapan drone’lar…
makine öğrenmesinin gelecekte çeşitli meslekleri ele geçireceği aşikar. bu teknolojiye entegre olmayı başaran ülkeler, sanayi devrimin sağladığı kazanımlarla daha fazlasını elde edecektir. dünyada azalan kaynaklar ile daha da artacak olan bu rekabet, entegre olamayan ülkeleri daha fazla fakirleştirerek tarih sahnesinden silecektir.
makine öğrenmesinin 3 farklı türü vardır
elimizde 5000 tane sınıflandırılmış data olsun.
supervised learning (eğiticili sınıflandırma): belli bir eğitim datanız vardır ve bu eğitim datanızı kullanarak test datanızı sınıflandırırsınız veya test edersiniz. örnek olarak 3000 eğitim kullanarak 2000 test verisini test ederiz.
semi-supervised learning (yarı- eğiticili öğrenme): belli bir eğitim datanız vardır. bu eğitim datasını kullanarak test verisini eğitirsiniz, eğitilen test verisini eğitim verinize eklersiniz. böylece eğitim veriniz artmış olur bu eğitim verisi ile kalan test verinizi sınıflandırırsınız. örnek 1500 eğitim datası 1500 eğitilecek data 2000 test datası. 1500 eğitim ile 1500 eğitilecek datayı eğitiriz böylece 3000 eğitim datamız olur daha sonra bu 3000 ile 2000 test verisini sınıflandırırız.
unsupervised learning: eğitim datanız bulunmaz eğitim datanızı sistem kendisi oluşturur ve test verisini sınıflandırır
makine öğrenmesindeki temel kavramlar
veri: yorumlanmamış bilgilerdir. örneğin: bir ilçenin bir gün boyuncaki sıcaklığının saniyelik olarak kaydedilmesiyle oluşmuş yüzbinlerce satırlık bilgiler.
veri seti: birbiriyle arasındaki ilişkinin (korelasyon) olup olmamasının bir önemi olmayan, lakin birden fazla türde verinin birleşimiyle oluşan veri kaynağına denir. örneğin yukarıdaki örneğe bir de o gün o ilçedeki her saniyede kaydedilen nem verileri de eklenirse bir veri seti elde etmiş oluruz. makine öğrenmesi uygulamalarında veri setlerini böleriz.
veri setleri neden bölünür?
veri setlerinin bölünme nedenini şöyle örnekleyebiliriz. diyelim ki elimizde 12 aylık bir hava durumu verisi var. ve biz bu verileri kullanarak hava durumu tahmin uygulaması yapmak ve gelecekteki hava durumlarını tahmin etmek istiyoruz. makine öğrenmesi algoritmaları kendilerini eğitmek için veriye ihtiyaç duyar. şöyle düşünebilirsiniz. bir şehre dair kanaatleriniz memleketi o şehir olan daha önceden tanıdığınız kişilerle oluşur. memleketi o şehir olan insanların az çok ne özelliklere sahip olduğunu bilirsiniz. işte makine öğrenmesi uygulamaları da bizden o şehrin insanlarını kafasında bir şekle oturtmak için memleketi o şehir olan insan verilerini ister.
fakat olay burada bitmiyor. bizim elimizde sınırlı veri var ve algoritmamızın doğru çalışıp çalışmadığını test etmeliyiz. diyelim ki tanıdığımız tüm hataylı insanların verilerini algoritmamıza verdik. bu sefer doğru çalışıp çalışmadığını test etmek için elimizde insan verisi kalmaz. bundan dolayı verilerimizi ikiye ayırırız. hataylı insanları tanıması için insan verilerimizin bir kısmını veririz. lakin doğru çalışıp çalışmadığını test etmek için de verilerimizin kalan kısmını saklarız. veri setleri genel olarak ikiye bölünür.
eğitim seti: eğitim seti makine öğrenmesi algoritmasının eğitilmesi için verileri tanıması ve tahminlerini bu veriler üzerinden yapması için oluşturulan settir. buna kısaca bundan sonraki verilere belli şekillerde önyargılı olmasını sağlayan veri seti diyebiliriz.
test seti: eğitim seti kullanılarak oluşturulan algoritmanın ne derece doğru çalıştığını test etmek için daha önce kenara ayırdığımız veri setidir.
Düşündürücü bir yorumla bitirelim
günlük hayatta farkında olmadan kurduğumuz sebep-sonuç ilişkilerini keşfeden teknolojidir makine öğrenmesi.
insan beyninin şöyle bir özelliği var; günlük hayatta onbinlerce uyarana maruz kalıyoruz ve her birinin bilinçli olarak düşünsek beynimiz başka bir iş yapamaz hale gelirdi. bu sebeple enerji tasarrufu için beyin evrimsel olarak bilinçaltı denilen bir mekanizma geliştirdi; arka planda çalışan bu işlemci, günlük hayatta karşılaştığımız pek çok detayı değerlendirerek sadece sonuçları üst beyne iletiyor.
örneğin yeni biri ile tanıştınız ve bu kişiyi gözünüz pek tutmadı. neden? kimse bu soruya somut bir yanıt veremez, bu sonucun sebebini kesin şekilde söyleyemez. belki kıyafetlerindeki ufak bir detay, belki yüzündeki belli belirsiz bir yara izi, belki konuşma şeklindeki ufak bir vurgu. ve hatta bunların çeşitli bir kombinasyonu. hiç kimse günlük hayatta bu binlerce detayı puanlayıp bir kağıda alt alta yazıp birbirine not vermez, bunu bilinçaltı yapar ve sadece sonucu üst beyne iletir; "bu kişiyi gözüm pek tutmadı". biz bu rapor sonuçlarına "hissetmek, öyle gelmek" vb. isimler taktık.
işte bilgisayarları kullanarak binlerce detayı işleyerek bunlar arasında sebep sonuç ilişkisi bulmaya makine öğrenmesi deniyor. makineler bilinçaltımızın yerini alıyor ve bizim ilk bakışta söyleyemediğimiz ama bilinçaltında algıladığımız detayları işleyerek bize sonuçlar üretiyorlar. makine öğrenmesi budur.