İ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)
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.
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.
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
İ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
introduce(Carseats)
Carseats veri setinde eksik gözlem bulunmamaktadır.
introduce(world)
World veri setinde eksik gözlem bulunmamaktadır.
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)
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")
İ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)
İ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)
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()
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
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.
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 }\]
Bir dağılıma ilişkin ölçme sonuçlarının nasıl dağıldığı hakkında bilgi verir.
\(α_3=0\) ise veri simteriktir
\(α_3>0\) ise veri sağa çarpık
\(α_3<0\) ise veri sola çarpık
Basıklık bir sınıftaki değişim miktarının göstergesidir.
\[α_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
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.
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.
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.
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.
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.
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.
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)
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+ε\]
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 \]
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.
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.
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
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**
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.
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.
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")
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)
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.
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
“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.
set.seed(8645)
svm_fit <- svm(formula = Sales ~., data = train, scale = FALSE, type = "C-classification",
kernel = "linear")
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.
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.
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.
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)
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
##
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.
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.
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.
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.
#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.
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.
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.
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.
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.
Optimum küme sayısını belirlemek için üç faklı yöntem kullanılır. Bu yöntemler;
set.seed(123)
fviz_nbclust(df, kmeans, method = "wss")
fviz_nbclust(df, kmeans, method = "silhouette")
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)
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()
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)
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
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.
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.
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.
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
fviz_pca_var(fit.pca,col.var="steelblue",
repel = TRUE )
-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://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://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://en.wikipedia.org/wiki/Support-vector_machine
-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://tr.wikipedia.org/wiki/Karar_ağacı
-https://www.matematiksel.org/karar-agaci-algoritmalari-nelerdir/
-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)