##Rastgele Orman Algoritması:

Rastgele Orman, sınıflandırma ve regresyon problemleri için kullanılan güçlü bir makine öğrenimi algoritmasıdır. Bu algoritma, bir veri kümesinin çeşitli alt kümeleri üzerinde birçok karar ağacı oluşturur ve bu ağaçlardan elde edilen tahminleri bir araya getirerek daha güvenilir ve doğru bir tahmin yapar. Sınıflandırma problemlerinde sıklıkla kullanılır ve genellikle yüksek doğruluk sağlar.

Örneğin, bir e-ticaret platformu, kullanıcının bir ürünü satın alıp almayacağını tahmin etmek istiyorsa, Rastgele Orman algoritması kullanılabilir. Algoritma, kullanıcının önceki alışveriş geçmişi, tıklama davranışları ve demografik bilgiler gibi birçok özellik üzerinden bir model oluşturarak bu tahminleri yapabilir.

#K En Yakın Komşu (K-NN):

K-NN, basit ve etkili bir sınıflandırma ve regresyon algoritmasıdır. Bir veri noktasını çevresindeki k en yakın komşusuna dayanarak sınıflandırır veya regresyon tahmininde bulunur. K-NN algoritması, özellikle veri seti küçük olduğunda ve etiketleme maliyeti düşük olduğunda kullanışlıdır.

Örneğin, bir müşterinin alışveriş sepetine eklemek istediği ürünü tahmin etmek için K-NN kullanılabilir. Bu durumda, müşterinin benzer alışveriş geçmişine sahip diğer müşterilerin alışveriş sepetleri incelenir ve benzer ürünler önerilir.

knitr::include_graphics("2.jpeg")

#Doğrusal Regresyon:

Doğrusal regresyon, bağımlı bir değişkenin bir veya daha fazla bağımsız değişkenle doğrusal bir ilişkisini modellemek için kullanılan bir istatistiksel yöntemdir. Bu algoritma, veri setindeki değişkenler arasındaki ilişkiyi anlamak ve gelecekteki değerleri tahmin etmek için kullanılır.

Örneğin, bir şirketin reklam harcamalarının satışları nasıl etkilediğini anlamak için doğrusal regresyon kullanılabilir. Reklam harcamaları bağımsız değişken, satışlar ise bağımlı değişken olacaktır. Doğrusal regresyon modeli, reklam harcamalarının artışının satışlarda nasıl bir etki yarattığını analiz eder.

knitr::include_graphics("3.png")

#Yapay Sinir Ağı (YSA):

Yapay Sinir Ağı, insan beyninin sinir sistemini taklit eden bir makine öğrenimi modelidir. YSA’lar, katmanlar halinde düzenlenmiş nöronlardan oluşur ve bu nöronlar arasındaki bağlantılar ağırlıklarla belirlenir. YSA’lar, karmaşık görevleri yerine getirebilen güçlü ve esnek modellerdir.

Örneğin, bir görüntü tanıma uygulamasında YSA kullanılabilir. Bir YSA, binlerce görüntüdeki desenleri öğrenip, belirli nesneleri veya kişileri tanımak için kullanılabilir.

knitr::include_graphics("1.png")

#Gradyan Artırma:

Gradyan Artırma, bir hata fonksiyonunu minimize ederek bir modeli iyileştirmeye çalışan bir artırma algoritmasıdır. Gradyan artırma, ağaç tabanlı modellerden, doğrusal modellere kadar birçok farklı öğrenme algoritmasıyla birleştirilebilir.

Örneğin, bir e-ticaret şirketi, müşteri tercihlerini daha iyi anlamak ve kişiselleştirilmiş önerilerde bulunmak için Gradyan Artırma kullanabilir. Algoritma, müşteri davranışlarını ve tercihlerini anlamak için verileri analiz eder ve daha etkili öneriler yapmak için modelini sürekli olarak günceller.

Bu algoritmaların gerçek hayatta kullanıldığı pek çok uygulama bulunmaktadır. Her bir algoritma, farklı türde veri setleri ve problemler için avantajlı olabilir ve doğru bir model oluşturmak için birçok durumda birlikte kullanılırlar.

Veri setinin tanımı ve amacı

Veri setinin temel amacı, meme kanseri hücrelerinin iyi huylu (benign) veya kötü huylu (malignant) olup olmadığını sınıflandırmaktır. Bu amacı gerçekleştirmek için makine öğrenimi modelleri kullanılarak özelliklerin kombinasyonları değerlendirilir ve bir hücrenin iyi huylu veya kötü huylu olma olasılığı tahmin edilir.

library(caret)
## Warning: package 'caret' was built under R version 4.2.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.2.3
## Loading required package: lattice
library(pROC)
## Warning: package 'pROC' was built under R version 4.2.3
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
# Veri seti okuma ve ön işleme
wbcd <- read.csv("wisc_bc_data.csv", stringsAsFactors = FALSE)
wbcd <- wbcd[-1]

wbcd$diagnosis <- factor(wbcd$diagnosis, levels = c("B", "M"), labels = c("Benign", "Malignant"))

# Veriyi normalize etme
normalize <- function(x) { return ((x - min(x)) / (max(x) - min(x))) }
wbcd_n <- as.data.frame(lapply(wbcd[2:31], normalize))

# Eğitim ve test veri setlerini oluşturma
wbcd_train <- wbcd_n[1:469, ]
wbcd_test <- wbcd_n[470:569, ]
wbcd_train_labels <- wbcd[1:469, 1]
wbcd_test_labels <- wbcd[470:569, 1]

# K En Yakın Komşu (knn) modelini eğitme
set.seed(123) 
knn_model <- train(wbcd_train, wbcd_train_labels, method = "knn")

# Modelin test verisi üzerinde performansını değerlendirme
predictions <- predict(knn_model, newdata = wbcd_test)

print("Model: K En Yakın Komşu")
## [1] "Model: K En Yakın Komşu"
confusion_matrix <- confusionMatrix(predictions, wbcd_test_labels)
print(confusion_matrix)
## Confusion Matrix and Statistics
## 
##            Reference
## Prediction  Benign Malignant
##   Benign        75         0
##   Malignant      2        23
##                                           
##                Accuracy : 0.98            
##                  95% CI : (0.9296, 0.9976)
##     No Information Rate : 0.77            
##     P-Value [Acc > NIR] : 2.106e-09       
##                                           
##                   Kappa : 0.9452          
##                                           
##  Mcnemar's Test P-Value : 0.4795          
##                                           
##             Sensitivity : 0.974           
##             Specificity : 1.000           
##          Pos Pred Value : 1.000           
##          Neg Pred Value : 0.920           
##              Prevalence : 0.770           
##          Detection Rate : 0.750           
##    Detection Prevalence : 0.750           
##       Balanced Accuracy : 0.987           
##                                           
##        'Positive' Class : Benign          
## 
roc_curve <- roc(as.numeric(predictions), as.numeric(wbcd_test_labels == "Benign"))
## Setting levels: control = 1, case = 2
## Setting direction: controls > cases
plot(roc_curve, main = "ROC Eğrisi - K En Yakın Komşu")

Model Yorumları

Random Forest (rf):

  • Accuracy: 0.98
  • Hassaslık (Sensitivity): 0.974
  • Özgüllük (Specificity): 1.000
  • Pozitif Tahmin Değeri (Pos Pred Value): 1.000
  • Negatif Tahmin Değeri (Neg Pred Value): 0.920
  • Kappa: 0.9452
  • Denge İşareti (Balanced Accuracy): 0.987

Random Forest modeli oldukça yüksek doğruluk, hassaslık ve özgüllük elde ederek başarılı bir performans sergilemiştir.