processed image (6)

Veri Bilimi ve Yapay Zeka Mühendisleri İçin İstatistik & Olasılık Temelleri: Teoriden Python Uygulamalarına

Veri Bilimi ve Yapay Zeka Mühendisleri İçin İstatistik & Olasılık Temelleri: Teoriden Python Uygulamalarına

Giriş: Yapay Zeka Dünyasında İstatistiğin Kritik Rolü

Günümüzde yapay zeka ve makine öğrenimi denildiğinde akla genellikle derin öğrenme mimarileri, büyük dil modelleri (LLM'ler) ve karmaşık sinir ağı yapıları geliyor.

Ancak bir Yapay Zeka Mühendisi gözüyle baktığımızda, en sofistike algoritmaların bile temelinde istatistiksel ve olasılıksal prensiplerin bulunduğunu görürüz.

İstatistik; veri bilimi ve yapay zeka mühendisliğinde yalnızca bir analiz aracı değildir. Veriyi anlamlandırmanın, modellerin kararlarını değerlendirmemin ve sistemlerin güvenilirliğini ölçmenin temel araçlarından biridir.

Yapay Zeka Mühendisliğinde İstatistiksel Yaklaşım

Bir yapay zeka sistemi, çoğu zaman belirsizlik altında karar verme problemidir. Bu nedenle veri dağılımlarını, değişkenler arasındaki ilişkileri ve gözlemlerin istatistiksel özelliklerini anlamak model geliştirme sürecinin önemli bir parçasıdır.

Python — İstatistiksel Yaklaşımın Kod Karşılığı
# Yapay Zeka Mühendisliğinde İstatistiksel Yaklaşım

import numpy as np
from scipy import stats

# Gerçek dünya verisi simülasyonu
np.random.seed(42)

sensor_data = np.random.normal(
    loc=100.0,
    scale=15.0,
    size=1000
)

# Betimsel İstatistik
mean_val = np.mean(sensor_data)
std_dev = np.std(sensor_data)

# Shapiro-Wilk normallik testi
stat, p_value = stats.shapiro(sensor_data[:50])

print(
    f"Ortalama: {mean_val:.2f} | "
    f"Standart Sapma: {std_dev:.2f}"
)

print(
    f"Normallik Testi p-değeri: {p_value:.4f}"
)

Bir Yapay Zeka Mühendisi Neden İstatistik Bilmelidir?

  1. Betimsel İstatistik: Verinin merkezini, yayılımını ve aykırı değerlerini anlamamızı sağlar.
  2. Çıkarımsal İstatistik: Bir örneklemden hareket ederek daha büyük bir popülasyon hakkında çıkarım yapmamızı sağlar.
  3. Model Değerlendirme: Accuracy gibi tek bir metrik yerine p-değeri, güven aralıkları ve etki büyüklüğü gibi araçlarla sonuçları daha güvenilir değerlendirmemizi sağlar.

Bölüm 1: Veri Analitiği ve Betimsel İstatistik

Yapay zeka modeli geliştirmeden önce yapılması gereken en önemli işlemlerden biri, elimizdeki verinin yapısını anlamaktır. Betimsel istatistik, karmaşık veri kümelerini özetleyerek merkezi eğilimleri, yayılımı ve değişkenler arasındaki ilişkileri incelememizi sağlar.

1.1. Ölçüm Ölçekleri

Bir değişken üzerinde hangi istatistiksel işlemlerin uygulanabileceğini belirlemek için verinin ölçüm seviyesini bilmemiz gerekir.

1. Nominal Ölçek
Yalnızca kategorileri temsil eder. Sıralama veya matematiksel büyüklük ilişkisi yoktur.

Örnek: Şehir, ülke, canlı türü.
2. Ordinal Ölçek
Kategoriler arasında sıralama vardır ancak kategoriler arasındaki farkların matematiksel olarak eşit olduğu söylenemez.

Örnek: Küçük < Orta < Büyük.
3. Interval (Aralık) Ölçek
Değerler arasındaki farklar anlamlıdır ancak gerçek bir sıfır noktası bulunmaz.

Örnek: Celsius veya Fahrenheit sıcaklıkları.
4. Ratio (Oran) Ölçek
Gerçek sıfır noktası bulunur ve oranlama işlemleri anlamlıdır.

Örnek: Yaş, kilo, mesafe.
Python — Ölçüm Ölçekleri
import pandas as pd

data = {
    "Eyalet_Nominal": [
        "California",
        "Texas",
        "New York"
    ],

    "Araba_Boyut_Ordinal": [
        "Compact",
        "Mid-Size",
        "Full-Size"
    ],

    "Sicaklik_Interval_F": [
        -5.0,
        0.0,
        40.0
    ],

    "Mesafe_Ratio_Mile": [
        5.0,
        20.0,
        40.0
    ]
}

df = pd.DataFrame(data)

print(df)

1.2. Popülasyon ve Örneklem

İstatistiksel çıkarımın temelinde popülasyon ve örneklem kavramları bulunur.

Popülasyon: İncelemek istediğimiz grubun tamamıdır.

Örneklem: Popülasyon içerisinden seçilen ve popülasyonu temsil etmesi beklenen alt kümedir.

Yapay Zeka açısından neden önemli?
Büyük veri kümelerinde tüm popülasyonu toplamak veya işlemek çoğu zaman maliyetli ya da imkansızdır. Bu nedenle doğru örnekleme yöntemleriyle popülasyonu temsil eden örneklemler oluşturulur.

1.3. Merkezi Eğilim Ölçüleri

Bir veri grubunun merkezini tanımlamak için üç temel ölçü kullanılır:

  • Mean — Ortalama
  • Median — Medyan
  • Mode — Mod
μ = (∑ Xᵢ) / N

Bu ifade popülasyon ortalamasını gösterir.

x̄ = (∑ Xᵢ) / n

Bu ifade ise örneklem ortalamasını gösterir.

Medyan, küçükten büyüğe sıralanmış veri kümesinin ortasında bulunan değerdir.

Mod, veri içerisinde en sık tekrar eden değerdir.

Mean vs. Median: Aykırı Değerlerin Etkisi

Ortalama tüm değerleri hesaba kattığı için aykırı değerlerden ciddi biçimde etkilenebilir. Medyan ise konum bazlı olduğu için aykırı değerlere karşı daha dayanıklıdır.

Örneğin 9 çalışanın maaşları düşük seviyelerdeyken bir yöneticinin çok yüksek maaş alması, ortalamayı ciddi biçimde yukarı çekebilir. Bu durumda medyan, tipik çalışanı temsil etmek açısından daha anlamlı olabilir.

Python — Ortalama, Medyan ve Mod
import numpy as np
from scipy import stats

# Çalışan maaşları
maaslar = np.array([
    1, 4, 2,
    5, 3, 2,
    4, 3, 2,
    500
])

mean_val = np.mean(maaslar)
median_val = np.median(maaslar)

mode_val = stats.mode(
    maaslar,
    keepdims=True
).mode[0]

print(
    f"Ortalama: {mean_val:.2f} TL"
)

print(
    f"Medyan: {median_val:.2f} TL"
)

print(
    f"Mod: {mode_val} TL"
)

1.4. Dağılım Ölçüleri

Merkezi eğilim tek başına veriyi anlamak için yeterli değildir. İki veri setinin ortalaması aynı olsa bile değerlerin merkez etrafındaki yayılımı tamamen farklı olabilir.

Range — Aralık

Range = Xₘₐₓ − Xₘᵢₙ

Variance — Varyans

σ² = ∑(Xᵢ − μ)² / N

Örneklem varyansında ise Bessel düzeltmesi nedeniyle paydada n − 1 kullanılır:

s² = ∑(Xᵢ − x̄)² / (n − 1)

Standard Deviation — Standart Sapma

σ = √σ²
Python — Dağılım Ölçüleri
import numpy as np

yas_listesi = np.array([
    18, 21, 22,
    25, 28, 30,
    35
])

# Aralık
rng = np.max(yas_listesi) - np.min(yas_listesi)

# Popülasyon varyansı
var = np.var(yas_listesi)

# Standart sapma
std = np.std(yas_listesi)

print(
    f"Range: {rng} | "
    f"Varyans: {var:.2f} | "
    f"Standart Sapma: {std:.2f}"
)

1.5. Çeyrekler ve IQR ile Aykırı Değer Tespiti

Bir veri seti sıralandığında onu dört parçaya ayıran değerler quartile olarak adlandırılır.

  • Q1: %25'lik değer
  • Q2: %50'lik değer, yani medyan
  • Q3: %75'lik değer
IQR = Q3 − Q1
Alt Sınır = Q1 − 1.5 × IQR
Üst Sınır = Q3 + 1.5 × IQR
Bu sınırların dışında kalan değerler genellikle aykırı değer olarak değerlendirilir. Ancak aykırı değerlerin her zaman silinmesi gerekmez. Öncelikle bu değerlerin veri üretim sürecindeki gerçek anlamı incelenmelidir.
Python — IQR ile Aykırı Değer Tespiti
import pandas as pd

data = pd.Series([
    1, 4, 5,
    6, 7, 8,
    9, 10, 50
])

q1 = data.quantile(0.25)
q3 = data.quantile(0.75)

iqr = q3 - q1

lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr

outliers = data[
    (data < lower_bound) |
    (data > upper_bound)
]

print(
    f"Q1: {q1} | Q3: {q3} | IQR: {iqr}"
)

print(
    f"Alt Sınır: {lower_bound}"
)

print(
    f"Üst Sınır: {upper_bound}"
)

print(
    f"Aykırı Değerler: {outliers.values}"
)

1.6. Kovaryans ve Korelasyon

İki değişken arasındaki ilişkinin yönünü ve gücünü incelemek, veri bilimi ve makine öğreniminde önemli bir adımdır.

Kovaryans

Cov(X,Y) = ∑[(Xᵢ − x̄)(Yᵢ − ȳ)] / (n − 1)
  • Cov(X,Y) > 0: Aynı yönde hareket.
  • Cov(X,Y) < 0: Zıt yönde hareket.
  • Cov(X,Y) = 0: Doğrusal ilişki yokluğu.

Pearson Korelasyon Katsayısı

r = Cov(X,Y) / (σₓ · σᵧ)
  • r = +1: Mükemmel pozitif doğrusal ilişki.
  • r = 0: Doğrusal ilişki yok.
  • r = −1: Mükemmel negatif doğrusal ilişki.
Pearson korelasyonu aykırı değerlerden ciddi biçimde etkilenebilir. Ayrıca korelasyon, tek başına nedensellik anlamına gelmez.

Spearman Rank Korelasyonu

Spearman korelasyonu değişkenlerin doğrudan değerleri yerine sıralamalarını kullanır. Özellikle doğrusal olmayan fakat monotonik ilişkilerde ve aykırı değerlerin bulunduğu durumlarda kullanışlıdır.

rₛ = 1 − [6 · ∑dᵢ² / n(n² − 1)]
Python — Pearson ve Spearman Korelasyonu
import numpy as np
from scipy import stats

# Kanser hücresi örneği
radius_mean = np.array([
    13.54, 20.57,
    19.69, 11.42,
    20.29
])

area_mean = np.array([
    577.9, 1326.0,
    1203.0, 504.0,
    1297.0
])

pearson_corr, _ = stats.pearsonr(
    radius_mean,
    area_mean
)

spearman_corr, _ = stats.spearmanr(
    radius_mean,
    area_mean
)

print(
    f"Pearson Korelasyonu: {pearson_corr:.4f}"
)

print(
    f"Spearman Korelasyonu: {spearman_corr:.4f}"
)

1.7. Etki Büyüklüğü — Cohen's d

Bir p-değeri bize iki grup arasında istatistiksel olarak anlamlı bir fark bulunup bulunmadığı hakkında bilgi verebilir. Ancak farkın ne kadar büyük olduğunu tek başına göstermez.

Bu nedenle etki büyüklüğü kavramı kullanılır.

d = (x̄₁ − x̄₂) / sₚ
sₚ = √[((n₁ − 1)s₁² + (n₂ − 1)s₂²) / (n₁ + n₂ − 2)]
  • d ≈ 0.2: Küçük etki
  • d ≈ 0.5: Orta etki
  • d ≥ 0.8: Büyük etki
Python — Cohen's d
import numpy as np

def cohen_d(group1, group2):

    n1, n2 = len(group1), len(group2)

    var1 = np.var(group1, ddof=1)
    var2 = np.var(group2, ddof=1)

    pooled_std = np.sqrt(
        (
            (n1 - 1) * var1 +
            (n2 - 1) * var2
        )
        /
        (n1 + n2 - 2)
    )

    d = (
        np.mean(group1) -
        np.mean(group2)
    ) / pooled_std

    return d


malign_radius = np.array([
    17.99, 20.57,
    19.69, 18.25
])

benign_radius = np.array([
    13.54, 13.08,
    12.65, 13.00
])

effect_size = cohen_d(
    malign_radius,
    benign_radius
)

print(
    f"Cohen's d: {effect_size:.2f}"
)

Bölüm 2: Olasılık Teorisi ve Yapay Zeka

Yapay zeka sistemlerinin önemli bir bölümü belirsizlik altında karar vermek zorundadır. Olasılık teorisi bu belirsizliği matematiksel olarak ifade etmemizi sağlar.

2.1. Olasılığın Temelleri

Bir olayın gerçekleşme olasılığı 0 ile 1 arasında bir değerdir.

P(A) = 0 → Olay imkansızdır.
P(A) = 1 → Olay kesindir.

Olasılık teorisinde sık kullanılan temel kavramlar:

  1. Trial: Deneme.
  2. Experiment: Deney.
  3. Simple Event: Basit olay.
  4. Sample Space (S): Örneklem uzayı.

Örneğin adil bir zar için:

S = {1, 2, 3, 4, 5, 6}

2.2. Permütasyon ve Kombinasyon

Permütasyon

Permütasyonda elemanların sırası önemlidir.

P(n) = n!
P(n,r) = n! / (n − r)!

Tekrara izin verildiğinde:

P(n,r) = nʳ

Kombinasyon

Kombinasyonda seçim yapılırken sıra önemli değildir.

C(n,r) = n! / [r! · (n − r)!]
Python — Permütasyon ve Kombinasyon
import math

# 39 karakterden 5 haneli tekrarsız şifre
n_chars = 39
r_length = 5

perm_result = (
    math.factorial(n_chars) //
    math.factorial(n_chars - r_length)
)

# 5 kişiden sıra gözetmeden 2 kişi seçme
n_team = 5
r_select = 2

comb_result = math.comb(
    n_team,
    r_select
)

print(
    f"Permütasyon: {perm_result:,}"
)

print(
    f"Kombinasyon: {comb_result}"
)

2.3. Küme Operasyonları

Olasılık hesaplamalarında kümeler teorisinin temel işlemleri sıklıkla kullanılır.

  • A ∩ B: Kesişim
  • A ∪ B: Birleşim
  • Aᶜ: Tamamlayıcı olay
P(A ∪ B) = P(A) + P(B) − P(A ∩ B)
P(Aᶜ) = 1 − P(A)

Birbirini dışlayan olaylarda:

P(A ∩ B) = 0

2.4. Bağımlı ve Bağımsız Olaylar

Bağımsız olaylarda bir olayın sonucu diğer olayın olasılığını değiştirmez.

P(A ∩ B) = P(A) · P(B)

Bağımlı olaylarda ise ilk olayın sonucu ikinci olayın olasılığını etkiler.

Python — Bağımlı Olay Simülasyonu
# 2 kırmızı + 2 mavi top

p_kirmizi_1 = 2 / 4


# İlk top kırmızı çekilirse:
# 1 kırmızı + 2 mavi = 3 top kalır


p_kirmizi_2_given_kirmizi_1 = 1 / 3

p_iki_kirmizi = (
    p_kirmizi_1 *
    p_kirmizi_2_given_kirmizi_1
)

print(
    
    f"Art arda iki kırmızı gelme olasılığı: "
    f"{p_iki_kirmizi:.4f}"
    
)

2.5. Koşullu Olasılık ve Bayes Teoremi

B olayının gerçekleştiği bilindiğinde A olayının gerçekleşme olasılığına koşullu olasılık denir.

P(A|B) = P(A ∩ B) / P(B)

Bayes Teoremi

Bayes Teoremi, yeni bir kanıt elde edildiğinde elimizdeki önsel bilgiyi güncelleyerek soncul olasılığı hesaplamamızı sağlar.

P(A|B) = [P(B|A) · P(A)] / P(B)
  • P(A|B): Posterior
  • P(B|A): Likelihood
  • P(A): Prior
  • P(B): Marginal Likelihood

Medikal Test Güvenilirliği Örneği

Bir okulda 50 çocuktan yalnızca 1 tanesinin hastalığa sahip olduğunu düşünelim.

  • P(Hasta) = 1 / 50 = 0.02
  • P(Pozitif | Hasta) = 0.90
  • P(Pozitif | Sağlıklı) = 0.10
Python — Bayes Teoremi ile Medikal Test
# Prior
p_hasta = 1 / 50
p_saglikli = 49 / 50

# Likelihood
p_pozitif_given_hasta = 0.90
p_pozitif_given_saglikli = 0.10

# P(Pozitif)
p_pozitif = (
    p_pozitif_given_hasta * p_hasta
    +
    p_pozitif_given_saglikli * p_saglikli
)

# Bayes
p_hasta_given_pozitif = (
    p_pozitif_given_hasta *
    p_hasta
) / p_pozitif

print(
    
    f"Toplam Pozitif Olasılığı: "
    f"{p_pozitif:.4f}"
    
)

print(
    
    f"Pozitif çıkan kişinin gerçekten hasta olma "
    f"olasılığı: {p_hasta_given_pozitif:.4f}"
    
)
Buradaki kritik nokta şudur: Bir testin hassasiyetinin yüksek olması, pozitif çıkan kişinin kesin olarak hasta olduğu anlamına gelmez. Hastalığın toplumdaki görülme oranı yani prior olasılık sonucu ciddi biçimde etkileyebilir.

Bölüm 3: Olasılık Dağılımları

Olasılık dağılımları, rastgele bir değişkenin alabileceği değerleri ve bu değerlerin gerçekleşme olasılıklarını matematiksel olarak ifade eder.

3.1. Kesikli Olasılık Dağılımları

Kesikli dağılımlar, belirli ve sayılabilir değerler alabilen değişkenleri modeller.

1. Uniform Distribution

Tüm sonuçların eşit olasılığa sahip olduğu dağılımdır. Örneğin adil bir zar için her sonuç:

P(X = x) = 1/6

2. Binomial Distribution

Yalnızca iki sonucu bulunan ve birbirinden bağımsız n denemede k başarı elde etme olasılığını modeller.

P(X = k) = C(n,k) · pᵏ · (1 − p)ⁿ⁻ᵏ
  • n: Deneme sayısı
  • p: Başarı olasılığı
  • k: Hedef başarı sayısı

3. Poisson Distribution

Belirli bir zaman veya mekan aralığında gerçekleşen olayların sayısını modellemek için kullanılır.

P(X = k) = (λᵏ · e⁻λ) / k!
  • λ: Ortalama olay sayısı
  • k: Hedeflenen olay sayısı
  • e: Euler sayısı ≈ 2.71828
Python — Binom ve Poisson Dağılımları
import numpy as np
from scipy import stats

# Binomial Distribution
n_trials = 10
p_success = 1 / 6
k_target = 4

binom_prob = stats.binom.pmf(
    k_target,
    n_trials,
    p_success
)

# Poisson Distribution
lambda_rate = 3
k_poisson = 3

poisson_prob = stats.poisson.pmf(
    k_poisson,
    lambda_rate
)

print(
    f"Binom P(X=4): {binom_prob:.4f}"
)

print(
    f"Poisson P(X=3): {poisson_prob:.4f}"
)

3.2. Sürekli Olasılık Dağılımları

Sürekli dağılımlar; boy, kilo, zaman, sıcaklık gibi sonsuz sayıda ondalıklı değer alabilen değişkenleri modeller.

PDF — Olasılık Yoğunluk Fonksiyonu

PDF, sürekli bir değişkenin belirli bir bölgedeki yoğunluğunu ifade eder. Sürekli değişkenlerde tek bir noktanın olasılığı sıfırdır; olasılık eğri altında kalan alanla ifade edilir.

CDF — Kümülatif Dağılım Fonksiyonu

CDF, bir değişkenin belirli bir değerden küçük veya eşit olma olasılığını ifade eder.

Gaussian / Normal Distribution

Normal dağılım, çan eğrisi biçiminde ve simetrik bir dağılımdır. Birçok doğal ve ölçüm tabanlı süreç normal dağılımla modellenebilir.

f(x) = [1 / (σ · √(2π))] · e⁻¹ᐟ² · ((x − μ) / σ)²

Normal dağılımın temel parametreleri:

  • μ: Ortalama / merkez
  • σ: Standart sapma / yayılım

Ampirik Kural: %68 – %95 – %99.7

Normal dağılıma sahip bir veri için:

μ ± 1σ → yaklaşık %68.27
μ ± 2σ → yaklaşık %95.45
μ ± 3σ → yaklaşık %99.73

3.3. Standart Normal Dağılım ve Z-Score

Farklı ortalamalara ve standart sapmalara sahip veri kümelerini karşılaştırabilmek için standardizasyon uygulanabilir. Z-score, bir gözlemin ortalamadan kaç standart sapma uzakta olduğunu gösterir.

Z = (X − μ) / σ

IQ Dağılımı Örneği

Ortalama IQ'nun μ = 110 ve standart sapmanın σ = 20 olduğunu varsayalım. 80 ile 140 arasındaki IQ değerlerinin olasılığını hesaplayabiliriz.

X₁ = 80 → Z₁ = (80 − 110) / 20 = −1.5
X₂ = 140 → Z₂ = (140 − 110) / 20 = +1.5

Standart normal dağılım tablosu kullanıldığında bu aralık yaklaşık %86.64'lük bir alanı kapsar.

Python — Z-Score ve Normal Dağılım
from scipy import stats

# IQ parametreleri
mu = 110
sigma = 20

# Aralık
x1 = 80
x2 = 140

# Z-Score
z1 = (x1 - mu) / sigma
z2 = (x2 - mu) / sigma

# CDF ile alan hesaplama
prob_less_140 = stats.norm.cdf(
    x2,
    loc=mu,
    scale=sigma
)

prob_less_80 = stats.norm.cdf(
    x1,
    loc=mu,
    scale=sigma
)

prob_between = (
    prob_less_140 -
    prob_less_80
)

print(
    f"Z1 (80): {z1:.2f}"
)

print(
    f"Z2 (140): {z2:.2f}"
)

print(
    
    f"80 <= IQ <= 140 olasılığı: "
    f"{prob_between:.4f}"
    
)

Bölüm 4: Çıkarımsal İstatistik ve Hipotez Testleri

Çıkarımsal istatistik, örneklemden hareket ederek daha büyük popülasyon hakkında çıkarımlar yapmamızı sağlar.

4.1. Örnekleme Yöntemleri

Büyük veri kümelerinde tüm popülasyonu analiz etmek çoğu zaman maliyetli olduğundan temsil gücü yüksek örneklemler seçilir.

1. Random Sampling

Popülasyondaki her elemanın seçilme olasılığının eşit olduğu örnekleme yöntemidir.

2. Stratified Sampling

Popülasyon belirli özelliklere göre katmanlara ayrılır ve her katmandan örneklem alınır.

3. Cluster Sampling

Popülasyon kümelere ayrılır ve bu kümelerden rastgele seçim yapılır.

Python — Stratified Sampling
import numpy as np
from sklearn.model_selection import train_test_split

X = np.arange(100)

# 80 adet sınıf 0, 20 adet sınıf 1
y = np.array(
    [0] * 80 +
    [1] * 20
)

X_train, X_test, y_train, y_test = train_test_split(
    X,
    y,
    test_size=0.2,
    stratify=y,
    random_state=42
)

print(
    f"Test sınıf dağılımı: "
    f"{np.bincount(y_test)}"
)

Sampling Bias ve Survivorship Bias

Örneklem seçiminde yapılan hatalar, tüm popülasyon hakkında yanlış sonuçlara ulaşılmasına neden olabilir.

II. Dünya Savaşı Uçak Örneği:
Geri dönen uçaklarda görülen mermi deliklerine bakılarak zırhlandırmanın bu bölgelere yapılması önerilmişti. Ancak Abraham Wald, yalnızca geri dönebilen uçakların incelendiğini fark etti. Düşen uçaklar veri setinde yoktu. Böylece aslında hasar almaması gereken bölgelerin değil, kritik bölgelerin korunması gerektiği anlaşılmıştı.

4.2. Merkezi Limit Teoremi — CLT

Merkezi Limit Teoremi, popülasyonun dağılımı ne olursa olsun, yeterince büyük rastgele örneklemlerin ortalamalarının dağılımının Normal Dağılıma yaklaşacağını ifade eder.

n ≥ 30 → Örneklem ortalamalarının dağılımı yaklaşık Normal

4.3. Standart Hata — Standard Error

Standart hata, örneklem ortalamasının gerçek popülasyon ortalamasından ne kadar sapabileceğini ifade eder.

SE = σ / √n
Örneklem büyüklüğü arttıkça standart hata azalır. Dolayısıyla örneklem ortalaması gerçek popülasyon ortalamasına daha fazla yaklaşır.

4.4. Hipotez Testi Metodolojisi

Hipotez testi, bir iddianın elde edilen veriler ışığında istatistiksel olarak desteklenip desteklenmediğini değerlendiren yöntemdir.

  1. H₀ — Null Hypothesis: Fark veya etki olmadığını savunur.
  2. H₁ — Alternative Hypothesis: Fark veya etki olduğunu savunur.
  3. α — Anlamlılık Düzeyi: Genellikle 0.05 veya 0.01 seçilir.
  4. p-value: H₀ doğru kabul edildiğinde gözlenen sonuç kadar veya daha uç bir sonucun elde edilme olasılığını ifade eder.
Karar Kuralı:

p-value < α → H₀ reddedilir.
İstatistiksel olarak anlamlı kanıt vardır.

p-value ≥ α → H₀ reddedilemez.
Yeterli istatistiksel kanıt bulunmamaktadır.

4.5. Type-1 ve Type-2 Hataları

Karar H₀ Gerçekte Doğru H₀ Gerçekte Yanlış
H₀ Reddedildi Type-1 Error (α) Doğru Karar
H₀ Reddedilemedi Doğru Karar Type-2 Error (β)

Type-1 Error: Gerçekte fark yokken fark var sonucuna ulaşmak. False Positive olarak düşünülebilir.

Type-2 Error: Gerçekte fark varken bu farkı tespit edememek. False Negative olarak düşünülebilir.

4.6. Student's t-Distribution ve t-Testi

Popülasyon standart sapması bilinmediğinde ve örneklem boyutu küçük olduğunda Student's t-Dağılımı kullanılabilir.

t = (x̄₁ − x̄₂) / √[(s₁² / n₁) + (s₂² / n₂)]
Python — Bağımsız İki Örneklem t-Testi
import numpy as np
from scipy import stats

group_1 = np.array([
    14.8, 15.2,
    15.1, 14.9,
    15.4
])

group_2 = np.array([
    13.9, 14.1,
    14.0, 13.8,
    14.2
])

# H0: Ortalamalar arasında fark yoktur.
# H1: Ortalamalar arasında anlamlı fark vardır.

t_stat, p_val = stats.ttest_ind(
    group_1,
    group_2
)

alpha = 0.05

print(
    
    f"t-İstatistiği: {t_stat:.4f}"
    
)

print(
    
    f"p-değeri: {p_val:.4e}"
    
)

if p_val < alpha:

    print(
        
        "H0 REDDEDİLDİ: "
        "Gruplar arasında anlamlı fark vardır."
        
    )

else:

    print(
        
        "H0 REDDEDİLEMEDİ: "
        "Anlamlı fark bulunamadı."
        
    )

4.7. Dijital Ürünlerde A/B Testi

A/B testi, iki farklı ürün veya sistem varyasyonunun performansını karşılaştırmak için kullanılan istatistiksel test yaklaşımıdır.

  1. Hipotez: B versiyonu dönüşüm oranını artırıyor mu?
  2. H₀: pₐ = pᵦ
  3. H₁: pₐ ≠ pᵦ
  4. Uygun istatistiksel test ile p-değeri hesaplanır.

Bölüm 5: Çoklu Grup Karşılaştırmaları — ANOVA

t-Testi iki grubun ortalamasını karşılaştırmak için kullanışlıdır. Ancak ikiden fazla grubun karşılaştırılması gerektiğinde ANOVA kullanılır.

5.1. ANOVA Mantığı

ANOVA, grupların ortalamalarını doğrudan tek tek karşılaştırmak yerine gruplar arası ve grup içi varyansları karşılaştırır.

Null Hypothesis

H₀: μ₁ = μ₂ = μ₃ = ... = μₖ

Alternative Hypothesis

H₁: En az bir μᵢ ≠ μⱼ

5.2. F-İstatistiği

F = Gruplar Arası Varyans / Grup İçi Varyans

Gruplar arasındaki fark büyüdükçe F-istatistiği büyüme eğilimindedir. Eğer gruplar gerçekten farklıysa gruplar arası varyans, grup içi varyansa göre daha yüksek olacaktır.

Serbestlik Dereceleri

df₁ = k − 1
df₂ = N − k

Burada k grup sayısını, N ise toplam örnek sayısını ifade eder.

5.3. Python ile ANOVA

Örneğin ortaokul, lise ve üniversite öğrencilerinin sınav kaygısı skorlarının birbirinden farklı olup olmadığını inceleyelim.

Python — One-Way ANOVA
import numpy as np
from scipy import stats

# Öğrenci grupları
ortaokul = np.array([
    45, 47,
    46, 44,
    48
])

lise = np.array([
    48, 52,
    50, 51,
    49
])

univ = np.array([
    58, 60,
    62, 59,
    61
])


# H0: Tüm grup ortalamaları eşittir.
# H1: En az bir grup farklıdır.


f_stat, p_val = stats.f_oneway(
    ortaokul,
    lise,
    univ
)

alpha = 0.01

print(
    
    f"F-İstatistiği: {f_stat:.4f}"
    
)

print(
    
    f"p-Değeri: {p_val:.4e}"
    
)

if p_val < alpha:

    print(
        
        "H0 REDDEDİLDİ: "
        "Gruplar arasında anlamlı fark vardır."
        
    )

else:

    print(
        
        "H0 REDDEDİLEMEDİ: "
        "Anlamlı fark bulunamadı."
        
    )
ANOVA sonucunda anlamlı fark bulunması, hangi grupların birbirinden farklı olduğunu tek başına göstermez. Bu durumda Tukey HSD gibi Post-Hoc testler kullanılabilir.

Bölüm 6: Kategorik Veri Analizi — Ki-Kare (χ²) Testleri

Makine öğrenmesi ve veri analitiğinde yalnızca sürekli sayısal değişkenlerle çalışmayız. Buton türleri, kullanıcı kategorileri, hata türleri veya sunucu durumları gibi kategorik veriler de oldukça önemlidir.

Ki-Kare testi, gözlenen frekanslarla beklenen frekanslar arasındaki farkın istatistiksel olarak anlamlı olup olmadığını incelemek için kullanılır.

6.1. Ki-Kare Testinin Mantığı

χ² = ∑[(Oᵢ − Eᵢ)² / Eᵢ]
  • Oᵢ: Gözlenen frekans.
  • Eᵢ: Beklenen frekans.

Serbestlik derecesi basit uyum iyiliği durumunda:

df = k − 1

6.2. Ki-Kare Uyum İyiliği Testi

Bir internet kafede 7 bilgisayar bulunduğunu ve tüm bilgisayarların eşit çökme olasılığına sahip olduğunu varsayalım.

Toplam 42 çökme gözlemlenmiş ve gözlenen frekanslar:

O = [5, 7, 9, 11, 1, 6, 3]

H₀, bilgisayarların çökme oranlarının eşit olduğunu savunur.

Python — Ki-Kare Goodness-of-Fit
import numpy as np
from scipy import stats

# Gözlenen frekanslar
observed = np.array([
    5, 7, 9,
    11, 1, 6,
    3
])

total_crashes = np.sum(observed)


# Eşit dağılım varsayımı

num_computers = len(observed)

expected = np.full(
    num_computers,
    total_crashes / num_computers
)


# Ki-Kare Uyum İyiliği Testi

chi2_stat, p_val = stats.chisquare(
    f_obs=observed,
    f_exp=expected
)

alpha = 0.05

print(
    
    f"Ki-Kare İstatistiği (χ²): "
    f"{chi2_stat:.4f}"
    
)

print(
    
    f"p-değeri: {p_val:.4f}"
    
)

if p_val < alpha:

    print(
        
        "H0 REDDEDİLDİ: "
        "Çökme oranları eşit değildir."
        
    )

else:

    print(
        
        "H0 REDDEDİLEMEDİ: "
        "Fark istatistiksel olarak anlamlı değildir."
        
    )

Bağımsızlık Testi

Ki-Kare bağımsızlık testi, iki kategorik değişken arasında istatistiksel olarak anlamlı bir ilişki veya bağımlılık olup olmadığını incelemek için kullanılır.

Bu testlerde genellikle çapraz tablolar (contingency tables) kullanılır.

🏁 Sonuç ve Değerlendirme

Veri bilimi ve yapay zeka mühendisliği yalnızca hazır Python kütüphanelerini çağırmak veya karmaşık sinir ağı mimarilerini eğitmekten ibaret değildir.

Güvenilir yapay zeka sistemleri geliştirebilmek için kullanılan matematiksel ve istatistiksel altyapının anlaşılması gerekir. İstatistik sayesinde veriye doğru soruları sorabilir, modellerin sonuçlarını değerlendirebilir ve elde ettiğimiz bulguların ne kadar güvenilir olduğunu analiz edebiliriz.

Bu Rehberde Neler Öğrendik?

  1. Betimsel İstatistik: Nominal, Ordinal, Interval ve Ratio ölçeklerini; Mean, Median, Mode, Variance ve Standard Deviation kavramlarını inceledik.
  2. Aykırı Değer Analizi: Quartile ve IQR yöntemiyle aykırı değerlerin nasıl tespit edilebileceğini gördük.
  3. Korelasyon: Pearson ve Spearman korelasyonlarıyla değişkenler arasındaki ilişkileri analiz ettik.
  4. Etki Büyüklüğü: Cohen's d kullanarak iki grup arasındaki farkın büyüklüğünü değerlendirdik.
  5. Olasılık Teorisi: Permütasyon, kombinasyon, küme işlemleri, bağımlı/bağımsız olaylar ve koşullu olasılığı inceledik.
  6. Bayes Teoremi: Önsel bilgilerin yeni kanıtlarla nasıl güncellenebileceğini gerçek hayat senaryosu üzerinden gördük.
  7. Olasılık Dağılımları: Uniform, Binomial, Poisson ve Normal dağılımları inceledik.
  8. Z-Score: Farklı ölçeklerdeki verileri standardize ederek karşılaştırılabilir hale getirmeyi öğrendik.
  9. Çıkarımsal İstatistik: Sampling Bias, Survivorship Bias, Merkezi Limit Teoremi ve Standart Hata kavramlarını ele aldık.
  10. Hipotez Testleri: H₀, H₁, α ve p-value kavramlarıyla istatistiksel karar mekanizmasını inceledik.
  11. t-Testi ve A/B Testi: İki grubun veya iki ürün varyasyonunun istatistiksel olarak karşılaştırılmasını gördük.
  12. ANOVA: İkiden fazla grubun ortalamalarını F-istatistiği üzerinden karşılaştırdık.
  13. Ki-Kare: Kategorik verilerde gözlenen ve beklenen frekansları karşılaştırmayı öğrendik.
Yapay Zeka Mühendisliği Açısından Sonuç

Bir yapay zeka modelinin güvenilirliği yalnızca model mimarisine değil, kullanılan verinin kalitesine ve yapılan istatistiksel değerlendirmelerin doğruluğuna da bağlıdır.

İstatistik ve olasılık temellerini güçlü bir şekilde anlamak; veri ön işleme, özellik mühendisliği, model değerlendirme, deney tasarımı ve karar verme süreçlerinde daha sağlam sistemler geliştirmemizi sağlar.

📂 Python Kodları ve Uygulamalar

Bu yazıda ele alınan istatistik ve olasılık konularına ait Python kodlarına, veri setlerine ve uygulama notebook'larına GitHub depom üzerinden ulaşabilirsiniz.

🔗 GitHub — Statistics & Probability

🚀 Son Söz

Yapay zeka öğrenirken yalnızca "hangi kütüphaneyi kullanmalıyım?" sorusuna odaklanmak yerine, "bu algoritmanın arkasında hangi matematik var?" sorusunu sormak uzun vadede çok daha güçlü bir mühendislik altyapısı oluşturur.

İstatistik ve olasılık, bu altyapının en önemli parçalarından biridir. Veriyi anlamak, belirsizliği ölçmek ve modellerin sonuçlarını bilimsel olarak değerlendirmek isteyen her Veri Bilimi ve Yapay Zeka Mühendisi için temel bir yetkinliktir.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir