Geleneksel bilgisayar programcılığında bir yazılımcı bilgisayara her şeyi adım adım anlatmak zorundadır: "Eğer sayı 5'ten büyükse sağa git, değilse sola git." Ancak dünyadaki tüm kuralları tek tek kodlamak imkansızdır. Örneğin bir fotoğraftaki kediyi bilgisayara tanıtmak için kedinin bıyık uzunluğunu, kulak açısını veya kürk rengini if-else şartlarıyla kodlayamazsınız; çünkü dünyada milyonlarca farklı kedi türü ve duruşu vardır. İşte bu imkansızlığı aşmak için **Makine Öğrenmesi (Machine Learning - ML)** doğmuştur. Bu rehberde, bilgisayarların açıkça programlanmadan verilerden nasıl kural çıkardığını, 3 temel öğrenme türünü ve ilk Python makine öğrenmesi modelinizi adım adım inceleyeceğiz.
---
1. Klasik Programlama ile Makine Öğrenmesi Arasındaki Paradigma Değişimi
Makine öğrenmesini anlamanın en kolay yolu bu devrimsel mantık farkını görmektir:
Klasik Programlama : [ VERİ ] + [ KURALLAR (Kod) ] ──> [ SONUÇ ]
Makine Öğrenmesi : [ VERİ ] + [ SONUÇLAR (Etiketler) ] ──> [ KURALLAR (Model) ]
Klasik programlamada kuralları insan yazar. Makine öğrenmesinde ise bilgisayara binlerce kedi ve köpek fotoğrafı (Veri + Sonuç) verirsiniz; algoritma fotoğraflardaki piksel desenlerini matematiksel olarak tarayarak "Bir canlının kedi olmasını sağlayan kuralları" **kendi kendine keşfeder!**
---
2. Makine Öğrenmesinin 3 Temel Türü
Makine öğrenmesi algoritmaları verinin sunuluş biçimine göre 3 ana grupta incelenir:
A. Denetimli Öğrenme (Supervised Learning - Öğretmen Eşliğinde)
Algoritmaya hem girdiler hem de doğru cevaplar (etiketler) verilir. Tıpkı öğretmenin arkasında çözümleri olan bir test kitabını öğrenciye vermesi gibidir.
B. Denetimsiz Öğrenme (Unsupervised Learning - Kendi Başına Keşif)
Algoritmaya hiçbir etiket veya doğru cevap verilmez; sadece ham veri sunulur. Algoritma veriler arasındaki gizli örüntüleri ve benzerlikleri gruplar (Kümeleme / Clustering).
C. Pekiştirmeli Öğrenme (Reinforcement Learning - Ödül ve Ceza)
Bir yapay zeka ajanı (Agent), bir ortam içinde deneme-yanılma yaparak öğrenir. Doğru bir hamle yaptığında "Ödül (+1 Puan)", yanlış hamle yaptığında "Ceza (-1 Puan)" alır.
---
3. Bir Makine Öğrenmesi Projesinin 5 Hayati Adımı
Başarılı bir makine öğrenmesi modeli şu yaşam döngüsünü takip eder:
1. **Veri Toplama (Data Collection):** Problemle ilgili kaliteli ve çeşitli veri setlerinin derlenmesi.
2. **Veri Ön İşleme ve Temizleme:** Eksik verilerin doldurulması, aykırı değerlerin (outliers) elenmesi ve normalizasyon.
3. **Model Seçimi ve Eğitimi:** Karar Ağaçları, Rastgele Orman (Random Forest) veya KNN gibi uygun algoritmanın seçilip verinin %80'i ile eğitilmesi (Training Set).
4. **Test ve Değerlendirme:** Eğitilen modelin hiç görmediği kalan %20'lik test verisi (Test Set) üzerinde doğruluk oranının (Accuracy) ölçülmesi.
5. **Canlıya Alma (Deployment):** Modelin bir web sitesine veya robotik karta yüklenerek gerçek dünya tahminleri yapması.
---
4. Aşırı Öğrenme (Overfitting) Tuzağı Nedir?
Bir öğrencinin sınavdaki konuların mantığını anlamak yerine kitaptaki soruların şıklarını ezberlediğini düşünün. Sınavda kitaptaki soru çıkarsa %100 yapar; ama sorudaki rakam azıcık değişirse sıfır çeker!
İşte bir makine öğrenmesi modelinin eğitim verilerini aşırı derecede ezberleyip genelleme yeteneğini kaybetmesine **Overfitting (Aşırı Öğrenme)** denir. Bunu önlemek için daha fazla veri toplanır ve modelin karmaşıklığı sadeleştirilir.
---
5. Python ile 10 Satırda İlk Makine Öğrenmesi Modeli
Aşağıdaki mini Python kodu, dünyaca ünlü İris Çiçeği veri setini kullanarak çiçeklerin taç ve çanak yaprak boyutlarına göre türünü tahmin eden bir Karar Ağacı (Decision Tree) modeli eğitir:
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
# 1. Veriyi yükle ve böl
iris = load_iris()
X_egitim, X_test, y_egitim, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
# 2. Modeli oluştur ve eğit
model = DecisionTreeClassifier()
model.fit(X_egitim, y_egitim)
# 3. Test et ve Doğruluk Oranını Gör
dogruluk = model.score(X_test, y_test)
print(f"Modelin Test Doğruluk Skoru: %{dogruluk * 100:.2f}")
# 4. Yeni bir çiçeği tahmin et: [Çanak Boy, Çanak En, Taç Boy, Taç En]
yeni_cicek = [[5.1, 3.5, 1.4, 0.2]]
tahmin_edilen_tur = model.predict(yeni_cicek)
print(f"Tahmin Edilen Tür: {iris.target_names[tahmin_edilen_tur[0]]}")
---
Sonuç
Makine öğrenmesi, veriyi bilgiye ve akıllı kararlara dönüştüren modern mühendisliğin en güçlü motorudur. Temel kavramları kavradıktan sonra kendi veri setlerinizi eğitebilir ve akıllı otonom sistemler inşa edebilirsiniz. Diğer algoritmalar için [Algoritma Derslerimizi](/dersler) inceleyebilirsiniz!