Link Tree Martin I Oden

Resim
Link Tree Martin I Oden Engineering, Finance, Engine Driver  #MartinSky  Products for Sale : https://iyzi.link/AILUEw E - Mail : mertsever_03@hotmail.com YouTube Channel : https://www.youtube.com/channel/UCSUj1X5jG9yf1jCIIjeeZKA X (formerly Twitter) : https://twitter.com/martinioden LinkedIn Profile : https://www.linkedin.com/in/mertseverr/ Instagram Profile : https://instagram.com/martinioden Telegram Profile : https://t.me/martinioden/ Threads Profile : https://www.threads.net/@martinioden Rarible Profile : https://rarible.com/martinioden Mintable Profile : https://mintable.app/u/mertsever OpenSea Profile : https://opensea.io/accounts/martinioden Cent Profile : https://v.cent.co/gallery/martinioden/minted Telegram Channel : https://t.me/herseydenbiraztr Blog Address : https://martinioden.blogspot.com/ Mert S. Official Account

R Dili ile Tek Katmanlı Yapay Sinir Ağları Uygulaması

Yapay Sinir Ağları (YSA) hakkında bilgi edinmek ve bunların R'daki uygulamaları ile ilgili kişisel bir projedir. İstatistiksel öğrenme çalışmaları için tüm kodları github depomda bulabilirsiniz. Lütfen "Yapay Sinir Ağları Uygulamaları" adlı dosyalara bir göz atmak için tıklayınız.


Daha önce yayınlamış olduğum "Yapay Sinir Ağları - Artificial Neural Network" adlı yazımı okumak için tıklayınız.




Bu kütüphane çok esnektir ve analistin bir dizi algoritma, aktivasyon işlevi ve hata işlevi ve tümünü kapsayacak şekilde birden fazla gizli katman içeren YSA'lar oluşturmasına izin verir. Tamamen diğer model uydurma kütüphaneleriyle aynı hizada olmayan sözdizimi vardır ve bu nedenle ortak modelleme işlevlerine kıyaslamaya yapmayınız.

Bu örneği bir önceki yazımda çift katmanlı yapay sinir ağı uygulaması olarak ele almıştım. Yazıya ulaşmak için tıklayınız. Şimdi ise YSA modelimizi tek katmanlı olarak ele alacağız. Bilgisi olmayanlar için bu YSA örneği Boston, MA, ABD banliyölerinde bir dizi medyan özellik değerlerini içeren MASS paketindeki Boston verilerini kullanılarak yapılmıştır. Sinir ağımız için gerekli kütüphane paketlerini indirip, yüklemelerini yapalım. Daha fazla bilgi için R terminalinden help(Boston) yazarak veri işlevlerine bakınız.
# Kullanılan Kütüphaneler ( Pokemonlar )
install.packages(c("MASS","neuralnet","nnet","NeuralNetTools","boot","caret","corrplot","DataExplorer"))
library(MASS)
library(neuralnet)
library(nnet)
library(NeuralNetTools)
library(boot)
library(caret)
library(corrplot)
library(DataExplorer)
Amacımız, sahip olunan tüm diğer sürekli değişkenleri kullanarak sahiplenmiş evlerin (medv)  medyan değerini belirlemektir.
Kütüphanelerimizi indirip, yüklediysek Boston verimizi yükleyelim ve R-studio üstünde tanıtalım.

Boston
veri <- Boston
introduce(veri)
Veri setinde gerektiği durumda veri setinin sınıfını değiştirmek istenildiğinde ya da sınıfını görmek istenildiğinde plot_str() fonksiyonu ile tüm parametrelerin kategorileri görülebilir.
plot_str(veri)
Bu görseli istemiyorsanız eğer str() fonksiyonu ile de parametrelerin kategorilerini görebilirsiniz.
str(veri)
Görüldüğü gibi veri seti 506 gözlem ve 14 parametreden oluşmaktadır ve 12 tanesi numerik, 2 tanesi ise integer haldedir.

Eksik Veri Konrolü
eksik_veri <- apply(veri, 2,function(x) sum(is.na(x)))

eksik_veri
Eksik gözlemlere bakıldığında eksik veri görülmemiştir. Bu işlemi yaparken apply fonksinoyu kullanılmıştır.
Eğer görsel bir tablo içerisinde eksik verileri görmek istersek.
plot_missing(veri)

Korelasyon İnceleme
Verimiz üzerinde korelasyonlar incelenmek istenildiğinde corrplot kütüphanesindeki corrplot fonksiyonu ile korelasyonlar görselleştirilmiştir.
corrplot(cor(veri))

Keşifçi veri analizlerinden birkaç tanesine bakıldıktan sonra uygulamaya başlayalım. Veri setinde ölçümler farklı olduğu için bu değerlerin aynı baremde birleşebilmesi için veri setinin normalize edilmesi gerekmektedir. Bunun için “scale” formulü kullanılır.
Bu normalizasyon işlemini yaparken veri setinde her bir parametrenin maksimum ve minimum değerleri üzerine hesaplanarak gerçekleştirilmiştir.
“Scale” fonksiyonu veri setinin karakterini bozmadan ortalaması sıfır, standart sapmasını bir üzerine merkezileştirerek veri setini günceller.
maxValue <- apply(veri, 2, max)
minValue <- apply(veri, 2, min)

veri <- as.data.frame(scale(veri, center = minValue, scale = maxValue - minValue))
Veri setimizdeki veri dönüşümü ve analize hazır hale getirdikten sonra veri setimizden Test-Eğitim verisini belirleyelim. Literatürde veri setinin % 70 Eğitim, % 30 Test ya da % 80 Eğitim, % 20 Test verisi olarak bölmek kabul görmüştür. Bu uygulamayı yaparken veri setini % 80 Eğitim ve % 20 Test verisi olarak bölündüğünde oluşan güncel veri setimizde 400 Eğitim, 106 Test verisi bulunmaktadır.

Rasgele örneklem seçerken “sample” fonksiyonu kullanılır. Eksik gözlem bulunmadığı için ve yanlı bir seçim olmaması için rasgele örneklem seçilmiştir. Belli bir sayı değil de belli bir oran üzerine bölmek isteseydik eğer şu kodu kullanmamız gerekirdi, “sample(1:nrow(data),round(0.80*nrow(data)))” böyle rasgele olarak % 80 veri seti seçilmiş olurdu.
orneklem <- sample(1:nrow(veri), 400)
egitim_verisi <- veri[orneklem, ]
test_verisi <- veri[-orneklem, ]
Seçilen test ve eğitim veri setlerinin uzunluk ve derinliğine bakaldığında toplam 14 parametre görülmektedir. Bunlardan medv parametresi bağımlı değişkenimizken diğerleri bağımsız değişkenlerdir.
dim(test_verisi)
dim(egitim_verisi)
Amacımız medv bağımlı değişkeni tahmin etmektir. Bunun için ihtiyacımız olan formul ise: “medv ~ crim + zn + indus + chas + nox + rm + age + dis + rad + tax + ptratio + black + lstat” olacaktır.
Bu fonksiyon ile parametreler arasına otomatik olarak “+” eklenerek modele eklenecektir.
parametre_birlestirme <- function(resp, dt) {
  nms <- names(dt)
  fmla <- as.formula(paste(resp, "~", paste(nms[!nms %in% resp], collapse = " + ")))
  fmla
}

duzeltilmis_veri <- parametre_birlestirme("medv", Boston)

Sinir ağı argümanı, her bir gizli katman için nöronların sayısını içeren bir vektörü kabul ederken, “lineer.output” regresyon yapmak isteyip istemediğimizi belirtmek için kullanılır, "hidden" kısmında ise gizli katmanların kaçar tane olacağı belirlenir. Hidden kısmının (4,2) şeklinde belirtilmesi ilk gizli katmanda 4 adet nöron, ikinci gizli katmanda ise 2 adet nöron anlamı taşımaktadır. Tek gizli katmanda ise direk kaç nöron istiyorsak adet cinsinden belirtilir.

tk_ysa_model <- neuralnet(duzeltilmis_veri
                          , data= egitim_verisi
                          , hidden=8
                          , linear.output=TRUE)
#Sinir ağımızı görselleştirelim.
plot(tk_ysa_model)

Yapay sinir ağı modelimiz görüldüğü gibidir.


Sinir ağı nesnesi için bir sinirsel yorumlama diyagramını oluşturalım.
plotnet(tk_ysa_model)

Modelimiz yani tek gizli katmandan oluşan modelimiz için üretilen hata değeri için bu kodu kullanabiliriz.
pr.nn <- compute(tk_ysa_model,test_verisi[,1:13])
pr.nn <- pr.nn$net.result*(max(veri$medv)-min(veri$medv))+min(veri$medv)
test.cv.r <- (test_verisi$medv)*(max(veri$medv)-min(veri$medv))+min(veri$medv)
MSE <- sum((test.cv.r - pr.nn)^2)/nrow(test_verisi)

print(MSE)
#Hata değeri =0.005653369 çıkacaktır.


Sabırla okuyan herkese teşekkürlerimi sunar, esenlikler dilerim.
Saygılarımla. by #MS

Yorumlar

Bu blogdaki popüler yayınlar

2 Koordinat Noktası (Enlem, Boylam) Arasındaki Mesafeyi Hesaplamak

Güneş Paneli Hesaplama ve Kurulumu