Makine Öğrenimi: Bölüm 1 – Tanımlar

Selam! Yüksek lisans sürecim boyunca aldığım derslerin daha çok pekişmesi için konuları öğrenirken bir yandan da yazıya dökmeyi, internet siteme koymayı düşündüm. Bu sayede ilgili dersi alan veya konularına ilgili olan insanlara da bir faydam dokunur dedim. Bu seride “Machine Learning (Yapay Öğrenme, Makine Öğrenimi)” adlı dersin konularını ele almaya çalışacağım. Umarım yazı dizisi sürekliliğini koruyabilir.

TANIM

Makine öğrenmesi, bilgisayarların bir performans ölçütünü tecrübe veya örnek veriler aracılığıyla optimize etmesi (iyileştirmesi)dir. Makine öğrenmesi; İşin uzmanları insanların olmadığı, uzmanlıklarını aktaramadığı zamanlarda faydalıdır. Ayrıca sözkonusu problemin çözümü sürekli değişiyorsa, zamanla bir parametreye bağlı olarak adaptif bir yapı sergiliyorsa, makine öğrenmesi ile bu ilişki yakınsanabilir.

Kısacası, elimizdeki veri kümesini bir algoritmadan (makine öğrenmesi fonksiyonu) geçiriyoruz ve çıktı olarak bir tahmin alıyoruz. Bu çıktı bize verinin makine öğrenmesinde kullandığımız fonksiyonlardan geçtikten sonra bu fonksiyonlar tarafından üretilen kümeleme, tahmin vs. sonuçları gösteriyor.

Günümüzde veri artık her yerden edinilebiliyor. Sırf bu iş için açılmış siteler, kurulmuş platformlar var. İnternet tam bir veri çöplüğü durumunda, bu yüzden veriyi kendimiz edinebilmemiz de pek zor değil. Önemli olan kısım da veriyi anlamlandırabilmek oluyor. İşte bu kısımda da makine öğrenmesi ön plana çıkıyor.

 

TÜRLER

Makine öğrenmesi dediğimizde karşımıza belli başlı gruplandırmalar çıkıyor. Bunlardan zaten ileride detaylıca bahsedeceğiz fakat şimdiden en azından temel tanımlarına girelim;

  • Ortaklık: Bu türde verilerin ortaklığı analiz ediliyor. Örnek olarak bir alışveriş sepetini verebiliriz. X ürününü alan insanların Y ürününü de alma ihtimali üzerine bir algoritma yazılmak istenirse başlangıcı şu şekilde olacaktır;

    \[P(Y|X)\]

  • Gözetimli Öğrenme: Bu türde algoritmaya veriler çıktılarıyla birlikte sunulur ve gelecek test verilerinin tahmin edilmesi sağlanır. Örnek olarak gün içerisindeki saatlik sıcaklıkların kaydedildiği bir veritabanı düşünelim. Çeşitli sıcaklık aralıklarına göre bu sıcaklıklara birer label (etiket) atayalım. Bu etiketlerin isimleri sıcak, soğuk, çok sıcak, çok soğuk vb. olsun.Sıcaklık verilerini onlara karşılık gelen etiket değerleriyle birlikte algoritmaya sokuyoruz ve onu eğitiyoruz. Ardından algoritmayı eğitirken hiç kullanmadığımız veriler üzerinden de sadece sıcaklık verisini vererek algoritmanın bu sıcaklığın etiket değerini tahmin etmesini sağlıyoruz. Algoritmanın bu testteki doğru bilme oranı da bize isabet oranını veriyor. Bu gözetimli öğrenme çeşidi sınıflandırma (classification) olarak geçiyor. Bu grupta bir de regresyon (regression) denilen bir metodumuz var. Regresyon da veriler arasındaki ilişkiyi bulma, bunu bir fonksiyona dökme işlemidir. Böylelikle veriler bir fonksiyon çıktı grafiğinin üzerine oturtulabilir hale gelir. Aşağıda 1. dereceden bir fonksiyonun çıktısına oturtulmuş bir veri seti görüyorsunuz.

  • Gözetimsiz Öğrenme: Bu öğrenme türünde algoritma eğitilirken veriye ait sınıflandırma (label, etiket) bilgileri sağlanmaz. Algoritma aldığı verilerin karşılığının ne olduğunu bilmez. Böylelikle elde ettiği veriyi en iyi nasıl gruplandırabilir, bunun üzerine bir optimizasyon sağlar. Çıktı olarak doğal olarak bir etiket verisi veremeyeceğinden, gruplandırma bilgilerini verir. Örnek olarak biyoinformatikte motifleri öğrenme, mağaza altyapılarında müşteri kümelendirme, görüntü işlemede renk sıkıştırma vb. gibi örnekler verilebilir.

 

ÖZELLİKLER VE ÖRÜNTÜLER

Konuya giriş yazımızı yazıyorken illa hakkında biraz bahsetmemiz gereken birkaç kavram daha var. Öncelikle özellik ve model kavramlarından bahsedelim.

  • Özellik (Feature): Verilerin taşıdığı her ayrı karakteristiğe denir. Diyelim ki bir objeyi niteleyen bir veri setiniz olsun. Bu veri setinin içerisinde objeye ait büyüklük, renk, şekil, hacim vb. bilgileriniz bulunsun. Bu saydığımız her şey özellik olarak kabul edilir. Özellik numerik (sayılabilir) veya sembolik (renk vb.) olabilir. n sayıda farklı özellik, n boyutlu bir özellik vektörü oluşturur. Bu vektörün oluşturduğu uzaya da özellik uzayı (feature space) denir. Bizim tanımlayabileceğimiz her obje, aynı anda tek bir özelliğin birden fazla türüne sahip olamayacağından, tanımlı uzayımızda bir nokta ile gösterilir. Örneğin 3 adet özelliği barındıran bir özellik uzayı aşağıdaki gibi görünecektir.

  • Örüntü (Pattern): Özelliklerin birleşim halidir. Bu şekildeki veriler sadece özellik olarak değil, özelliğin gözleminin arkasında yatan konsepti de içerirler. Böylelikle bu veri sayesinde veriler arasındaki ilişki önceden tanımlanmış olur.

 

ÖZELLİK SEÇİMİ

Peki bir özelliği iyi yapan nedir? Aslında bunu genelleyebilecek birkaç cümle sıralayabiliriz.

  • Bir özellik vektörünün kalitesi farklı sınıflara ait verileri ayrıştırabilme yeteneğine bağlıdır.
  • Aynı sınıfa ait veriler aynı özellik değerlerine sahip olmalıdır
  • Farklı sınıfa ait veriler farklı özellik değerlerine sahip olmalıdır

Bu yüzden eğiteceğimiz algoritmamız için girdi özelliklerini seçerken, bu özelliklerin sınıfları yeterince net ayrıştırıyor olmasına dikkat etmeliyiz. Sınıflar arasında bir ayrıma götürmeyen, ya da güvenilir ayrımlar sağlamayan özelliklerin algoritma eğitimine katılmasından kaçınmalıyız.

 

MODEL SEÇİMİ

Algoritmamızı sınıflandırma için eğittiğimizde, bize sınıflar arası ayrımlar, sınırlar ile dönüş sağlayacaktır. Her ayırma stratejisi bir model olarak kabul edilir.

Hangi modeli kullanacağımız, yani veriyi hangi türde sınıflandıracağımız çeşitli parametrelere bağlıdır. Bu parametreler projeye veya istenen çıktıya göre değişebilir. Her türlü tipte gözetilmesi gereken bazı parametreler hız ve basitliktir.

Hız: Her modelin eğitim süresi farklı olabilir. Modelin arkasında yatan matematiğe göre modelin eğitilmesi göreceli olarak çok uzun veya çok kısa sürebilir. Bu yüzden ortam şartlarına göre hız faktörü düşünülmelidir.

Basitlik: Modelin komplekslik seviyesi de önemli bir faktördür. Modelin komplekslik derecesi arttıkça başarı yüzdesi de 99.9%‘a yakınsar. Ancak fazla kompleks bir model en başarılı model değildir. Aşağıdaki resmi bir inceleyelim.

İlk örnekte veri setine gereğinden az (underfit) bir eşleme uygulayan model örneği görüyoruz, görüldüğü üzere bazı noktalar dışında hiçbir noktayla ilişkili gibi durmuyor. Bu yüzden bu model istenmez. Son örnekte de bütün noktaların tam üstünden geçecek şekilde oluşturulmuş bir model görüyoruz (overfit). Ancak bu model de istenmeyen bir model. Çünkü modelimizin aşırı kompleks olması işlem süresini de uzatacak. Aynı zamanda aşırı detaylı tanımlı bir model, gerçekten bir sınıf içerisinde olması gereken bir verinin o şekilde sınıflandırılmasını engelleyebilir.

Kimler Neler Demiş?

avatar
  Subscribe  
Notify of