-- Genel, Yapay Sinir Ağları

Yapay Sinir Ağları Kullanılarak Boston Housing Dataseti Üzerinde Fiyat Tahmini

Merhabalar (uzun bir aradan sonra yeniden),

Bugün R üzerinde Neural Network (Sinir Ağları) kullanarak Boston Housing veri seti üzerinde fiyat tahminlerinde bulunacağız. Öncelikle “Yapay Sinir Ağları Nedir” hakkında daha önce yazmış yazılara göz atmanızda fayda var. Linkleri aşağıda paylaşıyorum.

Yapay Sinir Ağları (YSA) Nedir – Bölüm 1 ?

Yapay Sinir Ağları (YSA) Nedir – Bölüm 2 ?

Yapay Sinir Ağları (YSA) Nedir – Bölüm 3 ?

Neler Yapacağız?

  1. Kullanılacak Olan Kütüphaneleri İndirme ve Yükleme (Install & Load Use Library)
  2. Dataset Hakkında, İndirme ve Yükleme (Loading the dataset)
  3. Dataseti Özetleme (Summarizing the dataset)
  4. Dataseti Görselleştirme (Visualizing the dataset)
  5. Dataseti Normalleştirme (Normalization of Data)
  6. Model Kurma ve Tahmin (Making Model & Predictions)
  7. Değerlendirme (Conclusion)
R Ön Hazırlık

  1. Kullanılacak olan Kütüphaneleri İndirme ve Yükleme

  2. Dataset Hakkında, İndirme ve Yükleme (Loading the dataset)

    Dataset Adı: Housing Values in Suburbs of Boston

    Dataset Linki: https://archive.ics.uci.edu/ml/machine-learning-databases/housing/ ve https://www.kaggle.com/c/boston-housing

    Yukarıda paylaştığım birinci linkte aşağıda açıklamalarını bahsettiğim dosyalar yer almaktadır. İkinci linkte ise dataset hakkında açıklayıcı bilgiler yer almaktadır.

    housing.data: Ham datanın bulunduğu dosyadır

    housing.names: Dataya ait metadata bilgisinin yer aldığı dosyadır.

    Metadata Nedir: “Verinin verisi” ya da “Veri hakkında veri/bilgi” olarak ifade edilebilir. Kaynak: https://tr.wikipedia.org/wiki/Metadata

    Not: Biz bu çalışmada dataseti R içerisinde MASS paketi içerisinde yer aldığı için indirmeye gerek kalmadan kullanacağız.

  3. Dataseti Özetleme (Summarizing the dataset)

    Dataseti incelediğimizde;

  4. Dataset Görselleştirme (Visualizing the dataset)

  5. Dataseti Normalleştirme (Normalization of Data)
    Değişkenlerin(feature) ortalama ve varyansları birbirinden önemli ölçüde farklı olduğu takdirde ortalama ve varyansı büyük olan değişkenlerin diğer değişkenler üzerinde etkisi fazla olacağından diğerlerinin etkisini azaltacaktır. Bu neden ile bir data üzerinde normalleştirme(standartlaştırma) bu problemin önüne geçecektir. En çok kullanılan normalleştirmeler: Min-Max Normalleştirmesi ve Z-Score Normalleştirmesi’dir. Bu bu çalışmada Min-Max Normalleştirmesi kullanarak dataset üzerinden standartlaştırma yapacağız. Min-Max normalleştirmesi değerleri 0-1 aralığa dönüştürecektir.X* = (Xi – XMİN) / (XMAX – XMİN)
    X*: Dönüştürülmüş değerleri,
    Xi: Gözlem değelerini,
    XMİN: En küçük gözlem değerini,
    XMAX: En büyük gözlem değerini belirtir.Normalleştirme işlemi yapabilmemiz için oldukça kullanışlı olan apply() ve türevleri olan fonksiyonun kullanacağız. Veriseti içerisinde satır bazında veya sütun bazında bilgiler elde etmek istediğimizde kullandığımız fonksiyonlardır. Örnek verecek olusak; her satın/her sütun için min, max, mean, range vb. descriptive değerleri ile özel tanımlanan fonksiyonları kullanarak bu fonksiyon içerisinde değerleri elde edilebiliriz. Birbirine çok benzeyen bu 3 fonksiyonun kullanımı oldukça basittir. Aralarındaki fark çıktılarının veri tiplerinin farklı olmasından gelir.

    apply(): Matris içerisinde satır ve sütun bazında işlemler yapmamızı sağlar.

    sapply ve lappy(): Vektör ve Listeler tipleriyle çalışırlar.

    sapply() ‘ın çıktısı vektör, lapply() ‘ın çıktısı liste’dir.

    Kullanımı:

    apply(dataset, 2, mean) # Sütunları[2] ortalamasını verir. 1 parametresi satırları, 2 parametresi sürunları belirtir.

    apply(dataset, 2, range) # Sütunları[2] ortalamasını verir. 1 parametresi satırları, 2 parametresi sürunları belirtir.

    Çalışmaya dönecek olursak;

  6. Model Kurma ve Tahmin (Making Model & Predictions)

    Bu çalışmada Supervised(öğreticili/danışmalı/eğiticili) bir model (Neural Network) kullanacağımız için önce dataseti Train ve Test olarak iki ayrı parçaya ayırmamız gerekiyor. Burada Train verisi için 400 gözlem, Test verisi için 106 gözlem rastgele alınarak oluşturulacaktır. Literatürde %90 – %10 yada %80 – %20 oldukça yaygın olarak kullanılmaktadır.

    Dataset içerisinde 14 adet değişkenimiz (feature) bulunmaktadır. Burada bağımsız değişkenler ile bağımlı değişkeni tahmin etmeye çalışıyoruz. Bu sebeble

    NeuralNetwork modelimini kurmadan önce hatırlamamız gereken Temel Bileşenler var. Bunların belirlenmesi modelin başarısında oldukça belirleyici olduğunu hatırlatmakta fayda var. Eğer yukarıda paylaştığım yazımı okumadıysanız hala geç değil 🙂

    Yapay Sinir Ağlarının Temel Bileşenleri

    1. Mimari Yapı
    2. Öğrenme Algoritması
    3. Aktivasyon Fonksiyonu

    Modeli oluşturuyoruz ve grafiksel olarak çizdiriyoruz:

    Mimari Yapı: Girdi, 1.GizliKatman, 2.GizliKatman ve Çıktı katmanı olmak üzere 4 katmandan oluşmaktadır. 1. Gizli Katmanda 4 nöron, 2. Gizli Katmanda 2 nöron bulunmaktadır.

    Öğrenme Algoritması: Backpropagation Algorithm

    Aktivasyon Fonksiyonu: Logistic (varsayılan)

    Result data frame’inde Actual yani TestDF değerleri(106 Gözlem), Predict yani Neural Network Modeli kurularak elde edilen değerler, ve Actual-Predict arasındaki fark olan Diffrence kolonundan oluşmaktadır. Burada head ve tail ile ilk 6 satır karşılaştırılması gözükmektedir.

     

    Actual ile Predict kolonlarına ait ortalama değerlerinin (0.386 – 0.400) birbirine oldukça yakın olduğu görülmüştür. Şimdi Mean Square Error (MSE) değerlerini hesaplayıp görelim.

    MSE değeri 0.009 olduğu görülmüştür. Bir başka mimariye sahip Neural Network modeli ile ya da Regresyon gibi başka bir model ile karşılaştırarak model tercihinde bulunabilir. Son olarak

    Orjinden 45 derecelik açı ile geçen kırmızı çizgiye bitişik bir şekilde değerlerin yer aldığı görülmüştür.

  7. Değerlendirme (Conclusion)

Bu çalışmada Boston Housing dataseti üzerinde Neural Network modeli kurularak fiyat tahmininde bunulmuştur. Dataset içerisinde 13 bağımsız değişken(feature) ile model kurularak 1 bağımlı(medv) değişken tahmini yapıldı. Neural Network mimari yapısında Girdi Katmanında 13 nöron, 1. Gizli Katmanda 4, 2. Gizli Katmanda 2 ve Çıktı Katmanında 1 nöron bulunmak üzere 13x4x2x1 modeli kurulmuştur. Modelin Mean Square Error (MSE) değerinin 0.009 olduğu görülmüştür.

Peki bundan sonra; Gizli Katman Sayısı ve bu katmanlardaki Nöron Sayısını nasıl belirleyeceğiz? Ben burada tamamen kendi isteğime göre mimari yapıyı oluşturdum. Daha fazla yada daha az da olabilirdi. Mimari yapının modelin başarısını etkileyen 3. önemli temel bileşenden biridir. Bu yazının 2 versiyonunda Gizli Katman Sayısı(1 ile 3 arasında) ve Gizli Katmandaki Nöron Sayısını(1 ile 3) parametrik yapıp en iyi mimari yapısını modelin performans ölçütü olan MSE değeri ile tespit edeceğiz.

Çok kısa süre içerisinde yukarıdaki kodları github üzerinde paylaşıyor olacağım. Konu hakkındaki görüş, öneri ve yorumlarınızı buradan ya da  uslumetin@gmail.com üzerinden belirtebilirsiniz.  Yeniden görüşmek üzere, selamlar. 🙂

0Shares

About Metin USLU

İstatistik ve Bilgisayar Programlama bölümü mezunu olan Metin; İstatistiksel Modelleme, Yapay Sinir Ağları ve Veri Madenciliği konularına ilgi duymakta ve çalışmalar yapmaktadır. veribilimci olma gayreti içerisinde ama yolun çok başında. İleri spor istatistiklerine de bayılıyor. Daha çok kendi halinde, kitap ve basket sever.