Bu depo, Ankara Üniversitesi Yapay Zeka ve Veri Mühendisliği 2025-2026 Bahar Dönemi YZM304 Derin Öğrenme dersinin I. Proje Modülü kapsamında hazırlanmıştır.
Bu çalışmanın temel amacı, 13.03.2026 tarihinde laboratuvarda uygulaması yapılan 2 katmanlı (1 gizli katmanlı) sinir ağı modelinin geliştirilmesi, eğitilmesi, test edilmesi ve farklı kütüphaneler ile optimize edilerek incelenmesidir. Proje kapsamında ikili sınıflandırma (binary classification) problemi ele alınmış olup, Göğüs Kanseri (Breast Cancer) veri seti kullanılmıştır. Çalışma, modelin overfitting (aşırı öğrenme) ve underfitting (eksik öğrenme) eğilimlerini incelemeyi, varyans/bias problemlerine çözümler üretmeyi ve özel olarak yazılan sınıf yapısı ile hazır kütüphane modellerini (Scikit-learn) karşılaştırmayı hedeflemektedir.
Çalışmada gereksiz fonksiyon tekrarından kaçınmak amacıyla Nesne Yönelimli Programlama (OOP) kullanılmış ve constructor, private/public metotlar barındıran bir CustomMLP sınıfı inşa edilmiştir.
- Veri Seti ve Ön İşleme: Model iyileştirmesi sağlamak için
StandardScalerkullanılarak özellikler standardize edilmiştir. Veri seti Eğitim (%60), Validasyon/Dev (%20) ve Test (%20) olmak üzere üç parçaya ayrılmıştır. - Ağ Mimarisi ve Hiperparametreler (Tekrarlanabilirlik İçin):
- Girdi Katmanı: 30 özellik (features).
- Gizli Katman: 1 adet, 16 nöron. Aktivasyon fonksiyonu: Sigmoid.
- Çıktı Katmanı: 1 nöron. İkili sınıflandırma için Binary Cross-Entropy (Log Loss) kayıp fonksiyonu kullanılmıştır.
- Optimizasyon Algoritması: Stokastik Gradyan İniş (SGD).
- Öğrenme Oranı (Learning Rate): 0.1
- Epoch (n_steps): 1000
- Başlangıç Ağırlıkları:
np.random.randnile küçük rastgele değerler atandı (seed=42).
- Model Doğrulaması: Kendi yazdığımız yapı, aynı mimari ve hiperparametrelerle yapılandırılmış
Scikit-learn MLPClassifierile karşılaştırılmıştır. - Model Seçimi: Test setinde %90 accuracy (doğruluk) değerini geçen modeller arasında, n_steps değeri en uygun olanlar tercih edilmiştir.
Aynı eğitim/test seti, başlangıç ağırlıkları ve optimizasyon algoritması (SGD) kullanılarak eğitilen modellerin metrikleri aşağıda özetlenmiştir:
Custom MLP Sonuçları:
- Eğitim Accuracy: %98.53
- Test Accuracy: %97.37
- Test Recall: %100.00
- Karmaşıklık Matrisi (Confusion Matrix): [[39 4] [ 0 71]]
Scikit-learn MLPClassifier Sonuçları:
- Eğitim Accuracy: %98.82
- Test Accuracy: %97.37
- Test Recall: %98.59
- Karmaşıklık Matrisi (Confusion Matrix): [[41 2] [ 1 70]]
Her iki model de %90 accuracy barajını rahatlıkla aşmış olup, özel implementasyonumuz kütüphane implementasyonu ile neredeyse birebir aynı performansı (başarılı bir ileri/geri yayılım) göstermiştir.
Elde edilen sonuçlar, 1 gizli katmanlı modelin bu veri setinde underfitting veya overfitting problemi yaşamadığını (bias ve varyansın dengede olduğunu) göstermektedir. Eğitim ve test doğruluğu arasındaki makul fark, modelin iyi genelleyebildiğini (generalization) kanıtlamaktadır. Özel sınıfta hesaplanan Loss ve Scikit-learn Loss değerlerinin paralelliği, matematiksel formülasyonların doğruluğunu teyit etmiştir.
Gelecek Çalışmalar:
Daha karmaşık ve gürültülü veri setlerinde modelin varyansını düşürmek için regülarizasyon (L1/L2) teknikleri veya Dropout eklenebilir. Ayrıca hızlı öğrenme (convergence) sağlamak için Batch (Mini-Batch) Normalizasyonu yöntemleri CustomMLP sınıfına entegre edilerek model sayıları ve katman derinlikleri artırılabilir.