Linear Regression

 

Bu örnekte Boston’da bulunan evlerin fiyatlarını diğer değişkenlerin etkisiyle tahmin etmeyi amaçlıyoruz.

 

Veri için : https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data

Özellikler:

V1: Kasabada kişi başı suç oranı.

V2: 25.000 metre kare üzerine konut arazi oranı.

V3: Parakende olmayan ticaret hacmi oranı.

V4: Nehre kıyısı varsa 1 yoksa 0.

V5: Nitrik oksit konsantrasyonu.(yüzde)

V6: Konut başına ort. oda sayısı.

V7: 1940 tan önce inşa edilmiş olan sahipli mülk oranı.

V8: Beş Boston iş merkezine ağırlık mesafeleri.

V9: Radyal otoyollarına erişim Endeksi.

V10: 10000$ başına vergi oranı.

v11: kasabadaki öğrenci – öğretmen oranı.

v12: siyahi oranı.

V13: Nüfüsün düşük statüsü .(yüzde)

v14: ev fiyatı.

 

require(data.table)
#data.table paketiyle veriyi kullanıyoruz. --> fread kullanmak için gerekli. 
#fread verinin nokta , virgül ile ayrılmasını sorun etmeden çalıştırıyor.
ev_verisi=fread('hausing.txt')

Başarı Oranı %73. Ev fiyatlarını tahmin etme oranı yüksek. 3 Yıldızlı değişkenlerin fiyata daha çok etki etmekte olduğunu görüyoruz.

regr=lm(V14~.,ev_verisi)
summary(regr)

 

Ev2.html

plot(ev_verisi$V14,regr$fitted.values, xlab = 'gercek', ylab = 'tahmini',
 col="black", cex= 1, pch= 1, main = "Evlerin tahmini ve gerçek fiyatları")

Ev2.html1

ev_veri=data.frame(ev_verisi)
tahminidegeri=predict(regr,ev_veri[5,])
tahminidegeri
##        5 
## 27.94352
ev_veri[5,14]
## [1] 36.2

Başarı oranı ne kadar yüksek olsada tahmini değerle gerçek değer arasında çok fark var. Başka bir model  deneyelim.

regr2=lm(V14~-1+.,ev_verisi)
#¦ Intercept alma diğer hepsini getir.
summary(regr2)

Burada regrosyon modelinde ki parametrelerden olan  α (intercept) değişkenini  çıkarttığımızda regresyon oranında artış olduğu gözlemlenir. Tahmin değerinin gerçek sonuca yaklaştığını görmekteyiz.

Ev2.html2

#Adjusted R-squared:  0.9581  başarı oranı yüksek.
tahminidegeri2=predict(regr2,ev_veri[5,])
tahminidegeri2
##       5 
## 29.5648
ev_veri[5,14]
## [1] 36.2

 

plot(ev_verisi$V14,regr2$fitted.values, xlab = 'gercek', 
ylab = 'tahmini', col="red", cex= 1, pch= 9, 
main = "Evlerin tahmini ve gerçek fiyatları")

Ev2.html3

pairs(~ev_verisi$V14 + ev_verisi$V6 + ev_verisi$V13 +
 ev_verisi$V8  + ev_verisi$V11+  ev_verisi$V5+ ev_verisi$V12,
 data = ev_verisi, main = "Boston Data")

Ev2.html4

 

Grafigi incelediğimiz de V14 ile V13 ve V8 ile V5 arasın da ilişki olduğu gözlemleniyor. Bu ilişkileri grafikte inceleyelim.

plot(ev_verisi$V14,ev_verisi$V13, xlab = 'Fiyat', 
ylab = 'Nüfüs düşük statüsünün yüzdesi', col="red", cex= 1, pch= 9)

Ev2.html5

Nüfüsün statüsü azaldıkça ev fiyatlarında da düşüş görülmüştür.

regr3=lm(V14~V13,ev_verisi)
 summary(regr3)
## 
## Call:
## lm(formula = V14 ~ V13, data = ev_verisi)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -15.168  -3.990  -1.318   2.034  24.500 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 34.55384    0.56263   61.41   <2e-16 ***
## V13         -0.95005    0.03873  -24.53   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.216 on 504 degrees of freedom
## Multiple R-squared:  0.5441, Adjusted R-squared:  0.5432 
## F-statistic: 601.6 on 1 and 504 DF,  p-value: < 2.2e-16
plot(ev_verisi$V8,ev_verisi$V5, xlab = 'Boston iş merkezine ağırlık mesafesi', 
ylab = 'Nitrik oksit konsantrasyonu', col="red", cex= 1, pch= 9)

Ev2.html6

Grafikte görüldüğü gibi Boston iş merkezine olan mesafe azaldıkça nitrik oksit konsantrasyonun da artış gözlemlenmektedir.

regr5=lm(V8~V5,ev_verisi)
#Boston iş merkezine mesafe azaldıkça zehirli gaz 
#oranında artış gözlemlenmektedir.
summary(regr5)
## 
## Call:
## lm(formula = V8 ~ V5, data = ev_verisi)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1731 -1.0339 -0.2507  0.7672  6.3089 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  11.5487     0.2931   39.41   <2e-16 ***
## V5          -13.9783     0.5172  -27.03   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.347 on 504 degrees of freedom
## Multiple R-squared:  0.5917, Adjusted R-squared:  0.5909 
## F-statistic: 730.4 on 1 and 504 DF,  p-value: < 2.2e-16

 

Reklamlar

R Programlama (Paketler)

Cran sitesi üzerinden paketlerin çoğu sunulmaktadır. Yüklenebilir paket listesi için available.packages() komutu kullanılır. Paketi yüklemek için install.packages(“paket ismi”), kullanmak için library() komutu kullanılır. Birden fazla paket yüklemek istersek şu şekilde komutu yazabiliriz  install.packages(“paket1”, “paket2”).

İstersek internetten finansal veri indirip analiz etme konusunda pratik bir yöntem olan Quandl paketini kullanabiliriz. Quandl paketini yüklemek için install.packages(“Quandl”) komutunu kullanıyoruz, library(“Quandl”) komutu ile veri setini kullanıma hazır hale getiriyoruz. Quandl sitesinde kullanıma uygun bir sürü veri seti bulunmaktadır. Örneğin, Tokyo Borsası

Japonya’da Tokyo Menkul Kıymetler Borsası’nda işlem yapan şirketlerin gün sonu ayarlanmamış fiyatlar ve ek bilgilerini alalım.

ddd.png

Quandl kodu TSE/2191’ dir.

njk

Bu şekilde veri setini görebiliriz.

Temel Komutlar ve Kavramlar (R Programlama)

R’da veri girişi şu şekilde olmaktadır.

x <- 9

x değişkenine 9 değerini atamış olduk.

Bir değişkene vektör de atamak mümkündür.

y <- c(12, 19, 20)

y değişkeni 12, 19, 20 sayılarından oluşan bir vektör oluşurmaktadır. Vektör oluşturulmak istendiği zaman c() ifadesi kullanılır.

Atamalar da ok iki yönlüde kullanılabilir. Örneğin, “a <- b” ifadesi b’nin değerini a’ ya atamaktadır. Aynı işlemi “b -> a” bu şekilde de yapabiliriz.

R’ da değişken tanımlama diğer dillerde olduğundan farklıdır. R’ da her atamada, atadığımız verinin türüne göre değişkenin veri tipi dinamik olarak belirlenir.

two.jpg

Değişkenin türünü görmek için class() fonksiyonu kullanılıyor. Çalışma ortamı verilerinin tümünü görebilmek için ls() fonksiyonunu kullanabiliriz. Değişkenleri silmek için rm() fonksiyonu kullanılır.

> rm(list=Is())

> rm (değişken_adi)

şeklinden değişken silinebilir ve silinen değişken tekrar geri getirilemez.

 

R’da geçmiş komutlarda ne yazığımızı görmek isteyebiliriz. Çalışma yaptıktan sonra oturum kapatılırken çalışmalar kaydedildiğinde, bir sonraki oturum bir öncekinin devamı olarak açılırsa R geçmiş komutları hatırlayacaktır. Bir önceki komuta ulaşmak için klavyede ki yukarı ↑ ve bir sonraki komut içinse aşşağı ok ↓ tuşuna basılmalıdır.

R Console, satırdaki komutları değerlendirirken boşlukları yok sayar. Bu sebeple yazarken hiç boşluk bırakılmasa da o işlem gerçekleşir. Fakat atama işlemlerinde kullandığımız (<-) veya (->) gibi çok sayıda sembol içeren işaretler bir bütün olduğundan, arasına boşluk koymamak gerekir.

 

 

 

 

R Programlama(Programı Çalıştırma)

Çıkan ekran R Console olarak adlandırılır. R programı çalıştırıldıktan sonra Consolu temizlemek için CTRL+L tuşlarına başılması gerekir.

Konsolda bulunan “>” imlecinin yanına yapmak istenilen işlem girilir.

Aşağıdaki şekilde görüldüğü gibi, bigdata adında çalışma klasörü oluşturmak için dir.create() komutu kullanılır. Oluşturmak istediğimiz isimde klasörün var olup olmadığını kontrol etmek isteyebiliriz bunun için file.exists(“klasör ismi”) komutunu kullanmamız gerekmektedir.

Consolda çalışırken genelde böyle bir komuta ihtiyaç duyulmaz fakat uzun programların çalışması sırasında ön kontroller yapmak olası sorunları engellemektedir. Bunu kısaca aşağıdaki komutla yapabiliriz.

if (!file.exists(“proje1”)){dir.create(“proje1”)}

“proje1” adlı çalışma klasörü olup olmadığını kontrol eder yoksa yeni bir klasörü oluşturur.

# ile gösterilen ifadeler comment ifadeler olup, R derleyicisi tarafından ihmal edilir. Comment ifadeleri, program yazanlar ve diğer kişiler için not oluşturmak amacıyla kullanılır.

 

R Programlama (Kurulum)

R’ nin ana sayfası https://www.r-project.org adresinde bulunuyor. Sayfanın sol üst köşesinde Download başlığı altında  CRAN isimli bağlantıdan Türkiye için bu bağlantı seçilebilir https://cran.pau.edu.tr/ . Bu sayfa içerisinde Linux, Mac OS X, Windows işletim sistemleri için farklı 3 bağlantı var. Windows işletim sistemi için Download R for Windows  bağlantısına ve açılan sayfada base bağlantısına tıklanır. Son olarak Download R 3.4.2 for Windows bağlantısına tıklanır. Tarayıcı kurulum programını indirmeye başlayacaktır. Daha sonra kurulum programını çalıştırdığınızda ne kadar next tuşu varsa tıklayabilirsiniz. Bu aşamaların birinde masaüstüne ve başlangıç menüsüne R kısayolu ekleyip eklemeyeceğiniz soruluyor seçim sizin. Kurulum bittiğinde R’yi kullanmaya başlayabilirsiniz.

R İLE PROGRAMLAMA (GİRİŞ)

R, bir programlama dili olup özellikle istatistiksel verilerin işlenmesi için kullanılır. Nesne tabanlı ve fonksiyonel programlama dillerinde bulunan özelliklere sahiptir. Kullanım alanı fazlalığı , açık bir yazılım olması, kaynakların çok olması gibi sebeplerle R’ın popülaritesi son yıllarda hızla artmıştır.

Bu programlama dilinin kullanımının artışındaki en büyük etken veri analizi açısından sunduğu olanaklar olmuştur. Özellikle son on yılda veri bilimi büyük gelişme göstermiştir. Dünyada var olan verilerin her iki yılda bir iki katına çıktığı varsayılmaktadır. Peki VERİ BİLİMİ NEDİR kısaca tanımlayacak olursak yığın halindeki veriden bilgiyi çekip çıkarma bilimi olarak tanımlayabiliriz. İşte tam bu noktada bu elde ettiğimiz bilgiden anlam çıkartmamız için gerekli olan R bize büyük kolaylıklar sağlamaktadır.

R ile veri madenciliği, veri analizi ve yapay öğrenme çalışmaları dışında diğer programlama dillerinde olduğu gibi bilgisayar programları da yazılabilmektedir. Pazarlamacılar, gazeteciler, istatistiksel analize ihtiyaç duyan yazılım geliştiriciler, istatistiksel raporlama yapan analistler ve istatistik veri ile çalışan öğrenciler için uygun bir dildir.

VERİ MADENCİLİĞİ (Data Mining)

Kısaca tanımlamak gerekirse veri madenciliği bizim için önemli olan bilginin yüksek boyutlardaki verilerden çıkarılmasıdır.Veriler üzerinde çözümlemeler yapmak ve veriyi çözümleyip bilgiye ulaşabilmek için veri madenciliği yöntemi ortaya çıkmıştır.

Teknolojik gelişmelerle birlikte gerçekleştirilen birçok işlemin elektronik olarak kayıt altına alınması, kolayca saklanabilmesi mümkün. Fakat ilişkisel veri tabanlarında saklanan veriden kararlar için anlamlı çıkarımlar yapabilmek bu verilerin uzmanlarca analiz edilmesini gerektiriyor.

 

Veri Madenciliği Uygulama Alanları 

Pazarlama

  • Müşterilerin satın alma davranışlarının belirlenmesi,
  • Yeni müşteriler kazanılması, mevcut müşteriyi elde tutması,
  • Müşteri ilişkileri yönetimi,
  • Satış tahmini,
  • Perakendecilik sektöründe çeşitli müşteri analizlerinin yapılması

Banka, Sigortacılık

  • Sigorta dolandırıcılıklarının taspit edilmesi,
  • Riskli müşteri gruplarının değerlendirilmesi,
  • Farklı finansal göstergeler arasında gizli korelasyonların bulunması,
  • Kredi kartı harcamalarına göre müşteri gruplarının belirlenmesi

Tıbbi Araştırmalar

  • DNA içersindeki genlerin sıralarının belirlenmesi,
  • Protein analizlerinin yapılması,
  • Hastalık tanıları

 

 

 

 

 

WordPress.com'da Blog Oluşturun.

Yukarı ↑