:::: MENU ::::
Makine Öğrenmesi

Özellik Seçimi (Feature Selection) Nedir? Nasıl Yapılır?

Özellik Seçimi (Feature Selection) veri kümesi içerisinde hangi özelliklerin sonuç üzerinde ne kadar etkili olduğunu belirlemek için özellikleri parça parça değerlendirmeye alma işlemine verilen isimdir.

Şekilden de anlaşılacağı üzere yüksek boyutu düşük boyuta indirgeyip, aynı veya daha yüksek doğruluk oranını elde etmeye çalışmaktayız.


Makine Öğrenmesi

Mathworks firması tarafından hazırlanan ve 4 bölümden oluşan Makine Öğrenmesi e-kitaplarını/sunularını okurken bazı yerleri not etmek istedim. Benim notlarıma bakmadan kendiniz okumak isterseniz aşağıdaki bağlantılardan erişebilirsiniz.

1. 1-Introducing_Machine_Learning
2. 2-Getting_Started _with_Machine_Learning
3. 3-Applying_Unsupervised_Learning
4. 4-Applying_Supervised_Learning

1-Makine Öğrenmesine Giriş (Introducing Machine Learning)

Bilgisayarların insanlar ve hayvanlar gibi deneyimlere dayalı bir şekilde öğrenme yapmasına makine öğrenmesi denir.

Makine öğrenmesi veri setleri içerisindeki örüntüleri ortaya çıkarmaya çalışmaktadır. Verinin büyümesiyle makine öğrenmesinin önemi daha da artmıştır. Bir çok gerçek dünya problemine makine öğrenmesi teknikleriyle çözüm aranmaktadır. Örneğin;

Hesaplamalı finans (Computational finance):
Kredi skorlaması (credit scoring)
Algoritmik ticaret (algorithmic trading)

Görüntü işleme ve bilgisayarla görme (Image processing and computer vision)
Yüz tanıma (face recognition)
Hareket algılama (motion detection)
Nesne algılama (object detection)

Hesaplamalı biyoloji (Computational biology)
Tümör bulma (tumor detection)
İlaç keşfi (drug discovery)
DNA dizilimi (DNA sequencing)

Enerji üretimi(Energy production)
Fiyat ve yük tahmini (price and load forecasting)

Otomotiv, havacılık ve üretim (Automotive, aerospace, and manufacturing):
öngörücü bakım (predictive maintenance)

Doğal dil işleme (Natural language processing)

Makine Öğrenmesi Teknikleri, supervised(denetimli,gözetimli,eğiticili) ve unsupervised(denetimsiz,gözetimsiz,eğiticisiz) şeklinde ikiye ayrılmaktadır. Gözetimli öğrenme Sınıflandırma ve Regresyon alt alanlarına, gözetimsiz öğrenme ise Kümeleme alt alanına ayrılmaktadır.

makine-ogrenmesi-teknikleri

Gözetimli öğrenmede girdi ve çıktı verileri kullanılarak sistem öğrenmeye çalışır. Gözetimsiz öğrenmede ise sadece girdi verilerinden bir sonuç üretilmeye çalışılır.

Makine Öğrenmesi Algoritmaları

Çok sayıda vardır ve her geçen günde sayıları artmaktadır. Probleminize göre en uygun algoritmayı bulmak deneme yanılma metoduyla biraz zaman alabilir. Geçmiş çalışmalardan veri setinize en uygun çözümleri kimlerin ürettiğini inceleyerek bir çıkarım yapabilirsiniz.

makine-ogrenmesi-algoritmalari

Makine Öğrenmesi ne zaman kullanılır?

Elimizde çok büyük veri ve çok sayıda özellik var bunları yorumlayacak denklem veya fonksiyonlarımız yok ise bir anlam çıkarmak için makine öğrenmesi kullanılabilir. El yazısı tanıma, dolandırıcılık algılama, sürekli artan veriye sahip alışveriş trendleri gibi problemlerin çözümünde kullanılabilir.

İlginç Gerçek Dünya Problemleri

66 ressamın 550 yıla dağılmış 1700 farklı tablosu ile hazırlanmış bir makine öğrenmesi Diego Velazquez’in Papa Masum X’in portresi çalışmasıyla Francis Bacon’un Velazquez’in Papa Masum X’ten Sonra Çalışması tablolarının ilişkili olduğunu bulmuştur.

papa-masum-x

Isıtma, havalandırma ve klima (heating, ventilation, and air-conditioning (HVAC)) sistemlerinin optimizasyonu ile %10-%25 arası bir tasarruf sağlanmıştır.

Düşük Hızlı Araba Çarpmalarını Tespit Etme uygulaması %92 doğrulukla geliştirilmiştir.

2-Makine Öğrenmeye Başlarken (Getting Started with Machine Learning)

Makine Öğrenmesi sürecinde iyi bir sonuç elde etmek için bir çok yöntem ve yaklaşımla karşılaşılacaktır. Şu ana kadar edinilen tecrübeler ışığında bazı ana yorumlar yapılabilir.
-Veri setleri farklı şekillerde ve büyüklüklerde olabilir.
-Farklı veri tipleri farklı veri ön işleme aşamaları gerektirebilir.
-Doğru modeli seçmek en önemli aşamadır. Probleminize göre model hızı, doğruluğu ve karmaşıklığı parametrelerinden hangisine daha çok önem vereceğiniz ve hangisine daha çok ödün verebileceğiniz size kalmış durumdadır.

DENEME YANILMA MAKİNE ÖĞRENMESİNİN TEMELİDİR. Önemli olan yılmadan, başka yöntemleri de deneyerek başarılı bir sonuç elde etmeye çalışmaktadır.

Bir makine öğrenmesi süreci şu 3 soruyla başlar:
1-Hangi tür veriyle çalışıyorsunuz?
2-Ne elde etmeyi umut ediyorsunuz?
3-Elde ettiklerinizi nerede ve nasıl kullanacaksınız?

Tahmin ve sınıflama için gözetimli öğrenme, kümeleme için gözetimsiz öğrenme metodlarını kullanmalısınız.

Bir Bakışta İş Akışı:

makine-ogrenmesi-sureci

Örnek: Mobil Cihazlar üzerinde çalışan Sağlık Durumu İzleme Uygulaması

Girdi: Telefonun ivmeölçerinden ve jiroskopundan gelen üç eksenli sensör verilerinden oluşur.
Çıktı: Yürümek, ayakta durmak, koşmak, merdiven tırmanmak veya yatmak
Amaç: Girdileri kullanarak bir sınıflandırma modelini eğitip aktiviteleri tahmin etmek
Sonuç:Kullanıcılara yaptıkları aktiviteleri sonuç olarak göstermek

saglik-izleme-uygulamasi

1.Adım: Verinin Yüklenmesi

İvmeölçerden(accelerometer) ve jiroskopdan(gyroscope) gelen verilerle:
-Telefonu oturarak tutuyorsa: ‘Sitting’
-Telefonu ayakta tutuyorsa: ‘Standing’
-Sınıflandırma işlemi bitene kadar yukarıdaki durumlar tekrar edilir.
durumları bir text veya CSV dosyasına kaydedilir.

Makine öğrenmesi henüz gürültülü verilerle mücadele konusunda çok başarılı olmadığından veri setinin temiz ve tam olması gerekmektedir.

2.Adım: Veri Ön İşleme

1-Gürültülü verilerin tespit edilmesi ve ayıklanması
2-Eksik verilerin tespit edilmesi ve enterpole veya başka yöntemlerle tanımlanması
3-İvmeölçerden gelen yerçekimi ile ilgili verilerin ayıklanması (Bunun için biquad filtresi gibi basit bir yüksek geçiren filtre yaygın olarak kullanılır.)
4-Veri setini eğitim ve test olarak bölün. ()

Aktivite izleme veri setindeki aykırı (outlier) veriler aşağıdaki şekilde görülmektedir.

aykiri-veriler

3.Adım: Özellik Çıkarımı

Ham datanın makine öğrenmesi algoritmalarının kullanacağı şekilde bir bilgiye dönüştürme sürecidir.

İvmeölçerden alınan veriler düşük frekansta ise yürüyor, yüksek frekansta ise koşuyor şeklinde bir özellik çıkarımı yapılmıştır.

Özellik çıkarımı:
• Bir makine öğrenme algoritmasının doğruluğunu geliştirir
• Yüksek boyutlu veri setleri için model performansını artırır
• Modelin yorumlanabilirliğini geliştirir
• Aşırı uyumu önler

Özellik çıkarımı işlemi sizin hayalgücünüze bağlı olsada bazı kabul edilmiş yöntemler aşağıdadır.

ozellik-cikarim-teknikleri

4.Adım: Modeli Kurmak ve Eğitmek

En hızlı ve kolay anlaşılır olan ile model kurmaya başlamalıyız. Örneğin Karar Ağaçları:

karar-agaci

Modelin doğruluğunu kontrol etmek için karışıklık matrisi(confusion matrix) oluşturulur.

confusion-matrix

Görüleceği üzere dancing ve running durumlarında doğru kararlar verilememiştir. Bu yüzden başka modeller denemek gereklidir.

K-nearest neighbors (KNN) ile yapılan modellemenin sonuçları:

KNN-confusion-matrix

KNN iyi sonuçlar üretsede kullandığı bellek nedeniyle daha az bellek kullanan model arayışımız devam ediyor ve Destek Vektör Makineleri(support vector machine) ile yapılan çözüm:

SVM-confusion-matrix

5.Adım: Modeli Geliştirmek

Model basitleştirilerek veya karmaşıklaştırılarak geliştirilebilir.

Başarılı bir çözüme ulaştıktan sonra modeli basit hale getirmek hem anlaşılmasını kolaylaştırır, hem sağlamlığını artırır hem de karmaşıklığını azaltır.

Özellik indirgeme işlemi yapılabilir.
-Korelasyon Matrisi(Correlation matrix) oluşturulur, sonuca etkisi az olan özellikler çıkarılır.
-Temel Bileşen Analizi(Principal component analysis (PCA)): Temel bileşen analizi (PCA) – özgün özellikler arasındaki temel ayrımları yakalar ve veri kümesinde güçlü kalıplar ortaya çıkaran özelliklerin birleşimini bularak artıklığı ortadan kaldırır.
-Sıralı özellik azaltma – performans üzerinde herhangi bir iyileşme olmadıkça özellikleri modelden çıkartır.

Model kendi kendisine de özellik indirgeme yapabilir.
-Karar ağacından dalları budama
-Öğrenenleri topluluktan çıkarma

Karmaşıklık Ekleme

Hala istenen çözüm elde edilemiyorsa;
-Modeller birleştirilebilir.
-Yeni veri kaynakları eklenebilir.

Model istenen kalitede çözüm ürettiği zaman onu çalışacağı ortama aktarabiliriz.

3-Gözetimsiz Öğrenmeyi Uygulama(Applying Unsupervised Learning)

Veri içerisinde keşif yapma, verinin içinde ne tür bilgiler bulunduğunu bilmeme ve veri boyutunun azaltılması sürecinde gözetimsiz öğrenme kullanılabilir.

Kümeleme analizinde veriler benzerliklerine veya ortak özelliklerine göre kümelenir. Beklenen durum küme elemanları birbirleriyle oldukça benzer ve diğer küme elemanlarıyla oldukça farklı olmalıdır.

Temel olarak ikiye ayrılır:
-Hard Clustering: Veri tek kümede yer alır
-Soft Clustering: Veri birden fazla kümede yer alabilir.

Verinin nasıl kümeleneceğini bilmiyorsak:
-self-organizing feature maps
-hierarchical clustering
-cluster evaluation
kullanılabilir.

Yaygın Bilinen Kesin Kümeleme Algoritmaları

k-Means

-Veriyi k kümeye böler.
-Verileri küme merkezlerine uzaklıklarına göre gruplar.
-Küme merkezi kümedeki bir eleman değildir.

Artıları:
Küme sayısı bilindiği zaman iyi çalışır.
Büyük veri setlerini hızlı kümeler

k-Medoids

k-Means ile aynıdır sadece küme merkezi kümedeki bir elemandır.

Artıları:
Küme sayısı bilindiği zaman iyi çalışır.
Kategorik veri setlerini hızlı kümeler.
Büyük veri setlerini ölçekler.

Hiyerarşik Kümeleme

Verileri ikili hiyerarşik bir ağaca yerleştirir. Sonuç dendogram üzerinde görülür.

Artıları:
Kaç küme olduğu bilinmediği durumlarda işe yarar.
Seçimi görselleştirmek için kullanılır.

Kendi Kendine Planlanan Harita

YSA benzeri bir kümeleme yaklaşımıdır.

Artıları:
Büyük boyutlu verileri 2 ve 3 boyutlu olarak gösterebilir.
Verinin şeklinden bir sonuç çıkarır.

Yaygın Bilinen Yumuşak Kümeleme Algoritmaları

Fuzzy c-Means

Verilerin birden fazla kümeye dahil olmaları durumunda kullanılır.

Artıları:
-Küme sayısı bilindiğinde iyi çalışır
-Örüntü tanımada iyi çalışır.
-Kümeler üst üste ise iyi çalışır.

Gaussian Mixture Model

Veri noktalarının belirli olasılıklarla farklı çok değişkenli normal dağılımlardan geldiği bölüm bazlı kümelemedir.

Artıları:
-Bir veri noktası birden fazla kümeye ait olduğunda iyi çalışır.
-Kümeler farklı boyutlara ve korelasyon yapılarına sahip olduklarında iyi çalışır.

Yaygın Boyut Azaltma Teknikleri

Temel Bileşen Analizi(Principal component analysis (PCA)

Çok boyutlu verileri kısmi kayıplarla daha küçük boyutlarla ifade etmek için yapılan işlemlerdir. Örnek için tıklayınız

Faktör Analizi (Factor analysis)

Negatif olmayan matris çarpanı (Nonnegative matrix factorization)

Metin madenciliğinde bir anlam ifade etmeyen kelimelerin çıkarılması bu şekilde yapılabilir.

4-Gözetimli Öğrenmeyi Uygulama(Applying Supervised Learning)

Veri setindeki bir kısım eleman ile eğitilen ve yeni girdileri bu eğitim sonucuna göre sınıflandıran modellere gözetimli öğrenme modelleri denir.

Etiketlenebilen veya kategorilenebilen verilerde sınıflandırma, sürekli değerlerde regresyon kullanılır.

Hangi algoritmayı seçmeliyim?

Bu sorunun cevabını vermek için aşağıdaki 4 parametrenin hangilerinin öncelikli olduğunu belirlemeniz gerekmektedir.

-Eğitim hızı
-Bellek kullanımı
-Yeni bilgiyi doğru sınıflandırma
-Şeffaflık veya yorumlanabilirlik

kriterler

İkili mi Çoklu mu?

ikili-coklu

E-Postaların spam mı normal mi olduğunu belirlemek ikili, bir resimden hangi hayvan olduğunu belirlemek çoklu sınıflandırmadır.

Logistic regression gibi ikili sınıflandırmaya daha yatkın algoritmalar ikili sınıflandırmada daha başarılıdır.

Yaygın Sınıflandırma Algoritmaları

Logistic Regression

İkili sınıflandırmada kullanılır, veriyi iki sınıf arasında paylaştırır.

İyi Olduğu Durumlar:
-Veri tek düzgün bir doğru ile ayrılıyorsa
-Kompleks sınıflandırma işlemlerine giriş adımı olarak

k Nearest Neighbor (kNN)

Euclidean, city block, cosine, Chebychev gibi uzaklık ölçüm birimleri kullanarak birbirine yakın olan verileri bir sınıfa dahil eder.

İyi Olduğu Durumlar:
-Basit bir algoritma lazım olduğunda
-Eğitimli modelin bellek kullanımı önemsiz olduğunda
-Eğitimli modelin tahmin hızı önemsiz olduğunda

Support Vector Machine (SVM)

Veri setini doğrusal hiperdüzlemlerle böler.
İyi Olduğu Durumlar:
-2 sınıf var ise(daha fazla olan durumlarda da kullanılabilir)
-Yüksek boyutlu, doğrusal ayrılamayan verilerde
-Basit, doğru ve yorumlanabilir bir algoritmadır.

Neural Network

Yapay Sinir Ağları.

İyi Olduğu Durumlar:
-Doğrusal olmayan veriler içeren problemlerde
-Verinin sürekli arttığı durumlarda
-Veride beklenmeyen değişimler olduğunda
-Yorumlanabilirlik önemli olmadığı durumlarda

Naïve Bayes

Bütün verileri birbirleriyle alakasız sayarak aralarındaki olasılık oranlarına göre sınıflandırma yapar.

İyi Olduğu Durumlar:
-Çok sayıda parametresi olan küçük veri setlerinde
-Kolay yorumlanabilir bir sistem lazım olduğunda
-Eğitim verilerinde olmayan durumlarda

Discriminant Analysis

Özellikler arası doğrusal kombinasyonlar bularak sınıflandırma işlemi yapar. Diskriminant analizi, farklı sınıfların Gauss dağılımlarına dayanan veri ürettiğini varsaymaktadır. Doğrusal veya ikinci dereceden sınırlar oluşturulur ve bu sınırlara göre sınıflandırma işlemi yapılır.

İyi Olduğu Durumlar:
-Kolay yorumlanabilir
-Eğitim sırasında bellek kullanımı önemliyse
-Hızlı tahmin edecek bir yöntem lazımsa

Decision Tree

Karar Ağacı

İyi Olduğu Durumlar:
-Kolay yorumlanabilir ve hızlı
-Bellek kullanımı minimumdur
-Doğruluk çok önemli değilse (:D Bu nasıl bir öne çıkan özellikse artık 😉 )

Bagged and Boosted Decision Trees

Bir çok zayıf karar ağacı bir araya getirilerek güçlü bir karar ağacı oluşturulur.

Torbalı bir karar ağacı, bağımsız olarak girdi verilerinden önyüklenmiş olan veriler üzerinde eğitilmiş ağaçlardan oluşur.

Yükseltme, “zayıf” öğrenicileri tekrar tekrar ekleyerek ve yanlış sınıflandırılmış örneklere odaklanmak için her zayıf öğrenicinin ağırlığını ayarlayarak güçlü bir öğrenici yaratmayı içerir.

İyi Olduğu Durumlar:
-Tahmin edilecek durum kategorikse ve doğrusal değilse
-Eğitim için geçen süre daha az önemliyse

Örnek Uygulama: Üretim Ekipmanları için Öngörüleyici Bakım

uretim-sistemi

365 gün 24 saat 900 işçiyle çalışan yılda 18 milyon ton plastik malzeme üreten bir fabrikadaki üretim ekipmanları takip altına alınmış ve arıza vermeden uyarı vermeleri sağlanmaya çalışılmıştır.

Neural networks, k-nearest neighbors, bagged decision trees, support vector machines (SVMs) kullanılmış en başarılı sonuçları bagged decision trees vermiştir.

Yaygın Regresyon Algoritmaları

Linear Regression

İstatistiksel olarak veriler arasında bağlanımları ortaya koyar.

İyi Olduğu Durumlar:
-En temel regresyon işlemidir, diğer adımlara geçmeden uygulanır
-Kolay yorumlanabilir ve hızlı çözüm üretir.

Nonlinear Regression

Doğrusal olmayan veriler arasında bağlanımları ortaya koyan istatistiksel bir yaklaşımdır.

İyi Olduğu Durumlar:
-Veri doğrusal değilse ve doğrusal hale getirilmesi zor ise
-Özel modellerin verilere uyumu için

Gaussian Process Regression Model

Süreç tahmininde kullanılır. Kriging olarak ta bilinir.

İyi Olduğu Durumlar:
-Yer altı suyunun dağılımı için hidrojeolojik veriler gibi mekansal verilerin enterpolasyonu için
-Otomotiv motorları gibi karmaşık tasarımların optimizasyonunu kolaylaştırmak için vekil bir model olarak

SVM Regression

SVM gibi çalışır fakat sürekli değerleri tahmin edecek şekilde ayarlanmıştır.

İyi Olduğu Durumlar:
-Yüksek boyutlu veriler için (çok sayıda öngörme değişkeni bulunur)

Generalized Linear Model

Genelleştirilmiş bir doğrusal model doğrusal yöntemleri kullanan doğrusal olmayan modellerin özel bir durumudur. Girişlerin lineer bir kombinasyonunu, çıktıların doğrusal olmayan bir fonksiyonuna (bağlantı fonksiyonu) uydurmayı içerir.

İyi Olduğu Durumlar:
-Çıktı değişkenleri normal olmayan dağılımlara sahip olduğunda, her zaman olumlu olması beklenen bir yanıt çıktı gibi

Regression Tree

Regresyon için karar ağaçları sınıflandırma için karar ağaçlarına benzer, ancak sürekli tepkileri öngörebilecek şekilde değiştirilmiştir.

İyi Olduğu Durumlar:
-Kategorik (ayrık) veriler olduğunda veya doğrusal olmayan durumlarda

Model performansını artırmak için:
-Feature selection
-Feature transformation
-Hyperparameter tuning
yapılabilir.


Find-S Algoritması

Makine Öğrenmesi dersinin giriş konusu olan Kavram Öğrenmesi(Concept Learning) konusunun anlaşılması için verilen ilk örnek Find-S Algoritması’dır.

Makine Öğrenmesi konusunda ana kaynak Tom M. Mitchell’in yazmış olduğu Machine Learning kitabıdır. Aşağıdaki bilgiler oradan okuyup, anladığımı yazdıklarımdan oluşmaktadır.

Kavram öğrenmesi, giriş olarak verilen eğitim verilerinden boole(doğru veya yanlış gibi) bir çıkış değeri üretmeye yarayan bir öğrenme yaklaşımıdır. Genel hipotezi özelleştirmeye çalışır.

En genel hipotez: (?, ?, ?, ?, ?, ?)
En özel hipotez: (∅,∅,∅,∅,∅,∅)

Aşağıdaki bilgiler ekseninde:

find-s-algoritmasi-1

Genelden özele hipotez çıkarımları yapılır. Örneğin:
h1=⟨Sunny,?,?,Strong,?,?⟩
h2=⟨Sunny,?,?,?,?,?⟩

h1 hipotezi h2 hipotezinden daha özeldir. Çünkü görüleceği üzere h1’de iki özellik etkindir h2’de ise bir özellik etkindir. h2 hipotezi h1 hipotezine göre daha geneldir de diyebiliriz. h1 için olumlu sonuç üreten her örnek, h2 içinde olumlu sonuçlanacaktır.

Find-S Algoritması

h hipotezini tüm hipotezleri içeren H kümesinde en özel olarak başlat. Eğitim setindeki negatif örnekleri dikkate alma. Sadece pozitif örnekleri inceleyerek sırayla başlıyoruz.

Küme içindeki elemanların anlamları sırasıyla aşağıdaki gibidir:
{Sky,Temp,Humid,Wind,Water,Forecast,Enjoy Sport?}

h hipotezini boş olarak başlıyoruz.
h=⟨∅,∅,∅,∅,∅,∅⟩

İlk örneğimizi alıyoruz.
⟨ Sunny,Warm,Normal,Strong,Warm,Same⟩

Daha önceki hipotez içeriği boş olduğundan aynısını yazıyoruz.

2.adımda 2.örneği alıyoruz.
⟨Sunny,Warm,High,Strong,Warm,Same⟩ mevcut h ile gelen örnek arasında farklı olan, yani değişken olduğu halde sonuca bir etkisi olmayan durumu ? ile değiştiriyoruz. Buradan anlaşılacağı üzere Humid değeri Normal de olsa High da olsa sonuç pozitifse artık bu parametreyi dikkate alma!

3.örneği almadan h=⟨ Sunny,Warm,?,Strong,Warm,Same⟩ durumunu almıştır.
3.örnek Negatif bir sonuca sahip olduğundan sisteme dahil etmiyoruz.

4.örnek olan ⟨ Sunny,Warm,High,Strong,Cool,Change⟩ elimizdeki h ile kıyaslandığında ⟨ Sunny,Warm,?,Strong,?,?⟩ sonucu elde edilir. Görüleceği üzere Water=Warm da olsa Warm=Cool da olsa ve Forecast=Same de olsa Forecast=Change de olsa sonuç pozitifse bu parametrelerin nihai sonuca bir etkisi yoktur.

4 örnek olduğundan en genel hipotezimizi elde etmiş olduk. ⟨ Sunny,Warm,?,Strong,?,?⟩

Find-S algoritması gürültülü ve tutarsız eğitim verileri iyi sonuçlar vermez.

Find-S algoritmasının yukarıdaki verilerle Matlab ortamında kodlanmış hali:

Kaynak: http://jmvidal.cse.sc.edu/talks/conceptlearning/