Yapay Sinir Ağları ile Ev Fiyat Tahmini

Yapay Sinir Ağları ile Ev Fiyat Tahmini yapay sinir ağları,ev fiyat tahmini

Yapay sinir ağları ile ev fiyat tahmini yapıyoruz. Bu yazıda, önceki Iris projesinden farklı olarak bir regresyon problemi üzerinde çalışacağız. Bu projede Boston ev fiyatları veri setini kullanıyoruz. Veri setine Kaggle üzerinden erişebilirsiniz.

Veri seti; nitrik oksit oranı, suç oranı, öğrenci-öğretmen oranı, vergi değerleri ve konut başına oda sayısı gibi toplam 13 özelliği içerir. Hedef değişken ev fiyatıdır. Veri setinin tamamen sayısal olması, ön işleme adımlarını nispeten kolaylaştırır. Projeyi veri ön işleme, model kurma, eğitim ve performans ölçümü olmak üzere dört başlıkta ele alacağız.

Veri Önişleme

İşe Kaggle üzerinden indirdiğimiz dosyanın içerisinde bulunan “housing.csv” dosyasını çalışma yapacağımız klasörün içine atmakla başlıyoruz. İlk olarak gerekli kütüphaneleri import ediyoruz. Ardından verilerimizin okuma işlemini gerçekleştiriyoruz. Bu dosyada verilerimizin her bir özelliği boşluk ile ayrıldığı için ona göre bir okuma gerçekleştiriyoruz ve sonrasında bağımsız değişkenlerimizi(X) ve bağımlı değişkenlerimizi(Y) ayırıyoruz.

“variable explorer” kısmından veri setimizi inceleyebilirsiniz. Veri setimizde 505 adet örnek bulunmaktadır.

Yapay Sinir Ağları
Yapay Sinir Ağları

Daha sonra öğrenme sürecini dengelemek için veriler üzerinde ölçeklendirme uyguluyoruz. Ardından verilerin %80’ini eğitim, %20’sini test için ayırarak ön işleme adımını tamamlıyoruz.

Yapay Sinir Ağı Modelini Oluşturma

Bağımsız değişken sayımız 13 adet olduğu için girdi katmanımızda 13 tane nöron bulunacak. Girdi katmanımız 8 nöronlu 1. gizli katmana bağlanacak, 1. gizli katmanımız 8 nöronlu 2. gizli katmanına bağlanacak ardından 2. gizli katmanımız 4 nöronlu 3. gizli katmana bağlanacak. Gizli katmanlarımızın her birinde “ReLU” aktivasyon fonksiyonunu kullanacağız. Son olarak 3. gizli katmanımız tek nöronlu çıktı katmanına bağlanacak. Çıktı katmanımızda regresyon problemi ile ilgilendiğimiz için aktivasyon fonksiyonu kullanmayacağız. Modelimiz 3 veya daha fazla gizli katman barındırdığı için modelimizi derin öğrenme algoritması olarak sınıflandırabiliriz. Aşağıdaki görselde oluşturacağımız modelin yapısını inceleyebilirsiniz.

Yapay Sinir Ağları ile Ev Fiyat Tahmini yapay sinir ağları,ev fiyat tahmini
Model Yapısı

Öncelikle bağımsız değişken sayılarımızı ve çıktı katmanımızın nöron sayılarını belirliyoruz. Daha sonra modelimizin yapısını oluşturuyoruz ve “summary” fonksiyonu ile konsola modelimizin özetini bastırıyoruz.

Yapay Sinir Ağları ile Ev Fiyat Tahmini yapay sinir ağları,ev fiyat tahmini
Model Özeti

Modelimizde toplamda 225 adet parametre bulunuyor. Bunlardan 204 tanesi nöronların ağırlık değerleri, kalan 21 tanesi de nöronların eşik değerleridir.

Modelin Eğitimi

Modelimizi eğitirken kullanacağımız optimizasyon tekniği olarak “adam” tekniğini seçiyoruz. Bu optimizasyon tekniği gradyan inişin daha gelişmiş versiyonudur. İlerleyen yazılarımızda daha detaylı bir şekilde adam optimizasyon tekniğine değinebiliriz. Yitim fonksiyonu olarak da regresyon problemlerine uygun olan ortalama kare hatasını seçiyoruz. Modelimizi 500 yineleme boyunca eğitiyoruz ve eğitimi sırasında ise validation_data olarak test verilerimizi veriyoruz ki öğrenme sırasında modelimizin eğitim ve test kümelerindeki performansını karşılaştırıp olası bir aşırı öğrenme(overfitting) veya az öğrenme(underfitting) gibi durumlar ile karşılaşıp karşılaşmadığımızı gözlemleyebilelim.

Modelimizin eğitim ve test kümelerindeki yitim değerlerini grafiğe dökelim.

Yukarıdaki kodu çalıştırdığımızda elde edeceğimiz grafik aşağıdaki gibi olacaktır.

Yapay Sinir Ağları ile Ev Fiyat Tahmini yapay sinir ağları,ev fiyat tahmini
Yitim Değerleri

Yukarıdaki büyüteç yardımı ile resmi yakınlaştırırsak daha iyi inceleyebiliriz.

Yapay Sinir Ağları ile Ev Fiyat Tahmini yapay sinir ağları,ev fiyat tahmini
Yakınlaştırılmış Yitim Değerleri

Görüldüğü gibi 150. yineleme civarında test performansı düşmeye, yani test yitimi artmaya başlıyor. Bu durum aşırı öğrenme belirtisidir. Eğitim yitimi düşmeye devam etse bile genelleme başarısını korumak için eğitimi bu noktada durdurmak daha uygundur. Bu nedenle epochs değerini 500 yerine 150 seçip modeli baştan eğitmek gerekir.

Yapay Sinir Ağları ile Ev Fiyat Tahmini yapay sinir ağları,ev fiyat tahmini
150 Yineleme Yitim Değerleri

Görüldüğü gibi test yitim değerlerinin artışına izin vermeyip aşırı öğrenmenin önüne geçiyoruz.

Performans Ölçümü

Bu bölümde modelimizin eğitim ve test kümelerindeki performanslarını inceleyeceğiz. Performans metrikleri arasından regresyon problemleri için uygun olan R2 skorunu kullanacağız. Modelimizin “predict” fonksiyonu ile her bir örnek için tahmin değerlerini elde edip R2 skorlarını eğitim ve test için hesaplıyoruz.

Yukarıdaki kodu çalıştırdığımızda aldığımız değer aşağıdaki gibi olacaktır.

Yapay Sinir Ağları ile Ev Fiyat Tahmini yapay sinir ağları,ev fiyat tahmini
R2 Skorları

R2 skorlarına baktığımızda modelimizin iyi bir performans gösterdiğini görebiliriz. Aynı zamanda eğitim ve test verilerindeki başarı değerlerinin birbirine yakın olması aşırı öğrenmenin önüne geçtiğimizi de gösteren 2. bir kanıt.

Yazdığımız bütün kodu tek parça halinde aşağıda bulabilirsiniz. Sizin de farklı model yapıları oluşturup daha iyi bir performans elde etmeye çalışmanızı öneririm.

Model İyileştirme Kontrol Listesi

  • Farklı katman ve nöron sayılarıyla küçük denemeler yapın.
  • Erken durdurma (early stopping) ve düzenlileştirme yöntemlerini birlikte test edin.
  • R² yanında MAE ve RMSE metriklerini de raporlayarak modeli kıyaslayın.

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.