1 Giriş

İstatistik, belirli bir amaç için veri toplama, tablo ve grafiklerle özetleme, sonuçları yorumlama, sonuçların güven derecelerini açıklama, örneklerden elde edilen sonuçları kitle için genelleme, özellikler arasındaki ilişkiyi araştırma, çeşitli konularda geleceğe ilişkin tahmin yapma, deney düzenleme ve gözlem ilkelerini kapsayan bir bilimdir. Belirli bir amaç için verilerin toplanması, sınıflandırılması, çözümlenmesi ve sonuçlarının yorumlanması esasına dayanır. Blalock’a göre istatistik olayları tek tek ya da seyrek olarak ortaya çıkan olayları inceleyen bir dal değildir.

“İstatistik ile yalan söylemek kolaydır; istatistik olmadan gerçeği anlatmak zordur” (A. Dunkels)

“Üç çeşit yalan vardır; yalan, kuyruklu yalan, istatistik.” (Benjamin Disraeli)

“Yuvarlak sayılar her zaman yanlıştır” (Samuel Johnson)

“İstatistiksel düşünme, gün gelecek tıpkı okuryazar olmak gibi iyi bir yurttaş olmanın en gerekli unsurlarından olacaktır” (H.G.Wells)

2 Çalışmanın Amacı

Big Data ile çalışmak, belirli veri analizi araçları, paketleri ve makine öğrenimi gibi gelişmiş teknikler gerektirir. Bu çalışma, büyük verileri keşfetmek, görselleştirmek, ve modellemek için R içerisinde bulunan araçların ve makine öğrenimi yöntemlerinin kullanımına ilişkin uygulamalı bir eğitim olacaktır.

3 Big Data (Büyük Veri)

Big Data Nedir?

İnternet ve sosyal medya kullanımının yaygınlaşmasının, bilgi kavramının karşılığını da etkilediğini söylemek yanlış olmaz. Bilgiyi pek çok insan için çok daha hızlı ve kolay ulaşılabilir kılan internet, aynı zamanda ortaya ciddi ölçüde bilgi kirliliğinin çıkmasına da neden oluyor. Keza bu nedenle, internet pek çok kullanıcı tarafından “bilgi çöplüğü” olarak da anılıyor.

Esasen “çöplük” olarak tanımlanan havuz, içinde milyonlarca veri barındıran bir kaynak olarak değerlendiriliyor. Kullanıcıların bir akış üzerinden ileterek bu havuza gönderdikleri verilerin işlenebilir ve mantıksal bir düzlem çerçevesinde değerlendirilebilir olan bölümü, bazı yazılım ve şirketler tarafından bir araya getiriliyor. Ortaya çıkan bu anlamlı veriler bütünü, Büyük Veri (Big Data) kavramını oluşturuyor. Böylece ortaya pek çok araştırma için kaynak sağlayabilecek, sınıflandırılmaya uygun ve saklanabilir bir veri topluluğu çıkıyor.

Büyük Veri Nasıl Kullanılır?

Büyük veri, özellikle firmaların müşteri davranışlarını inceleyerek doğru kararlar almalarına ve stratejiler geliştirmelerine önemli katkılar sağlar. Eldeki veriler en sade ve işlenebilir hale getirildikten sonra, karşılaştırma yöntemi kullanılarak bu verilerin birbirleriyle olan ilişkileri incelenir ve aralarındaki bağlantılar ortaya çıkartılır. Bu sayede, alınacak olan kararların sonuçlarını önceden kestirmek mümkün olur. Verilerde yer alan çeşitli noktaların yerleri değiştirilerek oluşturulan simülasyonlarla, farklı kararlara verilecek tepkiler görülebilir.

Büyük veri analizi sayesinde kurumlar, gerçek müşteri davranışlarına dayalı verileri doğru bir şekilde değerlendirip, yüksek faydaya sahip bir araca dönüştürebilirler.

Büyük Verinin Önemi

Büyük veri tamamen gerçek verilerin analizine dayandığı için maliyetleri düşürme, doğru kanallara reklam harcaması yapma, iş gücünden tasarruf sağlama ve beklentilere uygun ürün geliştirme gibi birçok farklı alanda doğru kararlar alınmasına olanak tanımaktadır.

Büyük Verinin Kullanım Alanları

Büyük veri, başta bankacılık ve perakende sektörü gibi müşteri davranışlarının çok fazla önem taşıdığı ve takip edilmesinin gerektiği sektörler olmak üzere her alanda kullanılabilmektedir. Son yıllarda büyük verinin önemi devletler tarafından da anlaşılmış ve çeşitli alanlarda kullanılmaya başlanmıştır. Sağlık alanında; hastalıkların erken teşhis edilmesi ya da ilaç geliştirilmesi gibi konularda kullanılan büyük veri, suçları önlemek amacıyla ya da eğitim sisteminde geliştirmeler yapmak amacıyla da kullanılabilmektedir.

Büyük Veri Bileşenleri Nelerdir?

Büyük veriyi 5 ana bileşen oluşturmaktadır.

  • Çeşitlilik (Variety): Üretilen verilerin büyük bir kısmı, birbirinden farklı formata sahiptir. Telefonlardan, tabletlerden, bilgisayarlardan; farklı işletim sistemlerinden ya da dillerden gelen veriler birbirinden farklı formatların ortaya çıkmasına neden olmaktadır.

  • Hız (Velocity): Gün geçtikçe artan teknolojik imkanlar, elde edilen veri miktarının, yapılacak işlem sayısının ve çeşitliliğinin de aynı şekilde artmasına neden olmaktadır.

  • Hacim (Volume): Geçtiğimiz 10 yılda veri miktarı 40 kattan fazla bir artış göstermiş fakat veri depolama için yapılan harcamalar ise 1,5 kat artmıştır. Bu durum, elde edilen verinin doğru ve verimli şekilde depolanması için çok iyi bir kurgulama gerektiğini ortaya koymaktadır.

  • Doğrulama (Verification): Verilerle ilgili son yıllarda öne çıkan bir diğer konu, veri güvenliği ve doğruluğu olmuştur. Elde edilen verilerin kimler tarafından ve hangi şartlarda görüntüleneceği, bu verilerin hangilerinin gizli kalması gerektiği konuları, üzerinde dikkatle çalışılması gereken konulardır.

  • Değer (Value): Büyük veri ile ilgili en önemli bileşen, değerdir. Elde edilen ve işlenen veriler, kuruma değer kattığı sürece anlamlıdır. Bu nedenle, büyük verinin analizinin ve simülasyonlarının doğru şekilde kurgulanması ve büyük veriyi kullanan kuruma fayda sağlaması öncelikli olarak ele alınmalıdır. Büyük veri (big data) doğru kurgulandığı ve kullanıldığı takdirde, şirketlerin karar aşamalarında önemli faydalar sağlamakta ve şirketlere rekabet üstünlüğü sağlamaktadır. Bu durumun farkında olan şirketler; pazarlama, satış, üretim gibi birçok alanda büyük veriden faydalanmaktadırlar.

4 Veri Setleri

4.1 Carseats Veri Seti

Araba koltuğu satışlarını tahmin etmeye çalışacağız. Bu veri setinde, tek bir gözlem, araba koltuklarının satıldığı bir yeri temsil eder. Özellikle eğitim veri seti aşağıdaki değişkenlerden oluşur:

*Sales(Satışlar) - Her konumdaki birim satışlar (bin olarak)

*CompPrice(Comp Fiyatı) - Rakip tarafından her bir lokasyonda alınan fiyat

*Income(Gelir) - Topluluk gelir düzeyi (bin dolar olarak)

*Advertising (Reklam) - Her lokasyondaki şirket için yerel reklam bütçesi (bin dolar olarak)

*Population (Nüfus) - Bölgedeki nüfus büyüklüğü (bin olarak)

*Price - Her sitede araba koltukları için fiyat şirketi ücretleri

*ShelveLoc - Her sitedeki araba koltukları için raf konumunun kalitesini gösteren Kötü, İyi ve Orta düzeyli bir faktör

*Age(Yaş) - Yerel nüfusun ortalama yaşı

*Education(Eğitim) - Her konumdaki eğitim seviyesi

*Urban (Kentsel) - Mağazanın kentsel mi yoksa kırsal bir konumda mı olduğunu belirtmek için Hayır ve Evet seviyelerine sahip bir faktör

*US(ABD) - Mağazanın ABD’de olup olmadığını belirtmek için Hayır ve Evet seviyelerine sahip bir faktör

as_tibble(Carseats)
summary(Carseats)
##      Sales          CompPrice       Income        Advertising    
##  Min.   : 0.000   Min.   : 77   Min.   : 21.00   Min.   : 0.000  
##  1st Qu.: 5.390   1st Qu.:115   1st Qu.: 42.75   1st Qu.: 0.000  
##  Median : 7.490   Median :125   Median : 69.00   Median : 5.000  
##  Mean   : 7.496   Mean   :125   Mean   : 68.66   Mean   : 6.635  
##  3rd Qu.: 9.320   3rd Qu.:135   3rd Qu.: 91.00   3rd Qu.:12.000  
##  Max.   :16.270   Max.   :175   Max.   :120.00   Max.   :29.000  
##    Population        Price        ShelveLoc              Age       
##  Min.   : 10.0   Min.   : 24.0   Length:400         Min.   :25.00  
##  1st Qu.:139.0   1st Qu.:100.0   Class :character   1st Qu.:39.75  
##  Median :272.0   Median :117.0   Mode  :character   Median :54.50  
##  Mean   :264.8   Mean   :115.8                      Mean   :53.32  
##  3rd Qu.:398.5   3rd Qu.:131.0                      3rd Qu.:66.00  
##  Max.   :509.0   Max.   :191.0                      Max.   :80.00  
##    Education       Urban                US           
##  Min.   :10.0   Length:400         Length:400        
##  1st Qu.:12.0   Class :character   Class :character  
##  Median :14.0   Mode  :character   Mode  :character  
##  Mean   :13.9                                        
##  3rd Qu.:16.0                                        
##  Max.   :18.0

4.2 World Happiness Report Veri Seti

İlk Dünya Mutluluk Raporu, BM Yüksek Düzeyli Mutluluk ve refah toplantısını desteklemek üzere Nisan 2012’de yayınlandı. O zamandan beri dünya çok yol kat etti. Mutluluk gittikçe artan bir şekilde sosyal ilerlemenin ve kamu politikasının hedefi için uygun bir ölçü olarak görülmektedir. Haziran 2016’da OECD kendisini “insanların refahını hükümetlerin çabalarının merkezine koymak için büyüme anlatısını yeniden tanımlamayı” taahhüt etti. Şubat 2017’de Birleşik Arap Emirlikleri, Dünya Hükümeti Zirvesi kapsamında tam günlük bir Dünya Mutluluğu toplantısı düzenledi. Şimdi 20 Mart Dünya Mutluluk Günü’nde, bir kez daha Birleşmiş Milletler’de, tekrar Sürdürülebilir Kalkınma Çözümleri Ağı tarafından yayınlanan ve şimdi Ernesto Illy Vakfı’ndan cömert üç yıllık bir bağışla desteklenen Dünya Mutluluk Raporu 2017 oluşturuldu. Çalışmada 2021 yılı için mutluluk verileri kullanılmıştır.

*Country.name(Ülke Adı)

*Regional.indicator(Bölgesel Gösterge)

*Ladder.score(Skor)

*upperwhisker(Alt Sınır)

*lowerwhisker (Üst Sınır)

*Logged.GDP.per.capita(Kişi Başına Düşen GSYİH)

*Social.support(Sosyal Destek)

*Healthy.life.expectancy(Sağlıklı Yaşam Beklentisi)

*Freedom.to.make.life.choices(Seçim Yapma Özgürlüğü)

*Generosity(Cömertlik)

*Perceptions.of.corruption(Yolsuzluk Algısı)

*Dystopia(Anti Ütopya)

as_tibble(world)
summary(world)
##  Country.name       Regional.indicator  Ladder.score 
##  Length:149         Length:149         Min.   :2523  
##  Class :character   Class :character   1st Qu.:4852  
##  Mode  :character   Mode  :character   Median :5534  
##                                        Mean   :5533  
##                                        3rd Qu.:6255  
##                                        Max.   :7842  
##  Standard.error.of.ladder.score  upperwhisker   lowerwhisker 
##  Min.   : 26.00                 Min.   :2596   Min.   :2449  
##  1st Qu.: 43.00                 1st Qu.:4991   1st Qu.:4706  
##  Median : 54.00                 Median :5625   Median :5413  
##  Mean   : 58.75                 Mean   :5648   Mean   :5418  
##  3rd Qu.: 70.00                 3rd Qu.:6344   3rd Qu.:6128  
##  Max.   :173.00                 Max.   :7904   Max.   :7780  
##  Logged.GDP.per.capita Social.support  Healthy.life.expectancy
##  Min.   : 6635         Min.   :463.0   Min.   :48478          
##  1st Qu.: 8541         1st Qu.:750.0   1st Qu.:59802          
##  Median : 9569         Median :832.0   Median :66603          
##  Mean   : 9432         Mean   :814.7   Mean   :64993          
##  3rd Qu.:10421         3rd Qu.:905.0   3rd Qu.:69600          
##  Max.   :11647         Max.   :983.0   Max.   :76953          
##  Freedom.to.make.life.choices   Generosity      Perceptions.of.corruption
##  Min.   :382.0                Min.   :-288.00   Min.   : 82.0            
##  1st Qu.:718.0                1st Qu.:-126.00   1st Qu.:667.0            
##  Median :804.0                Median : -36.00   Median :781.0            
##  Mean   :791.6                Mean   : -15.13   Mean   :727.4            
##  3rd Qu.:877.0                3rd Qu.:  79.00   3rd Qu.:845.0            
##  Max.   :970.0                Max.   : 542.00   Max.   :939.0            
##     Dystopia   
##  Min.   : 648  
##  1st Qu.:2138  
##  Median :2509  
##  Mean   :2430  
##  3rd Qu.:2794  
##  Max.   :3482

5 Eksik Gözlem Analizi

5.1 Carseats Verisi

introduce(Carseats)

Carseats veri setinde eksik gözlem bulunmamaktadır.

5.2 World Happiness Report Verisi

introduce(world)

World veri setinde eksik gözlem bulunmamaktadır.

6 Veri Görselleştirme

6.1 Histogram

Veri dağılımını özetlemenin en çok kullanılan yoludur. Veri genişliğini eşit uzunluktaki aralıklara bölerek gösterilir. En sık kullanılan grafik türlerinden biridir ve birbirinden farklı kategoriler-gruplar için sayı, frekans vb. bilgileri göstermek ve kıyaslamak için kullanılır.

• Büyük veri kümelerinde kullanılır.

• Dağılım hakkında bilgi verir.

• Genellikle verini yoğunlaştığı konumları gösterir.

• Büyük veya küçük değerlere çarpık olması verilerde dönüşüm yapılabileceğini gösterir.

ggplot(Carseats,aes(x = ShelveLoc , fill = US)) + 
  geom_bar(aes(y = (..count..)), position = "dodge")+ geom_text(aes(y=(..count..), vjust = -0.5, label = ifelse((..count..)== 0 ,"", scales::percent((..count..)/sum(..count..)))), stat = "count")+
  labs( x = "ShelveLoc ",
        y = "Frekanslar",
        title = "US'de Bulunma Durumana Göre Koltuk Kalitesi")

library(ggthemes)
ggplot(Carseats) + aes(x = ShelveLoc, fill = US) + geom_bar(aes(y = (..count..)), position = "dodge")+ geom_text(aes(y=(..count..), vjust = 0.5, label = ifelse((..count..)== 0 ,"", scales::percent((..count..)/sum(..count..)))), stat = "count") +
    scale_fill_brewer(palette = "Accent") + labs(title = "ShelveLoc Ve US durumu Cubuk Grafiği") +
    ggthemes::theme_hc() + theme(legend.position = "top", axis.text.x = element_text(angle = 50,
    vjust = 0.5)) + facet_wrap(vars(Urban), scales = "free")

plot <- Carseats %>% count(ShelveLoc, US)
plot %>%plot_ly(x = ~ShelveLoc, y = ~n, color = ~US)

6.2 Box Plot

Verilerin çeyreklik değerlerine göre gösterimidir. Histogram ve nokta çizimleri farklı görünüme sahip olmakla birlikte veri ile ilgili yarıntılı bilgi verir. Konum, yayılım ve çarpıklık ile ilgili bilgi verir. Dağılımın kuyrukları ve bu kuyrukların yayılım ile ilgili bilgi verir. Uç değerleri görmek için olanaktır. Bu değerler aykırı değerde olabilir. Birden fazla veri kümesinin karşılaştırılmasına yararlıdır. Uç değerlere karşı dirençlidir. Grafiğin çizimi için ortanca, birinci ve üçüncü çeyrek değerleri hesaplanır ve

\[DAG (Çeyrekler~~Arası~~Uzaklık)=d=Q_3-Q_1\]

farkı bulunur. \(Q_3\) ve \(Q_1\) farkı arasında yatay veya dikey eksende kutu çizilir. Kutunun içine ortanca çizgisi çizilir ve her iki ucundan, \(A=Q_1-1.5d\) ve \(B=Q_3+ 1.5d\) Uzunlukları kuşkulu gözlem sınırları olarak tanımlar. Bunlara eşik değerleri denir.Uç değerler eşik değerlerinin dışında olur ve işaretler.

ggplot(data= Carseats)+geom_boxplot(mapping = aes(y=Sales,fill=ShelveLoc))+
  labs(title = "Satış Değişkeninin Koltuk Tipi Göre Kutu Grafiği",y="Satış ",x="Koltuk Tipi")+ theme(legend.position = "none")

plot_ly(Carseats, y = ~Sales, color = ~ShelveLoc, type = "box")

6.3 Saçılım Grafiği

İki ya da daha çok değişken arasındaki çizimler, aykırı değerlerin varlığı bakımından, değişkenlerin birliktelikleri ya da bağımsızlıkları değişkenlerin etkinlikleri ve işlevsel yapı bakımından önemli bilgi verirler. İki değişken arasındaki ilişkinin yapısını ve yönünü verir.

ggplot(data=Carseats)+ geom_point(mapping = aes(x=CompPrice,y=Income,color=Urban))

plot_ly(data = Carseats, x = ~CompPrice, y = ~Income, color= ~Urban)

6.4 Korelasyon Grafiği

İlişki Ölçüleri

Bir veri kümesindeki değişkenlerin bağımsızlıkları ve etkinlikleri bakımından, ilişki katsayıları kullanıla bilir. Kovaryans, iki değişkenin arasındaki birlikte değişim miktarını verir.

\[Cov(X,Y)=∑(x_i-x ̅)(y_i-y ̅)/n\]

İkiden çok değişken için kovaryans matrisi, pozitif tanımlıdır ve değişkenlerin birlikte değişim miktarı ile ilgili bilgi verir.

Pearson İlişki Katsayısı

İki nicel değişken arasında ilişkinin derecesini belirlemek için kullanılır. \[r_{XY}=Cov(X,Y)/S_X S_Y\]

chart.Correlation(Carseats[c(1:6,8,9)], histogram=TRUE, pch=19)

6.5 Pasta Grafiği

Kategorik verileri görsel bir şekilde betimleyip özetlemek için hazırlanan; içindeki kategori dilimlerini orantısal olarak gösteren bir daire şeklinde sunulan bir gösterim aracıdır.

ggplot(Carseats,aes(x = "", fill=US)) + 
  geom_bar(width = 1)+ geom_text(aes(y=(..count..), vjust = -1.5, label = ifelse((..count..)== 0 ,"", scales::percent((..count..)/sum(..count..)))), stat = "count") + 
  coord_polar (theta="y")

ggplot(data = Carseats) + 
  geom_bar(mapping = aes(x = ShelveLoc, fill = ShelveLoc), show.legend = FALSE, width = 1) + 
  theme(aspect.ratio = 1) +
  labs(x = NULL, y = NULL)+ 
  coord_flip()+ 
  coord_polar()

6.6 Bubble Charts

Kabarcık grafiği, iki boyutlu verilerin kabarcıklarla veri noktaları ve verilerin ek boyutu da kabarcıkların boyutuyla temsil edilen dağılım grafiğinin bir çeşididir. Dağılım grafiği gibi, kabarcık grafiği de kategori ekseni kullanmaz; hem yatay hem de dikey eksenler değer eksenleridir. Dağılım grafiğinde çizilen x değerlerine ve y değerlerine ek olarak, kabarcık grafiği x değerlerini, y değerlerini ve z (boyut) değerlerini de çizebilir.

df <- world
fig <- df %>%
    plot_ly(x = ~Social.support, y = ~Logged.GDP.per.capita, size = ~Ladder.score, color = ~Regional.indicator,
        text = ~Country.name, hoverinfo = "text", type = "scatter", mode = "markers")
fig

6.7 3D Plot

plot_ly(Carseats, x = ~Sales, y = ~Advertising, z = ~Population, color = ~ShelveLoc, colors = c('#BF382A', '#0C4B8E', '#C447B4')) %>%
  add_markers() %>%
  layout(scene = list(xaxis = list(title = 'Sales'),
                     yaxis = list(title = 'Advertising'),
                     zaxis = list(title = 'Population')))

3D grafikte insanların satış, reklam ve populasyon durumlarının koltukları için raf konumunun kalitesi durumu altında saçılım grafiği yer almaktadır.

6.8 World Map

7 Normal Dağılım

7.1 Normallik Varsayımı

Normal dağılım, Gauss dağılımı olarak da bilinmektedir. Standart normal dağılım bir veri setinde ortalamanın 0, varyansın ise 1 olduğunu durumda sağlanmaktadır. Elimizdeki verilerin ortalamalarını çizgi grafiği ile gösterecek olursak, grafiğin orta noktasında çizginin yüksek olduğu, sağ ve sol kenarlara doğru yüksekliğin azaldığını görebiliriz. Bu yazımızın görseli bir önceki cümleyle açıklanan grafik örneğidir. Normal Dağılım Hangi Amaçla Kullanılır? Normal dağılım istatistiksel birtakım analizleri yapmadan önce uygulanan ve hangi analizi yapmamıza karar veren yardımcı bir analizdir. Örneğin iki farklı (bağımsız) grubun tek ölçüme ait ortalamalarının karşılaştırılması için bağımsız örneklem T testi veya Mann Whitney U testi kullanılabilir. Veri setimizdeki veriler normal dağılım gösteriyor ise bağımsız örneklem t testi kullanılır. Özellikle uluslararası dergilerde makale yayınlanacak ise yayın kurulları normal dağılım testi yapılıp yapılmadığına dikkat etmektedir. Ülkemizde ise yakın zamanlarda bu analizin yapılması istenilmeye başlanmıştır.

\[φ_(μ,σ^2 ) (x)=1/(σ√2π) e^{-(x-μ)^2/2σ^2 }\]

7.2 Çarpıklık Ve Basıklık Ölçüleri

7.2.1 Çarpıklık\((α_3)\)

Bir dağılıma ilişkin ölçme sonuçlarının nasıl dağıldığı hakkında bilgi verir.

  • Momentlere Dayalı Çarpıklık Ölçüsü \[α_3=M_3/S^3 =((∑(x_i-x ̅)^3 )/n)/S^3\]

\(α_3=0\) ise veri simteriktir

\(α_3>0\) ise veri sağa çarpık

\(α_3<0\) ise veri sola çarpık

7.2.2 Basıklık\((α_4)\)

Basıklık bir sınıftaki değişim miktarının göstergesidir.

  • Momentlere Dayalı Çarpıklık Ölçüsü

\[α_4=M_4/S^4 =((∑(x_i-x ̅)^4 )/n)/S^4 \]

\(α_4=3\) ise veri normaldir

\(α_4>3\) ise verinormale göre sivridir

\(α_4<3\) ise veri normale göre basıktır

7.3 Veri Setlerinide ki Değişkenlerin Normalliklerinin İncelenmesi

Veri setindeki değişkenlerin normallik incelemesini yapmak için Shapiro-Wilk test istatistiği kullanılmıştır. Gözlem sayısı 5000’den küçük olan veri setleri için uygundur. Teste ait hipotezler aşağıdaki şekildedir.

\(H_0\):Değişkenlerin dağılımı normal dağılımdan gelmemektedir.

\(H_A\):Değişkenler dağılımı normal dağılımdan gelmektedir.

Carseats Veri seti

Değişkenler İstatistik P değeri
Sales 0.995 0.25
CompPrice 0.998 0.97
Income 0.961 0.00
Advertising 0.873 0.00
Population 0.952 0.00
Price -0,703 0.995
Age 0.956 0.00
Education 0.924 0.00

Normallik incelemesi %95 güven düzeyi ile yapılmıştır. Shapiro-Wilk testi yapıldıktan sonra Income, Advertising, Population, Age ve Education değişkenlerinin p değerleri 0,05’ten küçük olduğu için \(H_0\) hipotezi reddedilir. Yani %95 güven ile değişkenlerin dağılımım normal dağılımdan gelmemektedir.

World Veri Seti

Değişkenler İstatistik P değeri
Ladder.score 0.991 0.48
upperwhisker 0.991 0.51
lowerwhisker 0.991 0.46
Logged.GDP.per.capita 0.965 0.00
Social.support 0.924 0.00
Healthy.life.expectancy 0.955 0.00
Freedom.to.make.life.choices 0.954 0.00
Generosity 0.943 0.00
Perceptions.of.corruption 0.94 0.00
Dystopia 0.976 0.00

Normallik incelemesi %95 güven düzeyi ile yapılmıştır. Shapiro-Wilk testi yapıldıktan sonra Logged.GDP.per.capita, Social.support, Healthy.life.expectancy, Freedom.to.make.life.choices, Generosity, Perceptions.of.corruption ve Dystopia değişkenlerinin p değerleri 0,05’ten küçük olduğu için \(H_0\) hipotezi reddedilir. Yani %95 güven ile değişkenlerin dağılımım normal dağılımdan gelmemektedir.

7.4 Veri Setlerinide ki Değişkenlerin Çarpıllık ve Basıklıkların İncelenmesi

Carseats Veri seti

Değişkenler Çarpıklık(\(α_3\)) Basıklık(\(α_4\))
Sales 0.18 2.90
CompPrice -0.04 3.02
Income 0.04 1.91
Advertising 0.63 2.44
Population -0.05 1.79
Price -0,70 -0.12
Age -0.07 1.86
Education 0.04 1.70

Carseat veri setindeki Income, Popilation, Price, Age ve education değişkenleri basıktır. Değişkenlerin çarpıklıklar çok azdır.

World Veri Seti

Değişkenler Çarpıklık(\(α_3\)) Basıklık(\(α_4\))
Ladder.score -0.10 2.60
upperwhisker -0.11 2.63
lowerwhisker -0.09 2.58
Logged.GDP.per.capita -0.34 2.17
Social.support -0.92 3.34
Healthy.life.expectancy -0.51 2.41
Freedom.to.make.life.choices -0.74 3.35
Generosity 0.99 4.54
Perceptions.of.corruption -1.56 5.13
Dystopia -0.55 3.39

Perceptions.of.corruption, Freedom.to.make.life.choices değişkeni sola çarpıktır.

Perceptions.of.corruption, Generosity değişkeni sivri bir dağılıma sahiptir.

8 Makine Öğrenmesi

8.1 Makine Öğrenmesi Nedir?

Makine öğrenmesi esas olarak 1959 yılında bilgisayar biliminin yapay zekada sayısal öğrenme ve model tanıma çalışmalarından geliştirilmiş bir alt dalıdır. Makine öğrenmesi yapısal işlev olarak öğrenebilen ve veriler üzerinden tahmin yapabilen algoritmaların çalışma ve inşalarını araştıran bir sistemdir. Bu tür algoritmalar statik program talimatlarını harfiyen takip etmek yerine örnek girişlerden veri tabanlı tahminleri ve kararları gerçekleştirebilmek amacıyla bir model inşa ederek çalışırlar. Makine öğrenmesi algoritmaları genel olarak denetimli ve denetimsiz öğrenme olarak iki gruba ayrılır.

8.2 Denetimsiz Öğrenme

Denetimsiz öğrenmede veri noktaları etiketlenmez. Algoritma, verileri düzenleyerek veya bunların yapısını açıklayarak veri noktalarını sizin için etiketler. Bu teknik, sonucun nasıl görüneceğini bilmediğiniz durumlarda faydalıdır.

Örneğin, müşteri verilerini sağlayıp benzer ürünlerden hoşlanan müşterilerin segmentlerini oluşturmak istediğinizi varsayalım. Sağladığınız veriler etiketlenmez ve sonuçtaki etiketler, veri noktalarında keşfedilen benzerlikler temel alınarak oluşturulur.

8.3 Denetimli Öğrenme

Denetimli öğrenmede, algoritmalar sağladığınız etiketli örnekleri temel alarak tahmin yapar. Bu teknik, sonucun nasıl görüneceğini bildiğiniz durumlarda faydalıdır.

Örneğin, son 100 yıla göre şehirlerin nüfuslarını içeren bir küme sağlayıp dört yıl sonra belirli bir şehrin nüfusunun ne olacağını öğrenmek istediğinizi varsayalım. Sonuç, veri kümelerinde mevcut olan etiketleri kullanır: nüfus, şehir ve yıl.

9 Verisetlerinin Parçalanması

Kullanacağımız modellerin tahmin performansını ölçmek için veriyi train ve test olarak ikiye bölmemiz gerekiyor. Bir verinin hepsini modellere sokmaya çalışırsak hem sağlıklı sonuçlar alamayacağız, hem de kodların çalışması için çok uzun süre beklememiz gerekecek. Bu sebeple %80’i train, %20’i test olacak şekilde rastgele ayırdık.

9.1 Carseats Verisi

library(tree)



set.seed(5364)
train_indeks <- createDataPartition(Carseats$Urban, 
                                  p = .8, 
                                  list = FALSE, 
                                  times = 1)


train <- Carseats[train_indeks,]
test  <- Carseats[-train_indeks,]


train_x <- train %>% dplyr::select(-Urban)
train_y <- train$Urban
test_x <- test %>% dplyr::select(-Urban)
test_y <- test$Urban


#tek bir veri seti

training <- data.frame(train_x, Urban = train_y)

10 Makine Öğrenmesi Regresyon Modelleri

10.1 Çoklu Doğrusal Regresyon

k sayıda değişkenin ilişkileri ölçmek için kullanılır.

Hem tanımlayıcı hem de çıkarımsal istatistik sağlar.

Basit doğrusal regresyon bize normal dağılmış, hakkında aralıklı/oranlı ölçekle veri toplanmış iki değişken arasında doğrusal ilişki olup olmadığını test etme olanağı verir.

Değişkenlerden biri tahmin, biri sonuç değişkenidir.

k sayıda bağımsız değişkenin olduğu doğrusal regresyon modeli aşağıdaki gibi yazılır.

\[y= β_0+β_1 X_1+β_2 X_2+⋯+β_k X_k+ε\]

10.1.1 Model

set.seed(4123)
lm_fit <- lm(Sales ~ CompPrice+ Income+Advertising+Price+ShelveLoc+Age, data = training)
#model ciktisi.
lm_fit
## 
## Call:
## lm(formula = Sales ~ CompPrice + Income + Advertising + Price + 
##     ShelveLoc + Age, data = training)
## 
## Coefficients:
##     (Intercept)        CompPrice           Income      Advertising  
##         5.59305          0.09214          0.01496          0.11728  
##           Price    ShelveLocGood  ShelveLocMedium              Age  
##        -0.09399          4.80105          1.94456         -0.04906

Regresyon modeline ilişkin katsayıların sonuçlar incelendiğinde β parametrelerinin tahmini B sütunundadır. Bu değerler ile regresyon modeli aşağıdaki gibi olur.

\[Satış = 5,59+0,092*CompPrice+0,014*Income+0,117*Advertising-0,093*Price\]

\[ 4,801*ShelveLoc_{Good}+ 1,936*ShelveLoc_{Medium}- 0,048*Age \]

10.1.2 Varsayım Kontrolü

summary(lm_fit)
## 
## Call:
## lm(formula = Sales ~ CompPrice + Income + Advertising + Price + 
##     ShelveLoc + Age, data = training)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.7075 -0.6837  0.0479  0.6720  3.3234 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      5.593053   0.569033   9.829  < 2e-16 ***
## CompPrice        0.092138   0.004684  19.672  < 2e-16 ***
## Income           0.014965   0.002066   7.242 3.45e-12 ***
## Advertising      0.117281   0.008835  13.274  < 2e-16 ***
## Price           -0.093994   0.002983 -31.512  < 2e-16 ***
## ShelveLocGood    4.801047   0.173990  27.594  < 2e-16 ***
## ShelveLocMedium  1.944558   0.144275  13.478  < 2e-16 ***
## Age             -0.049055   0.003534 -13.880  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.034 on 313 degrees of freedom
## Multiple R-squared:  0.8733, Adjusted R-squared:  0.8705 
## F-statistic: 308.2 on 7 and 313 DF,  p-value: < 2.2e-16

Kısmi F Testi

\(H_0\): Bağımsız değişkenlerin kurulan modele anlamlı bir katkısı yoktur.

\(H_A\): Bağımsız değişkenlerin kurulan modele anlamlı bir katkısı vardır.

Anova tablosundaki F istatistiğinin p değeri 0,05’ten küçük olduğu için \(H_0\) hipotezi reddedilir.

Yani %95 güven ile kurulan model anlamlıdır. Popuplation, Education, US ve Urban değişkenleri anlamsız olduğu için çalışmadan çıkarılmıştır.

Artık İncelemesi (Hataların Normal Dağılması)

yhat<-lm_fit$fit
t<- rstudent(lm_fit)
t<-data.frame(t)

p <- ggplot(data=t, aes(sample=t)) +
  geom_qq(color="red")

ggplotly(p)

Q-Q çizmlerinde ise artıkların normal dağılımı yakın olduğu görülmektedir.

Artık İncelemesi (Sabit Varyanslılık)

plot_ly( x = yhat, y = t)

Grafikte artıkların doğrusal olmayan herhangi bir kalıpta olmadığını gösterir. Artıkların saçılım grafiği incelendiğinde çizilen doğrunun düz çizgiye yakın olduğu görülür. Değişen varyanslılık yoktur.

Otokorelasyon (İlişkili Hatalar)

library(lmtest)
dwtest(lm_fit)
## 
##  Durbin-Watson test
## 
## data:  lm_fit
## DW = 2.0467, p-value = 0.6618
## alternative hypothesis: true autocorrelation is greater than 0

\[H_0:P=0 (Otokorelasyan~~yoktur.)\]

\[H_A:P≠0 (Otokorelasyon~~vardır.) \]

Buna göre Durbin-Watson test istatistiğinin hesaplanan değeri d = 2,0467 olarak elde edilmiştir. d=2,0467 değeri 2’yi geçtiği için otokorelasyon vardır denilebilir.

VIF (Varyans Şişirme Oranı)

library(car)
print(vif(lm_fit))
##                 GVIF Df GVIF^(1/(2*Df))
## CompPrice   1.598628  1        1.264369
## Income      1.016779  1        1.008354
## Advertising 1.013946  1        1.006949
## Price       1.575125  1        1.255040
## ShelveLoc   1.024709  2        1.006121
## Age         1.026325  1        1.013077

\(VIF_j\) değerlerini karşılaştırmak için 5 değeri baz alınmıştır.

Değişkenlerin VIF değerleri 5’ten küçük olduğu için değişkenler arasında çoklu bağıntının olduğu değişken yoktur.

10.1.3 Tahmin

Kurulan model ile tahmin yapılacak ve yapılan tahminlerin basarisi test seti kullanılarak değerlendirilecek.

Model ile Tahmin

defaultSummary(data.frame(obs = training$Sales,
pred = lm_fit$fitted.values)
)
##      RMSE  Rsquared       MAE 
## 1.0213455 0.8732924 0.8135358

Belirtme Katsayısı(\(R^2\)): Yukarıdaki görüldüğü sales verilerinin çoklu regresyon modeli için belirtme katsayısı (\(R^2\)) 0,8780 olarak elde edilmiştir. Bağımlı değişkendeki değişimin %87,80’ni train verisindeki bağımsız değişken tarafından açıklanmıştır. Modele ait düzeltilmiş \(R^2\) ise %87,12’dır.

Artıkların mutlak ortalaması(MAE): hatası 0,79 dur. Değerin düşük olması modelin iyi kurulduğunun gösterir.

Hata Kareler Ortalamasının Kökü (RMSE): Modelinin, tahminleyicinin tahmin ettiği değerler ile gerçek değerleri arasındaki uzaklığın bulunmasında kullanılır. Değerin 0,99 olması tahmin edicilerin gerçek derelerine yakın olmasıdır.

RMSE ve MAE değerlerinin düşük olması oluşturulan modelin ne kadar iyi olduğunu gösterir.

10.1.4 Model Geliştirme

ctrl <- trainControl(method = "cv", 
                     number = 10)

lm_val_fit <- train(x = training[-c(1)], y = training$Sales,
      method = "lm",
      trControl = ctrl)


lm_val_fit$results
summary(lm_val_fit)
## 
## Call:
## lm(formula = .outcome ~ ., data = dat)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8625 -0.6930  0.0512  0.6561  3.3742 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      5.8511772  0.6862476   8.526 6.82e-16 ***
## CompPrice        0.0926968  0.0047141  19.664  < 2e-16 ***
## Income           0.0149525  0.0020776   7.197 4.69e-12 ***
## Advertising      0.1213325  0.0124971   9.709  < 2e-16 ***
## Population       0.0002736  0.0004190   0.653    0.514    
## Price           -0.0941284  0.0029812 -31.574  < 2e-16 ***
## ShelveLocGood    4.8053811  0.1744018  27.554  < 2e-16 ***
## ShelveLocMedium  1.9461488  0.1448722  13.434  < 2e-16 ***
## Age             -0.0490231  0.0035321 -13.879  < 2e-16 ***
## Education       -0.0323170  0.0222469  -1.453    0.147    
## USYes           -0.1438879  0.1680055  -0.856    0.392    
## UrbanYes         0.1823017  0.1274295   1.431    0.154    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.031 on 309 degrees of freedom
## Multiple R-squared:  0.8756, Adjusted R-squared:  0.8712 
## F-statistic: 197.7 on 11 and 309 DF,  p-value: < 2.2e-16
lm_val_fit$finalModel
## 
## Call:
## lm(formula = .outcome ~ ., data = dat)
## 
## Coefficients:
##     (Intercept)        CompPrice           Income      Advertising  
##       5.8511772        0.0926968        0.0149525        0.1213325  
##      Population            Price    ShelveLocGood  ShelveLocMedium  
##       0.0002736       -0.0941284        4.8053811        1.9461488  
##             Age        Education            USYes         UrbanYes  
##      -0.0490231       -0.0323170       -0.1438879        0.1823017

11 Makine Öğrenmesi Sınıflandırma Modelleri

df <- Carseats


df$Sales <- as.factor(ifelse(df$Sales <= 8, "Low", "High"))


set.seed(5364)
train_indeks <- createDataPartition(df$Sales, 
                                  p = .8, 
                                  list = FALSE, 
                                  times = 1)


train <- df[train_indeks,]
test  <- df[-train_indeks,]


train_x <- train %>% dplyr::select(-Sales)
train_y <- train$Sales
test_x <- test %>% dplyr::select(-Sales)
test_y <- test$Sales


#tek bir veri seti

training <- data.frame(train_x, Sales = train_y)
** Veri setinde sınıflandırma yapmak için Sales değişkeni kategorize edilmiştir**

11.1 Lojistik Regresyon

Lojistik regresyon, bir sonucu belirleyen bir veya daha fazla bağımsız değişken bulunan bir veri kümesini analiz etmek için kullanılan istatistiksel bir yöntemdir. Sonuç, ikili bir değişkenle ölçülür (yalnızca iki olası sonuç vardır). Lojistik regresyonda, bağımlı değişken ikili veya ikili, yani yalnızca 1 (DOĞRU, başarı, hamile vb.) Veya 0 (YANLIŞ, hata, gebe olmayan vb.) Olarak kodlanmış verileri içeriyor.

Lojistik regresyonun amacı, iki yönlü karakteristiği (bağımlı değişken = yanıt veya sonuç değişkeni) ile ilgili bir dizi bağımsız (öngörücü veya açıklayıcı) değişken arasındaki ilişkiyi tanımlamak için en uygun (henüz biyolojik olarak makul) modeli bulmaktır. Lojistik regresyon, ilgi karakteristiklerinin varlığının olasılığını logit dönüşümünü tahmin etmek için bir formülün katsayılarını (standart hatalarını ve önem seviyelerini) üretir:

\[logit(p) = b_0+b_1X_1+b_2X_2+...+b_kX_k\]

Burada p, karakteristik özelliğinin var olma olasılığıdır.

\[odds=p/{1-p} ~~ ve ~~logit(p)=ln(p/{1-p}) \]

Karekök hataların toplamını en aza indirgeyen parametreleri seçmek yerine (sıradan regresyon gibi), lojistik regresyonda tahmin, örnek değerlerin gözlem olasılığını en yükseğe çıkaran parametreleri seçer.

11.1.1 Model

set.seed(86451)
model_glm <- glm(Sales~ ., 
                 data = train, 
                 family = "binomial")

levels(training$Sales)[2]
## [1] "Low"
summary(model_glm)
## 
## Call:
## glm(formula = Sales ~ ., family = "binomial", data = train)
## 
## Deviance Residuals: 
##      Min        1Q    Median        3Q       Max  
## -2.45211  -0.17612   0.03686   0.27772   2.51533  
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      6.7905105  2.8412462   2.390   0.0168 *  
## CompPrice       -0.1741337  0.0271317  -6.418 1.38e-10 ***
## Income          -0.0348329  0.0088310  -3.944 8.00e-05 ***
## Advertising     -0.2978567  0.0578494  -5.149 2.62e-07 ***
## Population       0.0009774  0.0016585   0.589   0.5556    
## Price            0.1691204  0.0225662   7.494 6.66e-14 ***
## ShelveLocGood   -8.5015569  1.2334920  -6.892 5.49e-12 ***
## ShelveLocMedium -3.7627234  0.8208469  -4.584 4.56e-06 ***
## Age              0.0799644  0.0172742   4.629 3.67e-06 ***
## Education       -0.0416343  0.0879495  -0.473   0.6359    
## UrbanYes         0.3262321  0.5011616   0.651   0.5151    
## USYes            0.7442587  0.6734159   1.105   0.2691    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 434.83  on 320  degrees of freedom
## Residual deviance: 140.39  on 309  degrees of freedom
## AIC: 164.39
## 
## Number of Fisher Scoring iterations: 7
library(ResourceSelection)
hoslem.test(model_glm$y,fitted(model_glm))
## 
##  Hosmer and Lemeshow goodness of fit (GOF) test
## 
## data:  model_glm$y, fitted(model_glm)
## X-squared = 8.5795, df = 8, p-value = 0.379

\(H_0\): Oluşturulan model veri ile uyumludur.

\(H_A\): Oluşturulan model veri ile uyumlu değildir.

Sig. değeri 0,05’den büyük olduğu için \(H_0\) reddedilmez.

%95 Güven ile oluşturulan model veri ile uyumludur.

11.1.2 Tahminlerin Görselleştirilmesi

plot(as.numeric(train$Sales)-1 ~ Price , data = train,
     col = "darkorange",
     pch = "I", 
     ylim = c(-0.2, 1))

abline(h = 0, lty = 3)
abline(h = 1, lty = 3)
abline(h = 0.5, lty = 2)

model_glm <- glm(Sales~ Price , 
                 data = train, 
                 family = "binomial")

curve(predict(model_glm, data.frame(Price  = x), type ="response"),
              add = TRUE,
              lwd = 3,
              col = "dodgerblue")

11.1.3 ROC Eğrisi

model_glm <- glm(Sales~ ., 
                 data = test, 
                 family = "binomial")


test_ol <- predict(model_glm, newdata = test[-c(1)], type = "response")

a <- roc(test$Sales ~ test_ol, plot = TRUE, print.auc = TRUE)

11.1.4 Varsayım Kontrolü

Cook’s Uzaklığı

plot(model_glm,which=4,id.n=3)

Burada cook’s distance değerlerini görüyoruz. Ancak bu gözlemlere bakarak aykırı değerler olduğu konusunda kesin yorum yapılamamaktadır. Bunun için standartlaştırılmış artık değerlerine bakılır. Standartlaştırılmış artıklar 3 ile -3 arasında değerler aldığında etkin gözlem yoktur.

Standartlaştırılmış Artık

std.resid<-rstandard(model_glm)
z<-abs(std.resid)>3
table(z)["TRUE"]
## <NA> 
##   NA

Çıktıyı yorumladığımızda etkin gözlem olmadığını söyleyebiliriz.

VIF (Şişirme Oranı)

car::vif(model_glm)
##                  GVIF Df GVIF^(1/(2*Df))
## CompPrice    8.442744  1        2.905640
## Income       2.860138  1        1.691194
## Advertising 16.069978  1        4.008738
## Population   1.427479  1        1.194772
## Price       11.456061  1        3.384680
## ShelveLoc    9.942345  2        1.775711
## Age          5.758001  1        2.399584
## Education    4.067432  1        2.016787
## Urban        1.729398  1        1.315066
## US           9.270046  1        3.044675

VIF değerlerinin 10’dan olduğunu görüyoruz. Değişkenler arasında çoklu doğrusal bağlantı problemi bulunmamaktadır.

11.1.5 Tahmin

ol <- predict(model_glm, type = "response")
hist(ol)

model_glm_pred <- ifelse(predict(model_glm, type = "response") > 0.5, "Low","High")
table(model_glm_pred)
## model_glm_pred
## High  Low 
##   31   48

Siniflandirma Hatasi Tespiti ve Karmasiklik Matrisi

Test verisinde ki atama başarı durumu %48,1’dir

11.2 SVM (Destek Vektör Makineleri / Support Vector Machine)

“Destek Vektör Makinesi” (SVM), sınıflandırma veya regresyon problemleri için kullanılabilen denetimli bir makine öğrenmesi algoritmasıdır. Bununla birlikte, çoğunlukla sınıflandırma problemlerinde kullanılır. Bu algoritmada, her bir veri maddesini belirli bir koordinatın değeri olan her özelliğin değeri ile birlikte n-boyutlu boşluğa (burada n sahip olduğunuz özelliklerin sayısı) bir nokta olarak çizilir. Ardından, iki sınıftan oldukça iyi ayrım yapan hiper-düzlemi bularak sınıflandırma gerçekleştirilir. Destek Vektörleri, sadece gözlemin koordinatlarıdır. Destek Vektör Makinesi, iki sınıftan (hiper düzlem / çizgi) en iyi ayıran bir sınırdır.

1-) Destek Vektör Makineleri (SVM), düzlem üzerindeki noktaların bir doğru veya hiper düzlem ile ayrıştırılması ve sınıflandırılmasıdır.

2-) Küçük veya orta büyüklükteki veri setleri için uygundur. Scale’e duyarlıdır. Scale edilmesi gerekir.

3-) Hard Margin ve Soft Margin arasındaki dengeyi C ile kontrol edebiliriz. C büyüdükçe Margin daralır.

4-) Model overfit olursa C’nin azlatılması gerekir.

5-) 2 boyutta açıklanamayan değişimleri boyut arttırarak çözüyormuş gibi yapılan hilelere Kernel Trick denir.

6-) 2 boyutta açıklayamadığımız veri setimizi daha fazla boyutta açıklamak için kullanılan Kernel Trick metoduna Polynomial Kernel denir.

7-) Model overfit olursa derecesi düşürülür, underfit olursa derece yükseltilir. Coef0 hiperparametresi ile yüksek dereceli denklemlerden ne kadar etkileneceğini ayarlayabilirsiniz.

8-) Her bir noktanın belirli bir noktaya ne kadar benzediğini normal dağılım ile hesaplayan, ona göre sınıflandıran Kernel Trick metoduna RBF Kernel denir.

9-) Dağılım genişliğini kontrol ettiğimiz gamma değeri ne kadar küçükse dağılım o kadar geniş olur. Model overfit olmuşsa gamma değerini düşürmemiz, model underfit olmuşsa gamma değerini yükseltmemiz gerekir.

11.2.1 Model

set.seed(8645)
svm_fit <- svm(formula = Sales ~., data = train, scale = FALSE, type = "C-classification",
    kernel = "linear")

11.2.2 Tahmin

summary(svm_fit)
## 
## Call:
## svm(formula = Sales ~ ., data = train, type = "C-classification", 
##     kernel = "linear", scale = FALSE)
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  linear 
##        cost:  1 
## 
## Number of Support Vectors:  90
## 
##  ( 45 45 )
## 
## 
## Number of Classes:  2 
## 
## Levels: 
##  High Low

Modeli özetlediğimizde kullanılan destek vektör sayısı ve bağımlı değişkeni görebiliyoruz.

11.2.3 Model Geliştirme

Train seti üzerinde kurduğumuz modelin, test seti üzerindeki tahminlerini görüyoruz.

Yapılan tahminlerin doğruluk oranı %89,9 olarak hesaplanmıştır.

11.3 CART ( Karar Ağaçları / Decision Tree )

Karar ağacı, risklerin, kazançların ve hedeflerin anlaşılmasına yardımcı olan bir teknik türüdür. Aynı zamanda birçok önemli yatırım sahalarında uygulanabilen, birbiriyle bağlantılı şans olaylarıyla ilgili olarak çıkan çeşitli karar noktalarını incelemek için kullanılan bir karar destek aracıdır. Yalnızca koşullu kontrol ifadeleri içeren bir algoritmayı görüntülemenin bir yoludur.

Karar ağacı, bir hedefe ulaşma olasılığı en yüksek olan stratejiyi belirlemeye yardımcı olmak için kullanılan bir yöntemdir. Özellikle karar analizinde olmak üzere karmaşık sorunların araştırmasında yaygın olarak kullanılmaktadır.

Karar ağacının avantajları:

*Anlaması ve yorumlaması basit. İnsanlar kısa bir açıklamadan sonra karar ağacı modellerini anlayabilecektir.

*Bir durumu (alternatifleri, olasılıkları ve maliyetleri) ve sonuç tercihlerini tanımlayan uzmanlara dayalı olarak önemli ön görüler oluşturulabilmektedir.

*Farklı senaryolar için en kötü, en iyi ve beklenen değerlerin belirlenmesine yardımcı olmaktadır.

*Diğer karar teknikleriyle birleştirilebilmektedir.

Karar ağacının dezavantajları:

*Kararsızdırlar, yani verilerdeki küçük bir değişikliğin, en iyi durumdaki karar ağacının yapısında büyük bir değişikliğe yol açabileceği anlamına gelmektedir.

*Genellikle hatalıdırlar. Diğer birçok tahmin algoritmaları benzer verilerle daha iyi performans gösterir. Bu, tek bir karar ağacını rastgele orman ile değiştirerek düzeltilebilir, ancak rastgele ormanın tek bir karar ağacı kadar yorumlanması kolay değildir.

*Farklı sayıda seviyeye sahip kategorik değişkenler içeren veriler için, karar ağaçlarındaki bilgi kazanımı, daha fazla seviyeye sahip öznitelikler lehine önyargılıdır.

*Hesaplamalar çok karmaşık hale gelebilir, özellikle de birçok değer belirsizse veya birçok sonuç ile bağlantılıysa.

11.3.1 Model

set.seed(65396)
seat_tree <- tree(Sales~., data = train)
summary(seat_tree)$used
## [1] Price       Advertising CompPrice   Education   Income      Age        
## 11 Levels: <leaf> CompPrice Income Advertising Population Price ... US
seat_rpart <- rpart(Sales ~ ., data = train, method = "class")


plotcp(seat_rpart)

min_cp <- seat_rpart$cptable[which.min(seat_rpart$cptable[,"xerror"]), "CP"]

seat_rpart_prune <- prune(seat_rpart, cp = min_cp)

prp(seat_rpart_prune, type = 1)

rpart.plot(seat_rpart_prune)

plot(seat_tree)
text(seat_tree, pretty = 0)

11.3.2 Model Tahmini

tb <- table(predict(seat_tree, train_x, type = "class"), train_y)

confusionMatrix(tb, positive = "High")
## Confusion Matrix and Statistics
## 
##       train_y
##        High Low
##   High  104  16
##   Low    28 173
##                                           
##                Accuracy : 0.8629          
##                  95% CI : (0.8204, 0.8986)
##     No Information Rate : 0.5888          
##     P-Value [Acc > NIR] : < 2e-16         
##                                           
##                   Kappa : 0.713           
##                                           
##  Mcnemar's Test P-Value : 0.09725         
##                                           
##             Sensitivity : 0.7879          
##             Specificity : 0.9153          
##          Pos Pred Value : 0.8667          
##          Neg Pred Value : 0.8607          
##              Prevalence : 0.4112          
##          Detection Rate : 0.3240          
##    Detection Prevalence : 0.3738          
##       Balanced Accuracy : 0.8516          
##                                           
##        'Positive' Class : High            
## 

11.3.3 Model Geliştirme

CV ile budama yaparak model geliştirme işlemleri:

Overfit durumlarını çözmek için karar ağaçlarında budama yapmak sık sık gerekebilir. Karar ağacının isabetli sınıflama oranına yeterince katkı yapmayan dallarda yer alan tahmin edici değişkenlerin modelden çıkarılması işlemidir. Budama iki türlü yapılabilir. Daha herhangi bir ayrım yapmadan tahmin edici değişkenleri teker teker ele alarak modelin tahmin gücü açısından hangisinin daha iyi olduğu irdelenerek adım adım dallanmalar ilerletilebilir. Buna Preprunning denir. Diğer bir yol ise tamamlanmış bir karar ağacının modele katkı yapmayan dallarını tespit ederek modelden çıkarma işlemdir. Buna da Postprunning denir.

seat_tree <- tree(Sales ~ . , data = train)

set.seed(12312153)
seat_tree_cv <- cv.tree(seat_tree, FUN = prune.misclass, K = 10)
min_tree <- which.min(seat_tree_cv$dev)

Görsel İncelenmesi

par(mfrow = c(1,2))
plot(seat_tree_cv)
plot(seat_tree_cv$size, 
     seat_tree_cv$dev / nrow(train), 
     type = "b",
     xlab = "Agac Boyutu/Dugum Sayisi", ylab = "CV Yanlis Siniflandirma Orani")

Bu Sonuçlara Göre Ağacın Budanması

seat_tree_prune <- prune.tree(seat_tree, best = 5)
summary(seat_tree_prune)
## 
## Classification tree:
## snip.tree(tree = seat_tree, nodes = c(15L, 2L, 12L, 13L, 14L))
## Variables actually used in tree construction:
## [1] "Price"       "Advertising" "CompPrice"  
## Number of terminal nodes:  5 
## Residual mean deviance:  1.039 = 328.3 / 316 
## Misclassification error rate: 0.2586 = 83 / 321
plot(seat_tree_prune)
text(seat_tree_prune, pretty = 0)

Sonucların Karşılaştırılması

## Warning in pred1.tree(object, tree.matrix(newdata)): Zorlamadan dolayý ortaya
## çýkan NAs

Doğru Atmama Oranı %72,2 olarak hesaplanmıştır.

11.4 RF (Rastgele Orman / Random Forest)

RF, karar ağaçlarına dayanır. Makine öğreniminde karar ağaçları, tahmin modelleri oluşturan denetimli öğrenme tekniğidir. Bunlara karar ağaçları (decision trees) adı verilmektedir. Bu yöntemin özellikle mühendislik bilimlerinde başta sağlık sektörü olmak üzere pek çok sektörde yaygın bir şekilde kullanıldığı görülmektedir.

Rastgele orman algoritmaları hem sınıflandırma (classification) hem de regresyon (regression) problemlerinin çözümünde kullanılan makine öğrenmenin denetimli öğrenme (supervised) kısmında yer alan tahmin oranı yüksek algoritmalardır. Burada aslında sınıflandırma ve regresyondan kasıt tahmin edilecek bağımlı veya hedef değişkenin veri tipi ifade edilmektedir. Sınıflandırma ve regresyon için kullanılan veri tipleri Şekil 2’de sunulmuştur. Cevap değişkeni ya da bağımlı değişken kategorik ise rastgele orman algoritmasında sınıflandırma, bağımlı değişken nicel ise rastgele orman algoritmasında regresyon problemini çözmüş oluyoruz. RF analizlerde uç değerler (outliers)’e duyarlı değildir.

Rastgele Orman algoritmasının avantajları.

1- Sınıflandırma problemlerindeki uygulamalar için Rastgele Orman algoritması Aşırı uyum problemini önlemektedir.

2- Rastgele Orman algoritmasının hem sınıflandırma hem de regresyon problemlerinde kullanılabilir.

3- Rastgele Orman algoritması, eğitim veri setindeki mevcut özellikler arasından en önemli özelliği tanımlamak için kullanılabilir.

11.4.1 Model

set.seed(456)
rf_fit <- randomForest(train_x, train_y, importance = TRUE)
rf_fit
## 
## Call:
##  randomForest(x = train_x, y = train_y, importance = TRUE) 
##                Type of random forest: classification
##                      Number of trees: 500
## No. of variables tried at each split: 3
## 
##         OOB estimate of  error rate: 18.69%
## Confusion matrix:
##      High Low class.error
## High   95  37   0.2803030
## Low    23 166   0.1216931

Kurulan rastgele orman modelinde konfisyon matrisi ve bu matrisin hatalı atama oranları gözükmektedir.

varImpPlot(rf_fit, main = "Carseats Verisi Sales Değerleri İçin Random Forest Modeli")

Tekrardan değişkenlerin önemlilik derecelerine bakıyoruz. ShelveLoc(Araba Koltukları Raf Kalitesini) değişkeni yeniden en önemli değişken olarak gözüksede gini grafiğinde Price(Kalite) değişkeni en önemlisi olarak gözüküyor.

11.4.2 Tahmin

confusionMatrix(predict(rf_fit, test_x), test_y, positive = "High")
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction High Low
##       High   15   1
##       Low    17  46
##                                         
##                Accuracy : 0.7722        
##                  95% CI : (0.664, 0.859)
##     No Information Rate : 0.5949        
##     P-Value [Acc > NIR] : 0.0007001     
##                                         
##                   Kappa : 0.4863        
##                                         
##  Mcnemar's Test P-Value : 0.0004070     
##                                         
##             Sensitivity : 0.4688        
##             Specificity : 0.9787        
##          Pos Pred Value : 0.9375        
##          Neg Pred Value : 0.7302        
##              Prevalence : 0.4051        
##          Detection Rate : 0.1899        
##    Detection Prevalence : 0.2025        
##       Balanced Accuracy : 0.7237        
##                                         
##        'Positive' Class : High          
## 

Carseats veri seti ile kurduğumuz modelin test seti üzerindeki tahminlerini ve doğruluk değerlerini konfüzyon matrisinde görülmektedir. Çalışmadaki doğru atama yüzdesi %86,08 olarak hesaplanmıştır.

11.4.3 Model Geliştirme

#RANDOM SEARCH
control <- trainControl(method='repeatedcv', 
                        number = 10,
                        search = 'random')

#tunelenght ile 15 tane mtry degeri rastgele uretilecek 
set.seed(1)
rf_random <- train(Sales ~ .,
                   data = train,
                   method = 'rf',
                   metric = 'Accuracy',
                   tuneLength  = 15, 
                   trControl = control)

plot(rf_random)

#GRID SEARCH
control <- trainControl(method='cv', 
                        number=10, 
                        search='grid')
 
tunegrid <- expand.grid(mtry = (1:10)) 

rf_gridsearch <- train(Sales ~ ., 
                       data = train,
                       method = 'rf',
                       metric = 'Accuracy',
                       tuneGrid = tunegrid)

plot(rf_gridsearch)

confusionMatrix(predict(rf_gridsearch, test_x), test_y, positive = "High")
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction High Low
##       High   17   3
##       Low    15  44
##                                         
##                Accuracy : 0.7722        
##                  95% CI : (0.664, 0.859)
##     No Information Rate : 0.5949        
##     P-Value [Acc > NIR] : 0.0007001     
##                                         
##                   Kappa : 0.4972        
##                                         
##  Mcnemar's Test P-Value : 0.0095219     
##                                         
##             Sensitivity : 0.5312        
##             Specificity : 0.9362        
##          Pos Pred Value : 0.8500        
##          Neg Pred Value : 0.7458        
##              Prevalence : 0.4051        
##          Detection Rate : 0.2152        
##    Detection Prevalence : 0.2532        
##       Balanced Accuracy : 0.7337        
##                                         
##        'Positive' Class : High          
## 

Test verisi üzerinde denenen modelin doğru atama yüzdesi de %86,08 olarak hesaplanmıştır.

Atamaların %77,2 si doğru atanmıştır.

Carseats verisinde ki kategorilendirilmiş satış değişkeninin train verisi ile kurulan 4 sınıflandırma modelini test verisi üzerindeki başarı udumları;

Yöntem Yüzde Başarı
Lojistik Regresyon %48,1
Destek Vektör Matrisi %89,9
Karar Ağacı %72,2
Rastgele Orman %77,2

Başarı yüzdelerine bakılacak olursa sales değişkeni için en doğru sınıflandırma yöntemi %89,9 başarı yüzdesi ile Destek Vektör Matrisinin(SVM) kullanılması uygundur.

12 Makine Öğrenmesi Denetimsiz Öğrenme

df = world[-c(1,2)]
df<-scale(df)
head(df)
##      Ladder.score Standard.error.of.ladder.score upperwhisker lowerwhisker
## [1,]     2.150210                    -1.21591906     2.139742     2.157653
## [2,]     1.943491                    -1.07956285     1.933924     1.949411
## [3,]     1.897864                    -1.03411079     1.892191     1.901917
## [4,]     1.882034                     0.01128675     1.917800     1.845290
## [5,]     1.798230                    -1.44317939     1.773633     1.819716
## [6,]     1.731186                    -1.07956285     1.720518     1.740255
##      Logged.GDP.per.capita Social.support Healthy.life.expectancy
## [1,]              1.158977       1.212083                1.036255
## [2,]              1.295348       1.212083                1.139774
## [3,]              1.454160       1.107634                1.391177
## [4,]              1.247877       1.464500                1.184139
## [5,]              1.294485       1.107634                1.095409
## [6,]              1.398921       1.212083                1.228505
##      Freedom.to.make.life.choices Generosity Perceptions.of.corruption
## [1,]                     1.388866 -0.5500304                 -3.021039
## [2,]                     1.362395  0.2995833                 -3.060096
## [3,]                     1.124157  0.2663952                 -2.429608
## [4,]                     1.441808  1.1624722                 -0.303804
## [5,]                     1.071215  1.2620363                 -2.172949
## [6,]                     1.485926  0.7177525                 -2.552358
##       Dystopia
## [1,] 1.5301376
## [2,] 0.8140520
## [3,] 0.7601131
## [4,] 0.9981883
## [5,] 0.6838546
## [6,] 0.2783827

World verisindeki scaler değişkenler seçilerek. Bu değişkenler standardize edilmiştir.

12.1 K-Means Kümeleme

K-Means Kümeleme Algoritması Data Mining Dünyasında En Çok Kullanılan Algoritmaların başında yer almaktadır. K-Means algoritması bir unsupervised learning (denetimsiz öğrenme) ve kümeleme algoritmasıdır. K-Means’ teki K değeri küme sayısını belirler ve bu değeri parametre olarak alması gerekir. K adet özgün küme oluşturduğu ve her kümenin merkezi, kümedeki değerlerin ortalaması olduğu için K-Ortalamalar denmektedir. Algoritma istatistiksel olarak benzer nitelikteki kayıtları aynı gruba sokar. Bir elemanın yalnızca bir kümeye ait olmasına izin verilir. Küme merkezi kümeyi temsil eden değerdir. Bu algoritmada ‘K’ parametresi elimizdeki verinin kaç tane kümeye ayrılacağını belirtiyor. Bu parametrenin seçimi için birkaç analiz yöntemi olsa da en iyisi algoritmayı farklı k değerlerinde yürütüp işimize en çok yarayanı almaktır. Çünkü farklı sayıda gruplar, farklı özellikleri yüz üstüne çıkarabilir.

set.seed(1135)
k2 <- kmeans(df, centers = 2, nstart = 25)
str(k2)
## List of 9
##  $ cluster     : int [1:149] 2 2 2 2 2 2 2 2 2 2 ...
##  $ centers     : num [1:2, 1:11] -0.932 0.682 0.543 -0.398 -0.927 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:2] "1" "2"
##   .. ..$ : chr [1:11] "Ladder.score" "Standard.error.of.ladder.score" "upperwhisker" "lowerwhisker" ...
##  $ totss       : num 1628
##  $ withinss    : num [1:2] 492 505
##  $ tot.withinss: num 997
##  $ betweenss   : num 631
##  $ size        : int [1:2] 63 86
##  $ iter        : int 1
##  $ ifault      : int 0
##  - attr(*, "class")= chr "kmeans"

İlk olarak kendi belirdiğimiz bir küme sayına göre kümeleme yapmayı denedik.

12.1.1 Kümelerin Görselleştirilmesi

Kümelerin Görselleştirilmesi

fviz_cluster(k2, data = df)

Kümelere ait saçlım grafikleri Yukarıdaki gibidir.

Scatter Plot ile Gorsellestirme

df %>% as_tibble() %>%
  mutate(kumeler = k2$cluster) %>%
  ggplot(aes(Ladder.score, Social.support, color = factor(kumeler)))+ geom_point()

Social Support ve Ladder Score değişkenlerinin kümelere göre saçlım grafiği yukarıdaki gibidir.

12.1.2 Farkli k Değerlerine Göre Kümelemeler

set.seed(326)
k2 <- kmeans(df, centers = 2, nstart = 25)
k3 <- kmeans(df , centers = 3, nstart = 25)
k4 <- kmeans(df , centers = 4, nstart = 25)
k5 <- kmeans(df , centers = 5, nstart = 25)

p1 <- fviz_cluster(k2, geom = "point", data = df) + ggtitle("k=2")
p2 <- fviz_cluster(k3, geom = "point", data = df) + ggtitle("k=3")
p3 <- fviz_cluster(k4, geom = "point", data = df) + ggtitle("k=4")
p4 <- fviz_cluster(k5, geom = "point", data = df) + ggtitle("k=5")
library(gridExtra)

grid.arrange(p1, p2, p3, p4, nrow = 2)

k=2,3,4 ve 5 değerleri için kümelerin nasıl ayrıldığını görüyoruz. Optimum k değerlerini bulmak için kullanılan bazı yöntemler vardır. Bu yöntemlere bakacak olursak.

12.1.3 Optimum Küme Sayısının Belirlenmesi

Optimum küme sayısını belirlemek için üç faklı yöntem kullanılır. Bu yöntemler;

12.1.3.1 Elbow Yontemi ile Optimum Küme Sayısı

set.seed(123)
fviz_nbclust(df, kmeans, method = "wss")

12.1.3.2 Average Silhouette ile Optimum Küme Sayısı

fviz_nbclust(df, kmeans, method = "silhouette")

12.1.3.3 Gap Statistic ile Optimum Küme Sayısı

GAP İstatistiğinin Hesaplanması

set.seed(123)
gap_stat <- clusGap(df, FUN = kmeans, nstart = 25, K.max = 10, B = 50)
fviz_gap_stat(gap_stat)

12.1.4 Son K-Means’in Çalıştırılması

set.seed(123)
final <- kmeans(df, 2, nstart = 25)
print(final)
## K-means clustering with 2 clusters of sizes 86, 63
## 
## Cluster means:
##   Ladder.score Standard.error.of.ladder.score upperwhisker lowerwhisker
## 1    0.6824449                     -0.3977818    0.6788335    0.6850151
## 2   -0.9315914                      0.5430038   -0.9266615   -0.9351000
##   Logged.GDP.per.capita Social.support Healthy.life.expectancy
## 1             0.6237081      0.6491535               0.6552742
## 2            -0.8514111     -0.8861461              -0.8945012
##   Freedom.to.make.life.choices Generosity Perceptions.of.corruption   Dystopia
## 1                    0.4672052 -0.1303947                -0.2042157  0.1821405
## 2                   -0.6377721  0.1779992                 0.2787706 -0.2486362
## 
## Clustering vector:
##   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
##  [75] 1 1 1 1 1 2 1 2 2 1 2 1 2 1 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [112] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [149] 2
## 
## Within cluster sum of squares by cluster:
## [1] 504.5343 492.1258
##  (between_SS / total_SS =  38.8 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"

Örneklemimizi ikiye ayırmış olduk. İlk küme 86, ikinci küme 36 gözlem içeriyor. Kümelerin değişken ortalamalarını, hangi gözlemin hangi kümede olduğunu ve kümelerin kareler toplamını görüyoruz.

Kumelerin Gorsellestirilmesi

fviz_cluster(final, data = df)

Scatter Plot ile Gorsellestirme

df %>% as_tibble() %>%
  mutate(kumeler = final$cluster) %>%
  ggplot(aes(Ladder.score, Social.support, color = factor(kumeler)))+ geom_point()

12.2 Hiyerarşik Kümeleme Analizi

K-Means kümeleme yönteminin bir dezavantajı vardır. Küme sayısını önceden belirlemeniz gerekmektedir. Bu dezavantajı ortadan kaldırmak için hiyerarşik kümeleme geliştirilmiştir. Hiyerarşik kümeleme algoritmasının temel mantığı, benzer özniteliklerin bir araya gelmesine veya tam tersine bölünmesine dayanmaktadır.

Hiyerarşik kümeleme analizi de, veriler arasındaki benzerlik ve uzaklık hesaplamaları her adımda güncellenmektedir. Hesaplanan uzaklık/ benzerlik değerlerinden oluşan matris, seçilen bağlantı yönteminin kullanılmasına temel teşkil etmektedir.

Sıklıkla kullanılan bağlantı yöntemleri şöyledir:

  • Bağlantı Temelli Teknikler;

  • Tek Bağlantı (Single Linkage) / En Yakın Komşu Yöntemi (Nearest Neighbor)

  • Tam Bağlantı (Complete Linkage) / En Uzak Komşu Yöntemi (Furthest Neighbor)

  • Ortalama Bağlantı (Average Linkage)

  • Varyans Temelli Teknikler;

  • Ward Yöntemi (Ward’s Linkage)

  • Merkezileştirme Temelli Teknikler;

  • Medyan Bağlantı (Median Linkage)

  • Merkezi Yöntem (Centroid Linkage)

12.2.1 Birleştirici Methodların Karşılaştırılması

m <- c("average", "single","complete", "ward")
names(m) <- c("average", "single","complete", "ward")


ac <- function(x) {

  agnes(df, method = x)$ac 
  
}

sapply(m, ac)
##   average    single  complete      ward 
## 0.8025856 0.7028662 0.8705219 0.9548209

12.2.2 Birleştirici Hiyerarşik Kümeleme

d <- dist(df, method = "euclidean")
hc1 <- hclust(d, method = "ward")
hc1
## 
## Call:
## hclust(d = d, method = "ward")
## 
## Cluster method   : ward.D 
## Distance         : euclidean 
## Number of objects: 149
plot(hc1)

fviz_dend(hc1, cex = 0.5, k = 2, palette = "jco") 

plot(hc1, cex = 0.6)
rect.hclust(hc1, k = 2, border = 2:5)

Yapılan iki dentogramda da bütün gözlemlerin hangi kümede olduğunu gösterilmededir.

12.3 Temel Bileşen Analizi (PCA)

Temel Bileşenler Analizi; birbirleri ile ilişkili olan çok sayıda değişkenden meydana gelen birçok değişkenli sistemi, bu değişkenlerin doğrusal fonksiyonları şeklinde daha az sayıda ve birbirleri ile ilişkisiz ve aynı zamanda önceki sisteme ait toplam değişimi mümkün olduğunca büyük oranda açıklayabilen yeni değişkenlerden meydana gelen sisteme dönüştüren çok değişkenli istatistiksel analiz tekniğidir. Analiz sonucunda oluşan her bir yeni değişkene temel bileşen denir.

Temel Bileşenler Analizi’nde p sayıda başlangıç değişkenine karşılık elde edilen p sayıda temel bileşenin her biri, orijinal değişkenlerin doğrusal bir bileşimidir. Dolayısıyla, her bir temel bileşen bünyesinde tüm değişkenlerden belirli oranda bilgiyi barındırır. Bu özelliği sayesinde Temel Bileşenler Analizi, p boyutlu veri kümesi yerine, ilk m önemli temel bileşenin kullanılması yoluyla boyut indirgemesi sağlayabilmektedir. İlk m temel bileşen toplam varyansın büyük kısmını açıklıyorsa, geriye kalan p-m temel bileşen ihmal edilebilir. Klasik değişken seçimi teknikleri ile karşılaştırıldığında bu yöntem ile bilgi kaybı oldukça aza indirilecektir.

12.3.1 Model

df<-world[-c(1,2)]

set.seed(6387)
fit.pca <- prcomp( ~., data=df, scale=TRUE) # korelasyon matrisi icin scale=TRUE yaz 
fit.pca$rotation
##                                        PC1         PC2         PC3         PC4
## Ladder.score                   -0.39021875 -0.19532020 -0.07453088  0.01503669
## Standard.error.of.ladder.score  0.24998855 -0.39416599 -0.03589892  0.07493277
## upperwhisker                   -0.38724371 -0.21512392 -0.07753216  0.01833373
## lowerwhisker                   -0.39258980 -0.17608746 -0.07163679  0.01187938
## Logged.GDP.per.capita          -0.35778123  0.27000945 -0.05654249  0.03891598
## Social.support                 -0.33651111  0.18249064 -0.06520215  0.35375340
## Healthy.life.expectancy        -0.34957409  0.23292602 -0.01510028  0.01139125
## Freedom.to.make.life.choices   -0.26213341 -0.14107405  0.34496709  0.15674661
## Generosity                      0.02912529 -0.31442249  0.67275915  0.46951124
## Perceptions.of.corruption       0.19158198  0.05211331 -0.50265415  0.77702056
## Dystopia                       -0.10693722 -0.66877234 -0.38738689 -0.13462836
##                                         PC5         PC6          PC7
## Ladder.score                   -0.047048956  0.05296962 -0.002208309
## Standard.error.of.ladder.score  0.531509630  0.69450696 -0.026061317
## upperwhisker                   -0.026095695  0.08222038 -0.003324543
## lowerwhisker                   -0.067177214  0.02463453 -0.001130644
## Logged.GDP.per.capita          -0.053948700  0.22346344 -0.154460235
## Social.support                  0.095683534  0.17021743  0.732582007
## Healthy.life.expectancy         0.016634062  0.28801738 -0.597147773
## Freedom.to.make.life.choices    0.680601826 -0.51598005 -0.131007786
## Generosity                     -0.441518985  0.12840445 -0.076713888
## Perceptions.of.corruption       0.005220061 -0.16885613 -0.243036585
## Dystopia                       -0.198903354 -0.18543964 -0.008302663
##                                        PC8         PC9        PC10         PC11
## Ladder.score                   -0.05347632 -0.25797949 -0.26933449  0.810444280
## Standard.error.of.ladder.score -0.08064197  0.03493428 -0.04451489 -0.002922514
## upperwhisker                   -0.05782611 -0.72335709  0.35791291 -0.367795370
## lowerwhisker                   -0.04934578  0.13606481 -0.75874509 -0.455883576
## Logged.GDP.per.capita          -0.74326263  0.32460671  0.24463079  0.004309197
## Social.support                  0.28587570  0.20751483  0.15641043  0.002720004
## Healthy.life.expectancy         0.58106744  0.17076727  0.12870037  0.002205057
## Freedom.to.make.life.choices   -0.04461996  0.11072704  0.08331575  0.001471209
## Generosity                     -0.01430266  0.07864526  0.05951538  0.001040431
## Perceptions.of.corruption      -0.05785257 -0.09175720 -0.06916863 -0.001173410
## Dystopia                        0.08667317  0.43128731  0.32487147  0.005727595

Değişkenlerin faktör yüklerin yukarıdaki gibidir.

as_tibble(fit.pca$x)

Gözlemlerin faktör yükleri yukarıdaki gibidir.

12.3.2 Faktör Yüklerinin Belirlenmesi

Varyans ile

summary(fit.pca)
## Importance of components:
##                           PC1    PC2    PC3     PC4     PC5     PC6     PC7
## Standard deviation     2.4728 1.2426 1.1203 0.84048 0.74999 0.66373 0.49992
## Proportion of Variance 0.5559 0.1404 0.1141 0.06422 0.05114 0.04005 0.02272
## Cumulative Proportion  0.5559 0.6963 0.8104 0.87458 0.92571 0.96576 0.98848
##                            PC8       PC9      PC10     PC11
## Standard deviation     0.35597 0.0008631 0.0007974 0.000256
## Proportion of Variance 0.01152 0.0000000 0.0000000 0.000000
## Cumulative Proportion  1.00000 1.0000000 1.0000000 1.000000

Kümülatif varyans açıklama oranı %66’lık kısmı geçtiği için 2. değer olan %71,45 alınır.

Grafik ile

scree <- fviz_eig(fit.pca, main = "Faktör Yükleri Grafiği")
scree

Faktör yükleri grafiğinde de gözüktüğü gibi yüklerdeki en büyük azalış 2 faktör varken oluşmuştur.

fit.pca$rotation[,1:2]
##                                        PC1         PC2
## Ladder.score                   -0.39021875 -0.19532020
## Standard.error.of.ladder.score  0.24998855 -0.39416599
## upperwhisker                   -0.38724371 -0.21512392
## lowerwhisker                   -0.39258980 -0.17608746
## Logged.GDP.per.capita          -0.35778123  0.27000945
## Social.support                 -0.33651111  0.18249064
## Healthy.life.expectancy        -0.34957409  0.23292602
## Freedom.to.make.life.choices   -0.26213341 -0.14107405
## Generosity                      0.02912529 -0.31442249
## Perceptions.of.corruption       0.19158198  0.05211331
## Dystopia                       -0.10693722 -0.66877234

Değişkenlerin faktörlerde ki yükleri yukarıdaki gibidir.

faktor_yukleri<-t(fit.pca$rotation)*fit.pca$sdev # koklambda ile carpılmıs $H_A$li bu da bizi faktore goturuyor
faktor_yukleri
##       Ladder.score Standard.error.of.ladder.score  upperwhisker  lowerwhisker
## PC1  -0.9649461387                   6.181802e-01 -9.575894e-01 -0.9708093678
## PC2  -0.2426988580                  -4.897785e-01 -2.673063e-01 -0.2188008469
## PC3  -0.0834960612                  -4.021713e-02 -8.685836e-02 -0.0802538531
## PC4   0.0126380891                   6.297975e-02  1.540919e-02  0.0099844216
## PC5  -0.0352863404                   3.986280e-01 -1.957156e-02 -0.0503823727
## PC6   0.0351574922                   4.609647e-01  5.457208e-02  0.0163506595
## PC7  -0.0011039691                  -1.302847e-02 -1.661992e-03 -0.0005652271
## PC8  -0.0190359549                  -2.870611e-02 -2.058435e-02 -0.0175656073
## PC9  -0.0002226662                   3.015234e-05 -6.243411e-04  0.0001174397
## PC10 -0.0002147753                  -3.549748e-05  2.854103e-04 -0.0006050457
## PC11  0.0002074558                  -7.480988e-07 -9.414747e-05 -0.0001166961
##      Logged.GDP.per.capita Social.support Healthy.life.expectancy
## PC1          -8.847336e-01  -8.321361e-01           -8.644387e-01
## PC2           3.355054e-01   2.267572e-01            2.894267e-01
## PC3          -6.334388e-02  -7.304520e-02           -1.691666e-02
## PC4           3.270823e-02   2.973238e-01            9.574155e-03
## PC5          -4.046109e-02   7.176188e-02            1.247541e-02
## PC6           1.483192e-01   1.129783e-01            1.911656e-01
## PC7          -7.721713e-02   3.662294e-01           -2.985237e-01
## PC8          -2.645791e-01   1.017631e-01            2.068425e-01
## PC9           2.801732e-04   1.791094e-04            1.473920e-04
## PC10          1.950758e-04   1.247263e-04            1.026295e-04
## PC11          1.103059e-06   6.962608e-07            5.644458e-07
##      Freedom.to.make.life.choices    Generosity Perceptions.of.corruption
## PC1                 -6.482124e-01  7.202201e-02              4.737504e-01
## PC2                 -1.752943e-01 -3.906917e-01              6.475439e-02
## PC3                  3.864626e-01  7.536841e-01             -5.631175e-01
## PC4                  1.317429e-01  3.946164e-01              6.530729e-01
## PC5                  5.104459e-01 -3.311357e-01              3.915004e-03
## PC6                 -3.424711e-01  8.522580e-02             -1.120748e-01
## PC7                 -6.549288e-02 -3.835050e-02             -1.214979e-01
## PC8                 -1.588336e-02 -5.091315e-03             -2.059377e-02
## PC9                  9.557028e-05  6.787998e-05             -7.919711e-05
## PC10                 6.643844e-05  4.745932e-05             -5.515711e-05
## PC11                 3.765968e-07  2.663273e-07             -3.003670e-07
##           Dystopia
## PC1  -2.644380e-01
## PC2  -8.309959e-01
## PC3  -4.339850e-01
## PC4  -1.131529e-01
## PC5  -1.491759e-01
## PC6  -1.230817e-01
## PC7  -4.150634e-03
## PC8   3.085303e-02
## PC9   3.722510e-04
## PC10  2.590621e-04
## PC11  1.466138e-06
#skorları veriye kaydetme
df$comp1=fit.pca$x[,1] 
df$comp2=fit.pca$x[,2] 

#indeks olusturma ### 
df$index=df$comp1+df$comp2
indeks<-sort(df$index, decreasing = F)
head(indeks)# Gözlem sayısı çok olduğunda kullanılablir.
##         1         2         4         3         5         7 
## -6.335166 -5.701190 -5.542783 -5.355042 -5.212052 -5.012875

12.3.3 Değişkenlerin Faktörler Üzerindeki Dağılım Grafiği

fviz_pca_var(fit.pca,col.var="steelblue",
             repel = TRUE )

13 Kaynakça

-https://www.veribilimiokulu.com/r-ile-basit-dogrusal-regresyonbaglanim/

-https://www.datasciencearth.com/r-uygulamalari-bolum-2-coklu-dogrusal-regresyon-analizi/

-https://www.datasciencearth.com/r-uygulamalari-bolum-1-basit-dogrusal-regresyon-analizi/

-https://tevfikbulut.com/2020/07/15/rda-coklu-dogrusal-regresyon-uzerine-bir-vaka-calismasi-a-case-study-on-multiple-linear-regression-mlr-in-r/

-https://bookdown.org/burak2358/SARP-TR/coklu-dogrusal-regresyon-ksa-tantm.html

-https://www.veribilimiokulu.com/r-ile-makine-ogrenmesi-uygulamalari-dogrusal-regresyon/

-https://www.veribilimiokulu.com/r-ile-coklu-dogrusal-regresyonbaglanim-cozumlemesi/

-https://towardsdatascience.com/random-forest-in-r-f66adf80ec9

-https://towardsdatascience.com/understanding-confusion-matrix-a9ad42dcfd62

-https://ggplot2.tidyverse.org

-https://www.r-graph-gallery.com/ggplot2-package.html

-https://plotly.com

-https://tr.wikipedia.org/wiki/Otokorelasyon

-https://esatis.tubitak.gov.tr/ekitap.htm

-https://veribilimcisi.com/2017/07/18/lojistik-regresyon/

-https://medium.com/data-science-tr/makine-öğrenmesi-dersleri-4-lojistik-regresyon-304fefab0a49

-https://www.veribilimiokulu.com/siniflandirma-notlari/2/

-https://www.veribilimiokulu.com/kategorik-veri-analizi-ve-shiny-web-uygulamalari-4/

-https://www.veribilimiokulu.com/kategorik-veri-analizi-ve-shiny-web-uygulamalari-6/

-https://veribilimcisi.com/2017/07/19/destek-vektor-makineleri-support-vector-machine/

-https://medium.com/@k.ulgen90/makine-öğrenimi-bölüm-4-destek-vektör-makineleri-2f8010824054

-https://medium.com/deep-learning-turkiye/nedir-bu-destek-vektör-makineleri-makine-öğrenmesi-serisi-2-94e576e4223e

-https://en.wikipedia.org/wiki/Support-vector_machine

-https://www.datasciencearth.com/algorithmdestek-vektor-makinelerisupport-vector-machinesr-kod-ornekli/

-https://jakevdp.github.io/PythonDataScienceHandbook/05.07-support-vector-machines.html

-https://medium.com/deep-learning-turkiye/karar-ağaçları-makine-öğrenmesi-serisi-3-a03f3ff00ba5

-https://erdincuzun.com/makine_ogrenmesi/decision-tree-karar-agaci-id3-algoritmasi-classification-siniflama/

-https://tr.wikipedia.org/wiki/Karar_ağacı

-https://www.matematiksel.org/karar-agaci-algoritmalari-nelerdir/

-https://www.section.io/engineering-education/introduction-to-random-forest-in-machine-learning/#:~:text=A%20random%20forest%20is%20a%20machine%20learning%20technique%20that%27s%20used,consists%20of%20many%20decision%20trees.

-https://devhunteryz.wordpress.com/2018/09/20/rastgele-ormanrandom-forest-algoritmasi/

-https://medium.com/cem-berke-cebis-blog/rastgele-orman-algoritması-1600ca4f4784

-https://dzone.com/articles/10-interesting-use-cases-for-the-k-means-algorithm

-https://medium.com/deep-learning-turkiye/k-means-algoritması-b460620dd02a

-https://www.veribilimiokulu.com/kumeleme-notlari-3-k-ortalamalar-kume-sayisini-belirleme/

-https://www.veribilimiokulu.com/hiyerarsik-kumeleme/

-http://serracelik.com/r-ile-hiyerarsik-kumeleme/

-Spss Uygulamalı Temel İstatistik Yöntemler 8. Baskı (Prof. Dr. Özkan Ünver - Prof. Dr. Hamza Gamgam - Doç. Dr. Bülent Altunkaynak/Ocak 2016)

-Doğrusal Regresyon Analizine Giriş 5. başkıdan çeviri (Douglas C. Montgoemery - Elizabeth A. Peck - G. Geoffrey Vining/2013)

-https://www.kaggle.com/huhao05133/carseats

-https://worldhappiness.report/ed/2021/#appendices-and-data