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.
# 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?
- Betimsel İstatistik: Verinin merkezini, yayılımını ve aykırı değerlerini anlamamızı sağlar.
- Çıkarımsal İstatistik: Bir örneklemden hareket ederek daha büyük bir popülasyon hakkında çıkarım yapmamızı sağlar.
- 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.
Yalnızca kategorileri temsil eder. Sıralama veya matematiksel büyüklük ilişkisi yoktur.
Örnek: Şehir, ülke, canlı türü.
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.
Değerler arasındaki farklar anlamlıdır ancak gerçek bir sıfır noktası bulunmaz.
Örnek: Celsius veya Fahrenheit sıcaklıkları.
Gerçek sıfır noktası bulunur ve oranlama işlemleri anlamlıdır.
Örnek: Yaş, kilo, mesafe.
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.
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
Bu ifade popülasyon ortalamasını gösterir.
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.
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
Variance — Varyans
Örneklem varyansında ise Bessel düzeltmesi nedeniyle paydada n − 1 kullanılır:
Standard Deviation — Standart Sapma
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
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) > 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 = +1: Mükemmel pozitif doğrusal ilişki.
- r = 0: Doğrusal ilişki yok.
- r = −1: Mükemmel negatif doğrusal ilişki.
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.
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 ≈ 0.2: Küçük etki
- d ≈ 0.5: Orta etki
- d ≥ 0.8: Büyük etki
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.
Olasılık teorisinde sık kullanılan temel kavramlar:
- Trial: Deneme.
- Experiment: Deney.
- Simple Event: Basit olay.
- Sample Space (S): Örneklem uzayı.
Örneğin adil bir zar için:
2.2. Permütasyon ve Kombinasyon
Permütasyon
Permütasyonda elemanların sırası önemlidir.
Tekrara izin verildiğinde:
Kombinasyon
Kombinasyonda seçim yapılırken sıra önemli değildir.
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
Birbirini dışlayan olaylarda:
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.
Bağımlı olaylarda ise ilk olayın sonucu ikinci olayın olasılığını etkiler.
# 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.
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): 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
# 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}"
)
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ç:
2. Binomial Distribution
Yalnızca iki sonucu bulunan ve birbirinden bağımsız n denemede k başarı elde etme olasılığını modeller.
- 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.
- λ: Ortalama olay sayısı
- k: Hedeflenen olay sayısı
- e: Euler sayısı ≈ 2.71828
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.
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:
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.
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.
Standart normal dağılım tablosu kullanıldığında bu aralık yaklaşık %86.64'lük bir alanı kapsar.
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.
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.
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.
4.3. Standart Hata — Standard Error
Standart hata, örneklem ortalamasının gerçek popülasyon ortalamasından ne kadar sapabileceğini ifade eder.
4.4. Hipotez Testi Metodolojisi
Hipotez testi, bir iddianın elde edilen veriler ışığında istatistiksel olarak desteklenip desteklenmediğini değerlendiren yöntemdir.
- H₀ — Null Hypothesis: Fark veya etki olmadığını savunur.
- H₁ — Alternative Hypothesis: Fark veya etki olduğunu savunur.
- α — Anlamlılık Düzeyi: Genellikle 0.05 veya 0.01 seçilir.
- p-value: H₀ doğru kabul edildiğinde gözlenen sonuç kadar veya daha uç bir sonucun elde edilme olasılığını ifade eder.
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.
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.
- Hipotez: B versiyonu dönüşüm oranını artırıyor mu?
- H₀: pₐ = pᵦ
- H₁: pₐ ≠ pᵦ
- 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
Alternative Hypothesis
5.2. F-İstatistiği
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
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.
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ı."
)
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ᵢ: Gözlenen frekans.
- Eᵢ: Beklenen frekans.
Serbestlik derecesi basit uyum iyiliği durumunda:
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:
H₀, bilgisayarların çökme oranlarının eşit olduğunu savunur.
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?
- Betimsel İstatistik: Nominal, Ordinal, Interval ve Ratio ölçeklerini; Mean, Median, Mode, Variance ve Standard Deviation kavramlarını inceledik.
- Aykırı Değer Analizi: Quartile ve IQR yöntemiyle aykırı değerlerin nasıl tespit edilebileceğini gördük.
- Korelasyon: Pearson ve Spearman korelasyonlarıyla değişkenler arasındaki ilişkileri analiz ettik.
- Etki Büyüklüğü: Cohen's d kullanarak iki grup arasındaki farkın büyüklüğünü değerlendirdik.
- Olasılık Teorisi: Permütasyon, kombinasyon, küme işlemleri, bağımlı/bağımsız olaylar ve koşullu olasılığı inceledik.
- Bayes Teoremi: Önsel bilgilerin yeni kanıtlarla nasıl güncellenebileceğini gerçek hayat senaryosu üzerinden gördük.
- Olasılık Dağılımları: Uniform, Binomial, Poisson ve Normal dağılımları inceledik.
- Z-Score: Farklı ölçeklerdeki verileri standardize ederek karşılaştırılabilir hale getirmeyi öğrendik.
- Çıkarımsal İstatistik: Sampling Bias, Survivorship Bias, Merkezi Limit Teoremi ve Standart Hata kavramlarını ele aldık.
- Hipotez Testleri: H₀, H₁, α ve p-value kavramlarıyla istatistiksel karar mekanizmasını inceledik.
- t-Testi ve A/B Testi: İki grubun veya iki ürün varyasyonunun istatistiksel olarak karşılaştırılmasını gördük.
- ANOVA: İkiden fazla grubun ortalamalarını F-istatistiği üzerinden karşılaştırdık.
- Ki-Kare: Kategorik verilerde gözlenen ve beklenen frekansları karşılaştırmayı öğrendik.
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.
🚀 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.

