Makine Öğrenmesi | Tahmin Algoritmalarının Seçilmesi ve Değerlendirilmesi
Makine öğrenmesi algoritmalarına baktığımızda tek bir çözüm yolu veya tek bir yöntemin olmadığını görürüz. Algoritmayı seçme kısmında kararımızı etkileyebilecek birden çok faktör bulunmakta. Bazı problemlerde sırf o probleme özgü olan algoritmalar kullanılabilirken kimi problemlerde zaten ne kullanacağınız açıktır.
Aslında Olay Biraz Veriyi Anlamak
Sahip olduğumuz verilerin türü aslında doğru algoritmayı seçmemizde önemli bir rol oynar. Örneğin kimi algoritmalar çok fazla veri örneğine ihtiyaç duyarken kimisi küçük veri setlerinde iyi performans verir. Bazısı numerik verilerle çalışırken bazısı kategorik verilerle çalışabilir gibi. Şimdi gelin algoritmayı seçmeden önce dikkat edilmesi gereken bazı parametrelere bakalım:
— Korelasyon değeri parametreler arasındaki ilişki değerini üretip model için doğru parametreleri seçme konusunda yardımcımız olabilir.
— Yüzdelik dilimler ile veri setinin aralığı belirlenebilir.
— Ortalama ve medyan değerleri ile veri setindeki merkezi eğilim değerleri elde edilebilir.
— Veri görselleştirilebilir , kutu grafikleri aykırı(outlier) olan değerleri ayırt etmemizi sağlayabilir.
— Eksik veri varsa doldurulabilir , eksik verilere duyarlı olan bazı algoritmalar bile bu durumda hatalı sonuç döndürebilir.
— Problemin türü belirlenebilir, bunun için girdi ve çıktı değerlerine bakabiliriz.Örneğin eğer girdi değerlerinde etiketlenmiş(labelled) kolonlar varsa bu bir denetimli öğrenme (supervised learning) ve çıktı değerleri numerik rakamlar ise regresyon problemidir denebilir.
Sıklıkla Kullanılan Algoritmalar
Linear Regression: Makine öğrenmesindeki en basit olan algoritmadır diyebiliriz. Sürekli olan bir değerin tahmin edilmesinde kullanılabilir.Örneğin önümüzdeki ay konut fiyatlarını tahmin etmek gibi.
Polynomial Regression: Doğrusal regresyona benzemekle birlikte non-lineer olan problemlerin çözümünde kullanılabilir. Polinomun derecesi başarıda önem arz eder.
Support Vector Machine: Sınıflandırma problemlerinde de yaygın olarak kullanılan denetimli öğrenme algoritmalarından biridir. Doğrusal olmayan veriler üzerinde çalışabilir ve overfittinge(aşırı öğrenme diye çevirebiliriz) karşı dayanıklıdır.
Decision Tree: Tek başına nadiren kullanılsa da karar ağacı Random Forest gibi algoritmaların temelini oluşturur. Parametrik olmayan ve aykırı değerler için dayanıklı olsa da overfittinge karşı hassastır.
Random Forest: Karar ağaçları için bir ensemble learning (kollektif öğrenme) yöntemidir. Karar ağacına göre overfitting ihtimali düşüktür. Büyük veri setleri ile hem sınıflandırma hem de regresyon problemleri için kullanılabilir.
Algoritmaları Karşılaştırma — R Squared
Şimdi iris veri seti üzerinde bu algoritmalarla modeller oluşturup R2 değerlerine bakalım. Lineer regresyon için kodumuz bu şekilde:
Burada X ve Y değerlerini belirlemeden önce değişkenler arasındaki korelasyon değerlerini görmek için pandas kütüphanesi corr() methodunu kullandık. Bu modelde SepalLength değerinden PetalWidth değerini tahmin etmeye çalıştık ve OLS sonucumuz:
Polynomial regression için kodumuz:
Polynomial regression için OLS sonucu:
Support vector regression için kodumuz:
Support vector regression OLS sonucu:
Decision tree regression için kodumuz:
Decision tree regression için OLS sonucu:
Random forest regression için kodumuz:
Random forest regression için OLS sonucu:
Algoritma bazlı R-squared değerlerimiz şu şekilde:
— Linear Regression: 0.905
— Polynomial Regression: 0.914
— Support Vector Regression: 0.729
— Decision Tree Regression: 0.935
— Random Forest Regression: 0.933
Örnekte tek bir bağımsız değişken ile tahminlerimizi gerçekleştirdik ve tatmin edici sonuçlar elde ettik. Support vector regresyonunun diğer algoritmalara göre geride kalma sebebi kullandığımız kernel fonksiyonu veya veri setimizdeki outlier değerler olabilir. X parametresine PetalLength kolonunu da ilave ederek modeli tekrar kurabilir ve değişen sonuçları karşılaştırabilirsiniz.Bugünlük bu kadar. :)
Bu yazımda makine öğrenmesi problemlerinde doğru algoritma seçimindeki kriterlerden ve bu algoritmaların ürettiği R-squared değerlerinin hesaplanmasından bahsetmeye çalıştım. Umarım faydalı olmuştur. Önerileriniz veya hata içeren kısımlar için geri bildirimde bulunabilirsiniz. Başka yazılarda görüşmek üzere :).