# Machine Learning Visualized Türkçe

Makine öğrenmesi algoritmalarını ilk prensiplerden yola çıkarak uygulayan ve matematiksel olarak türeten bir Jupyter Notebook kitabı. Her notebook'un çıktıları, algoritmanın eğitim boyunca nasıl davrandığını görselleştirir ve sonunda optimal ağırlıklara nasıl yaklaştığını gösterir. Keyifli öğrenmeler. -- [Gavin H](https://www.linkedin.com/in/gavinkhung/)

<div class="mlv-stage">
  <div class="mlv-stage-kicker">Türkçe Etkileşimli ML Kitabı</div>
  <h2 class="mlv-stage-title">İzleyerek, oynayarak ve hissederek öğren.</h2>
  <p class="mlv-stage-lead">Bu sürüm, sadece okuyup geçilen bir kaynak değil; her bölümde parametrelerle oynayıp modelin gerçekten nasıl davrandığını görmen için tasarlandı. İstersen canlı demolardan sezgi kur, istersen notebook akışından matematiğe in.</p>
  <div class="mlv-stage-actions">
    <a class="mlv-card-action primary" href="chapter1/interactive_linear_regression.html">Hemen Başla</a>
    <a class="mlv-card-action secondary" href="chapter5/hundred_page_ml.html">100 Sayfa Rotası</a>
    <a class="mlv-card-action secondary" href="chapter4/interactive_neural_loss_landscape.html">Sinir Ağlarına Git</a>
  </div>
  <div class="mlv-stage-metrics">
    <div class="mlv-stage-metric">
      <strong>69+</strong>
      <span>Canlı etkileşimli deneyim, her bölümde farklı bir öğrenme hissi kurar.</span>
    </div>
    <div class="mlv-stage-metric">
      <strong>5</strong>
      <span>Dört ana konuya ek olarak, saf “100 sayfalık makine öğrenmesi” düşünme rotası da ayrı bir omurga olarak yer alır.</span>
    </div>
    <div class="mlv-stage-metric">
      <strong>3</strong>
      <span>Akış biçimi: canlı demo, notebook anlatısı ve kitap mantığını izleyen görsel rota.</span>
    </div>
  </div>
</div>

```{note}
Bu Türkçe sürüm, Gavin Hung'ın orijinal `Machine Learning Visualized` projesi temel alınarak hazırlanmıştır.
```

```{note}
Bu sürümde iki akış var: `Canlı Demo` ile tarayıcı içinde oynayıp mantığı hissedebilirsin, `Notebook` ile de adım adım matematiği ve kodu okuyabilirsin.
```

## Nasıl Keşfetmeli?

<div class="mlv-path-grid">
  <a class="mlv-path-card" href="chapter1/interactive_linear_regression.html">
    <strong>Sıfırdan Başla</strong>
    <span>İlk kez geliyorsan gradyan inişi ile başla. Bir doğrunun kayıp yüzeyinde nasıl iyileştiğini görmek, sonraki her modeli anlamayı kolaylaştırır.</span>
  </a>
  <a class="mlv-path-card" href="chapter3/interactive_logistic_regression.html">
    <strong>Karar Sınırlarını Keşfet</strong>
    <span>Perceptron ve lojistik regresyon arasında gezerek doğrusal modellerin neleri çözebildiğini, nerede sınıra dayandığını karşılaştır.</span>
  </a>
  <a class="mlv-path-card" href="chapter4/interactive_neural_transformations.html">
    <strong>Temsil Öğrenmeye Dal</strong>
    <span>Sinir ağlarının büyüsü, veriyi yeni bir uzaya taşımasında. Dönüşümler ve geri yayılım demoları bu kırılma anını görünür kılar.</span>
  </a>
  <a class="mlv-path-card" href="chapter5/hundred_page_ml.html">
    <strong>100 Sayfa Rotasını İzle</strong>
    <span>Eğer daha ders kitabı gibi bir omurga istiyorsan, kavramdan pratiğe ilerleyen saf makine öğrenmesi rotasına gir. Burada akış algoritma listesinden değil, düşünme sırasından kuruludur.</span>
  </a>
</div>

## Bölüm 5. 100 Sayfalık Makine Öğrenmesi Rotası

Masaüstündeki saf “100 Sayfalık Makine Öğrenmesi” kitabının düşünme sırasını bu projeye ikinci bir omurga olarak taşıdık. Bu rota, aynı epistemoloji ile ilerliyor: önce notasyon ve kavramlar, sonra temel algoritmalar, ardından karar ağaçları, kNN ve SVM gibi klasik aileler, sonra ensemble düşüncesi, öğrenme anatomisi, model değerlendirme, sinir ağları, model seçimi, güvenilir karar için belirsizlik/kalibrasyon, gerçek eylem kuralı için karar verme disiplini, yorumlanabilirlik ile hata analizi, veri-merkezli düzeltme ile temel nedensel sezgi, değişen dünyada ayakta kalmak için shift/robustluk, aktif öğrenme ile üretim geri besleme döngüsü, deneyler ile güvenli canlı yayın disiplini, adalet/gizlilik/yönetişim katmanı, kasıtlı saldırganlara karşı saldırı direnci hattı ve sonunda tahminden aksiyona geçen nedensel müdahale/politika omurgası.

::::{grid} 1 1 2 2
:class-container: text-center
:gutter: 3

:::{grid-item-card}
:class-header: bg-light

**Genel Harita**
^^^

Kitabın tüm düşünme sırasını tek sayfada gör, hangi kavramın hangi görsel deneyime bağlandığını takip et.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/hundred_page_ml.html">Görsel Rota</a>
  <a class="mlv-card-action secondary" href="chapter5/book_fundamental_algorithms.html">Klasik Aileler</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Öğrenme Anatomisi**
^^^

Kapasite, düzenlileştirme, eğitim kaybı ve doğrulama kaybı arasındaki gerilimi tek ekranda kurup kitabın bölüm 4 mantığını görselleştir.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/interactive_book_learning_anatomy.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter5/hundred_page_ml.html">Haritaya Dön</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Ensemble Öğrenme**
^^^

Bagging, random forest ve gradient boosting ile tek bir modelin ötesine geçip neden model topluluklarının bu kadar güçlü çalıştığını gör.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_ensemble_learning.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_random_forest.html">Canlı Forest</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Temel Pratik**
^^^

Eşik, sınıf dengesi ve ayrılabilirlik değiştikçe precision, recall, F1 ve accuracy'nin nasıl farklı hikayeler anlattığını izle.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/interactive_book_basic_practice.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter5/book_conclusion.html">İlkeler</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Model Seçimi ve Genelleme**
^^^

Bias-varyans dengesini ve doğrulama eğrilerini kullanarak “en iyi model” fikrini kitap mantığıyla kur.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/interactive_book_model_selection.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter5/book_unsupervised_and_other_learning.html">Sonraki Bölümler</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Belirsizlik ve Kalibrasyon**
^^^

Bir modelin yalnızca ne tahmin ettiğini değil, o tahminde ne kadar dürüst olduğunu gör. Bayes güncellemesi, reliability diyagramı ve conformal bantlar artık yerel çalışıyor.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_uncertainty_and_calibration.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_probability_calibration.html">Canlı Kalibrasyon</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Karar Verme**
^^^

Skoru eşiğe, maliyete ve gerektiğinde çekimser kalma kuralına çevir. Artık Chapter 5 içinde “iyi tahmin” ile “iyi karar” arasındaki fark da canlı.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_decision_making.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_abstention.html">Canlı Abstention</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Yorumlanabilirlik ve Hata Analizi**
^^^

Özellik önemi, slice analizi ve kırılma modları ile modelin neye yaslandığını, hangi alt grupta tökezlediğini ve dağılım kayınca neden çöktüğünü açığa çıkar.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_interpretability_and_error_analysis.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_failure_modes.html">Canlı Failure Mode</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Veri ve Nedensellik**
^^^

Etiket gürültüsü, veri kapsaması, counterfactual düşünme ve confounding sezgisi ile modeli sadece daha iyi tahmin eden değil, daha doğru müdahale düşündüren bir sistem olarak ele al.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_data_centric_and_causal_thinking.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_causal_intuition.html">Canlı Nedensel Demo</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Dağılım Kayması ve Robustluk**
^^^

Covariate shift, OOD örnekler ve bozulma şiddeti altında performans eğrileri ile modeli yalnızca temiz testte değil, değişen dünyada da değerlendir.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_distribution_shift_and_robustness.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_ood_detection.html">Canlı OOD Demo</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Aktif Öğrenme ve Üretim Döngüsü**
^^^

Etiket bütçesini, insan incelemesi eşiklerini ve üretim alarmını aynı omurgada düşün. Model artık sadece öğrenmiyor; çalışırken de geri besleniyor.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_active_learning_and_monitoring.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_production_monitoring.html">Canlı Monitoring</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Deneyler ve Güvenli Yayın**
^^^

A/B testi, champion/challenger, rollout ve rollback ile yeni modelin sadece iyi değil güvenli biçimde canlıya nasıl çıktığını gör.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_experimentation_and_safe_deployment.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_guarded_rollout.html">Canlı Rollout</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Adalet, Gizlilik ve Yönetişim**
^^^

Adalet açığı, gizlilik bütçesi ve yönetişim kapısı ile modelin yalnızca güçlü değil savunulabilir biçimde yayına hazır olup olmadığını gör.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_fairness_privacy_and_governance.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_group_fairness.html">Canlı Adalet</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Saldırılar ve Sahtecilik Direnci**
^^^

Karşıt örnekler, kötüye kullanım kaçışı, sahtecilik ekonomisi ve kırmızı takım kapısı ile modelin kasıtlı saldırı altında ne kadar ayakta kaldığını gör.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_attacks_abuse_and_fraud_resilience.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_fraud_resistance.html">Canlı Sahtecilik</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Nedensel Müdahale ve Politika**
^^^

Müdahale etkisi, hedefli politika, bağlamsal bandit ve pekiştirmeli kararlar ile modelin neyi tahmin ettiğinden çok hangi aksiyonu seçmesi gerektiğini gör.

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter5/book_causal_interventions_and_policy_learning.html">Rota Sayfası</a>
  <a class="mlv-card-action secondary" href="chapter5/interactive_book_contextual_bandit.html">Canlı Bandit</a>
</div>
:::

:::: 

## Bölüm 4. Yapay Sinir Ağları

Doğrusal modellerin üzerine çıkarak birden fazla katmanı üst üste koyuyor ve sigmoid dışında yeni aktivasyon fonksiyonları kullanıyoruz. Bu sayede yapay sinir ağları doğrusal olmayan, karmaşık fonksiyonları öğrenebilir. Bir yapay sinir ağındaki optimal ağırlık ve bias değerlerini bulma sürecine geri yayılım denir.

::::{grid} 1 1 2 2
:class-container: text-center
:gutter: 3

:::{grid-item-card}
:class-header: bg-light

**Yapay Sinir Ağı Kayıp Yüzeyi**
^^^

```{image} https://raw.githubusercontent.com/gavinkhung/neural-network/refs/heads/main/neural_network_weights_loss_landscape.gif
:width: 100%
```

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter4/interactive_neural_loss_landscape.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter4/neural_network_weights.html">Notebook</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Yapay Sinir Ağı Dönüşümleri**
^^^

```{image} https://raw.githubusercontent.com/gavinkhung/neural-network/main/neural_network_weights.gif
:width: 100%
```

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter4/interactive_neural_transformations.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter4/neural_network_weights.html">Notebook</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Yapay Sinir Ağı Fonksiyon Yaklaştırma**
^^^

```{image} https://raw.githubusercontent.com/gavinkhung/neural-network/main/neural_network.gif
:width: 100%
```

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter4/interactive_neural_network.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter4/neural_network.html">Notebook</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Yapay Sinir Ağı Geri Yayılım**
^^^

```{image} https://raw.githubusercontent.com/gavinkhung/neural-network/refs/heads/main/neural_network_loss_landscape.gif
:width: 100%
```

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter4/interactive_backpropagation.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter4/neural_network.html">Notebook</a>
</div>
:::

::::

## Bölüm 3. Doğrusal Modeller ve Aktivasyon Fonksiyonu

Perceptron gibi doğrusal modeller, giriş özelliklerine doğrusal bir kombinasyon uygulayarak tahmin üretir. Bu kombinasyondaki parametreler, gradyan inişi gibi optimizasyon algoritmalarıyla öğrenilir. Bu yapı, aktivasyon fonksiyonu olmayan tek katmanlı bir yapay sinir ağı gibi düşünülebilir. Lojistik regresyon ise perceptron fikrini sigmoid aktivasyon fonksiyonu ve ikili çapraz entropi kayıp fonksiyonu ile genişletir.

::::{grid} 1 1 2 2
:class-container: text-center
:gutter: 3

:::{grid-item-card}
:class-header: bg-light

**Lojistik Regresyon**
^^^

```{image} https://raw.githubusercontent.com/gavinkhung/logistic-regression/main/logistic_regression.gif
:width: 100%
```

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter3/interactive_logistic_regression.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter3/logistic_regression.html">Notebook</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Perceptron**
^^^

```{image} https://raw.githubusercontent.com/gavinkhung/perceptron/main/perceptron.gif
:width: 100%
```

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter3/interactive_perceptron.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter3/perceptron.html">Notebook</a>
</div>
:::

::::

## Bölüm 2. Kümeleme ve Boyut İndirgeme

Makine öğrenmesi modelleri parametrelerini eğitim verisinden öğrendiği için, veri üzerinde analiz yapmak oldukça önemlidir. Temel Bileşen Analizi, veriyi sıkıştırıp varyansın büyük kısmını açıklayan özellikleri bulmamızı sağlar; böylece eğitimi daha anlamlı girdilere odaklayabiliriz. K-Ortalamalar ise ilişkili veri noktalarını gruplamaya yarayan denetimsiz bir kümeleme algoritmasıdır. Bu, veri ön işleme ve aykırı gözlemleri belirleme açısından oldukça faydalıdır.

::::{grid} 1 1 2 2
:class-container: text-center
:gutter: 3

:::{grid-item-card}
:class-header: bg-light

**K-Ortalamalar Kümeleme**
^^^

```{image} https://raw.githubusercontent.com/gavinkhung/k-means-clustering/main/k_means.gif
:width: 100%
```

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter2/interactive_k_means.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter2/k_means.html">Notebook</a>
</div>
:::

:::{grid-item-card}
:class-header: bg-light

**Temel Bileşen Analizi**
^^^

```{image} https://raw.githubusercontent.com/gavinkhung/pca/main/pca.gif
:width: 100%
```

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter2/interactive_pca.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter2/pca.html">Notebook</a>
</div>
:::

::::

## Bölüm 1. Optimizasyon

Optimizasyon, bir fonksiyonun değerini en aza indiren optimal giriş parametrelerini bulma sürecidir. Bu fikri makine öğrenmesine uyarladığımızda, optimizasyon algoritmalarının kayıp fonksiyonunda en düşük hatayı verecek ağırlık ve bias değerlerini bulması gerekir. Gradyan inişi bu algoritmalardan biridir. Parametreleri öğrenebilmek için yakınsama ve kararlılık kritik öneme sahiptir.

::::{grid} 1 1 2 2
:class-container: text-center
:gutter: 3

:::{grid-item-card}
:class-header: bg-light

**Gradyan İnişi**
^^^

```{image} https://raw.githubusercontent.com/gavinkhung/gradient-descent/refs/heads/main/gradient_descent.gif
:width: 100%
```

<div class="mlv-card-actions">
  <a class="mlv-card-action primary" href="chapter1/interactive_linear_regression.html">Canlı Demo</a>
  <a class="mlv-card-action secondary" href="chapter1/linear_regression.html">Notebook</a>
</div>
:::

::::

<!-- ## Table of Contents

```{tableofcontents}
``` -->

## Katkı

Dünyanın her yerinden insanların bu açık kaynak kitaba katkı verebildiği bir topluluk oluşmasını isterim. Yüksek seviyede bakıldığında bu proje, makine öğrenmesi algoritmalarını uygulayan Jupyter Notebook'ların bir koleksiyonudur.

Bu kitaba eklemek istediğiniz bir Jupyter Notebook varsa, kendi Türkçe sürümünüzde bir pull request açabilirsiniz. Orijinal yapının nasıl genişletildiğini görmek için [gerekli kod değişikliklerini gösteren referans commit'e](https://github.com/gavinkhung/machine-learning-visualized/commit/98900877d3d1a42c972b3e618ad46968f02513cb) bakabilirsiniz.

Not: Notebook dosyanızı kendi GitHub deponuza yüklemeniz gerekir. Yukarıdaki referans commit yapısını izlerseniz, Jupyter Book derleme süreci ilgili `.ipynb` dosyasını indirir ve onaylanan değişikliklerle siteyi günceller.

## Kitap Hakkında

> Meraklı bir öğreniciyim ve özellikle makine öğrenmesi yüklerini destekleyen yüksek performanslı hesaplama sistemleriyle ilgileniyorum. Bilgisayar Bilimleri yüksek lisans programlarına başvurmayı ve kariyerime ara vermeden bu eğitimi yarı zamanlı sürdürmeyi planlıyorum. Başvuru süreciyle ilgili önerileriniz ya da bağlantılarınız varsa benimle iletişime geçebilirsiniz (ghung AT umd DOT edu).

Bu Python Jupyter Notebook'larını [University of Maryland, College Park](https://www.cs.umd.edu/) ders notlarımı kullanarak hazırladım.

Notebook'ları kendiniz çalıştırmak isterseniz, herhangi bir sayfanın sağ üstündeki indirme simgesine tıklayıp `.ipynb` seçeneğini kullanın. Sonrasında kod bloklarını yerelde ya da Google Colab gibi bulut ortamlarda açıp çalıştırabilirsiniz.

Daha ileri düzey kullanım için AWS SageMaker Notebook ortamlarını hızlıca ayağa kaldıran Terraform script'lerini [burada](https://github.com/gavinkhung/gpu-inference) paylaştım.

### Dikkat Ceken UMD Dersleri

- [CMSC422 Introduction to Machine Learning](https://www.cs.umd.edu/class/fall2023/cmsc422/)
- [CMSC320 Introduction to Data Science](https://www.cs.umd.edu/class/spring2024/cmsc320-0201/)
- [UMD QML](https://qmlfire.github.io/)

### Makine Öğrenmesi Ders Notları

Bölüm 1:

- [Gradyan İnişi Notları](https://github.com/gavinkhung/gradient-descent/blob/main/gradient-descent.pdf)

Bölüm 2:

- [Temel Bileşen Analizi Notları](https://github.com/gavinkhung/pca/blob/main/pca.pdf)
- [Perceptron Notları](https://github.com/gavinkhung/perceptron/blob/main/perceptron.pdf)

Bölüm 3:

- [Naive Bayes ve Maksimum Olabilirlik Tahmini Notlari](https://github.com/gavinkhung/logistic-regression/blob/main/maximum-likelihood.pdf)
- [Lojistik Regresyon Notlari](https://github.com/gavinkhung/logistic-regression/blob/main/logistic-regression.pdf)
- [Softmax Regresyonu](https://github.com/gavinkhung/logistic-regression/blob/main/softmax.pdf)

Bölüm 4:

- [Yapay Sinir Ağları İleri Yayılım Notları](https://github.com/gavinkhung/neural-network/blob/main/forward-propagation.pdf)
- [Yapay Sinir Ağları Geri Yayılım Notları](https://github.com/gavinkhung/neural-network/blob/main/back-propagation.pdf)
