Bir cümlelik özet
Küçük bir veri seti üzerinde, kural (eşik) tabanlı basit bir sınıflandırıcı yazacağız; onu eğitim ve test verisiyle deneyip doğruluğunu ölçecek ve sonuçlarındaki sınırları dürüstçe tartışacağız.
Neden önemli?
Sınıflandırma, bir örneği doğru gruba yerleştirmektir: bir e-postayı "spam" veya "spam değil" diye ayırmak, bir meyveyi "elma" veya "portakal" olarak etiketlemek gibi. Yapay zekâ araçlarının çoğu, arka planda bu tür bir gruplama yapar.
Bu derste kendi elimizle çalışan bir sınıflandırıcı yapacağız. Ama en baştan dürüst olalım: burada gerçek bir yapay zekâ modeli eğitmiyoruz. Biz kuralları kendimiz yazacağız. Bu, yapay zekânın gizemli bir sihir olmadığını, sonunda verideki bir örüntüyü yakalayan basit kararlara dayandığını görmenin en iyi yoludur. Kuralı kendin yazınca, makinenin nerede yanılabileceğini de kendi gözünle görürsün.
Sınıflandırma nedir?
Örnek ve etiket
Sınıflandırmada iki şey vardır:
- Örnek: Hakkında karar vereceğimiz şey (bir meyve, bir mesaj, bir hava durumu ölçümü).
- Etiket: O örneğin ait olduğu grup (elma/portakal, spam/normal).
Amacımız, örnekten bakıp doğru etiketi tahmin eden bir kural bulmaktır.
Günlük hayattan iki örnek
Örnek 1 — Meyve sepeti. Bir sepette elma ve portakal var. Gözlerimizi kapatıp ağırlığa baksak bile çoğu zaman ayırt edebiliriz: portakallar genelde daha ağırdır. "Ağırlık 150 gramın üstündeyse portakal, değilse elma" gibi bir kural, işin çoğunu doğru yapar.
Örnek 2 — Mesaj kutusu. Bir mesajda "bedava", "hemen tıkla", "kazandınız" gibi kelimeler geçiyorsa o mesaj büyük olasılıkla istenmeyen (spam) bir mesajdır. "Bu anahtar kelimelerden biri varsa spam" kuralı basit ama işe yarar.
İkisinde de yaptığımız şey aynı: bir özelliğe (ağırlık, anahtar kelime) bakıp bir eşik veya kurala göre karar veriyoruz.
Eşik tabanlı sınıflandırıcı
Fikir
Elimizde her meyvenin ağırlığı (gram) ve gerçek etiketi olsun. Bir eşik seçelim: bu eşiğin üstündekiler portakal, altındakiler elma. İyi bir eşik bulmak, sınıflandırıcıyı "kurmak" demektir.
Eğitim ve test verisi neden ayrılır?
Veriyi ikiye böleriz:
- Eğitim verisi: Eşiği seçerken baktığımız örnekler.
- Test verisi: Eşiği seçtikten sonra, daha önce hiç görmediğimiz örneklerle sınadığımız kısım.
Neden? Çünkü bir kuralın gerçekten iyi olup olmadığını, ancak daha önce görmediği örneklerde denersek anlarız. Sadece cevabını bildiğimiz örneklerde iyi görünmek kolaydır; asıl soru, yeni bir meyve geldiğinde doğru bilip bilmeyeceğidir.
Kod: veriyi kuralım ve ikiye bölelim
# Her örnek: (ağırlık_gram, gerçek_etiket)
veri = [
(120, "elma"), (130, "elma"), (140, "elma"),
(135, "elma"), (125, "elma"), (110, "elma"),
(160, "portakal"), (170, "portakal"), (180, "portakal"),
(155, "portakal"), (175, "portakal"), (165, "portakal"),
]
# İlk yarısı eğitim, ikinci yarısı test
egitim = veri[:6] + veri[6:9] # bazı elma + bazı portakal
test = veri[3:6] + veri[9:] # kalan örnekler
Kod: eşiğe göre tahmin
def tahmin_et(agirlik, esik):
# Eşiğin üstündeyse portakal, değilse elma
if agirlik > esik:
return "portakal"
else:
return "elma"
Kod: doğruluğu ölçelim
Doğruluk, doğru bildiğimiz örnek sayısının toplam örneğe oranıdır.
def dogruluk(veri_kumesi, esik):
dogru = 0
for agirlik, gercek in veri_kumesi:
if tahmin_et(agirlik, esik) == gercek:
dogru += 1
return dogru / len(veri_kumesi)
esik = 150
print("Eğitim doğruluğu:", dogruluk(egitim, esik))
print("Test doğruluğu:", dogruluk(test, esik))
Bu koddaki dogru / len(...) işlemi 0 ile 1 arasında bir sayı verir. 1.0 değeri "hepsini doğru bildi", 0.5 değeri "yarısını bildi" demektir.
Mini uygulama
Aşağıdaki adımları kendi bilgisayarında (bir yetişkin gözetiminde) dene:
- Yukarıdaki üç kod bloğunu tek bir Python dosyasına sırayla yapıştır.
- Çalıştır ve eğitim ile test doğruluğunu not al.
esik = 150satırını değiştir: önce145, sonra135dene. Doğruluk nasıl değişiyor?- En iyi test doğruluğunu veren eşiği bul ve neden onu seçtiğini bir cümleyle yaz.
Bir hata ve düzeltmesi
İlk denememde eşiği çok düşük seçmiştim:
Amaç: Elma ve portakalı ayırmak
Sorun: esik = 100 iken her şeyi "portakal" dedi, elmalar yanlış çıktı
Kontrol: En hafif portakal 155 gram, en ağır elma 140 gram; sınır ikisinin arasında olmalı
Düzeltme: esik = 150 yaptım; artık iki grubu da doğru ayırıyor
Ders: Eşik, iki grubu birbirinden ayıran boşluğun içinde olmalıdır. Kuralı verinin kendisine bakarak seçtik, tahminle değil.
Geliştirme fikri
Şimdiye kadar tek özellik (ağırlık) kullandık. İkinci bir özellik ekleyebilirsin: örneğin renk. "Ağırlık 150'nin üstünde ve renk turuncuysa portakal" gibi iki koşullu bir kural, sınırdaki örneklerde daha az yanılabilir. Kuralı karmaşıklaştırmadan önce, tek özelliğin doğruluğunu ölçüp gerçekten gerekli mi diye bak.
Projeyi güçlendirme planı
Proje: Basit Sınıflandırma Deneyi için yalnız çalışan bir gösterim hazırlamak yeterli değildir. İyi bir proje; hedefi, kullanıcıyı, sınırları, test koşullarını ve başarısız denemeleri de görünür kılar. Bu genişletme çalışmasında sensör ölçümlerindeki eksik ve sıra dışı değerleri ayıklama bağlamını kullanarak temizlenmiş küçük veri tablosu, açık sınıflandırma kuralı ve hata değerlendirmesi oluştur. Dersin hedefi “Küçük bir veri setinde kural tabanlı basit bir sınıflandırıcı yapıp doğruluğunu ve yanlılığını dürüstçe değerlendir” olsa da proje sayfasında ölçülmemiş bir sonucu kesin başarı gibi yazma.
1. Proje özeti ve kapsam
Önce üç cümle yaz: Çözmek istediğin sorun nedir, bu sorun kimin için önemlidir ve ilk sürüm özellikle neyi yapmayacaktır? Kapsam dışını belirtmek projeyi küçültmez; tamamlanabilir hâle getirir. Sınıflandırma nedir? ile Günlük hayattan iki örnek arasındaki ilişkiyi projenin temel varsayımı olarak yaz ve bu varsayımı hangi testin doğrulayacağını belirt.
2. Kabul ölçütleri
- Verinin kaynağı ve amacı açık mı?
- Eksik, tekrar eden ve sıra dışı değerler işaretlendi mi?
- Kişisel bilgi kullanılmadan örnek kurulabiliyor mu?
- Eğitim ve test verisi birbirinden ayrıldı mı?
- Yanlış tahminler saklanıp nedenleri incelendi mi?
“Proje: Basit Sınıflandırma Deneyi” için kabul ölçütlerini “çalışıyor” gibi belirsiz sözcüklerle bırakma. Süre, mesafe, doğru deneme sayısı, ekran genişliği veya kullanıcı adımı gibi gözlenebilir bir ölçü seç. Ölçüm mümkün değilse en azından üç ardışık denemede aynı davranışın görülüp görülmediğini kaydet.
3. Test matrisi
| Test | Koşul | Beklenen | Gerçek sonuç | Sonraki karar |
|---|---|---|---|---|
| Normal | Standart giriş ve tam bağlantı | Temel görev tamamlanır | Test sırasında doldur | Koru veya küçük iyileştirme yap |
| Sınır | En düşük ya da en yüksek kabul edilen değer | Sistem kararlı kalır | Test sırasında doldur | Eşiği veya kuralı gözden geçir |
| Hata | Eksik, yanlış ya da beklenmeyen giriş | Güvenli ve anlaşılır tepki | Test sırasında doldur | Hata yönetimi ekle |
| Tekrar | Aynı koşulda en az üç deneme | Benzer sonuçlar | Test sırasında doldur | Tutarsızlığın kaynağını araştır |
4. Sürüm günlüğü
“Proje: Basit Sınıflandırma Deneyi” projesinin her sürümü için tarih, değiştirdiğin tek ana karar, değişikliğin nedeni ve test sonucu yaz. İlk sürümün çalışmaması başarısızlık değildir; Sınıflandırma nedir? veya Günlük hayattan iki örnek ile ilgili hangi varsayımın yeniden düşünülmesi gerektiğini gösteren veridir. Görsel kullanırken kişisel bilgi ve özel arka plan ayrıntılarını paylaşma.
5. Sunum ve öz değerlendirme
“Proje: Basit Sınıflandırma Deneyi” projesini iki dakikada anlatacak şekilde hazırlan: sorun, çözüm yaklaşımı, sensör ölçümlerindeki eksik ve sıra dışı değerleri ayıklama için en önemli test sonucu ve bir sonraki adım. “Tamamlandı” demek yerine hangi kısmın doğrulandığını ve hangi kısmın hâlâ geliştirilmesi gerektiğini açıkla.
Sık yapılan hatalar
Eğitim ve testi karıştırmak
Eşiği test verisine bakarak seçersen, yüksek doğruluk seni yanıltır. Test verisi, karar verilirken görülmemiş olmalıdır.
Doğruluğa körü körüne güvenmek
Veride 90 portakal, 10 elma olsaydı, "her şey portakal" diyen bir kural bile %90 doğruluk verirdi. Ama bu kural hiçbir elmayı bilemez. Doğruluk tek başına yeterli değildir; hangi grupta yanıldığına da bakmak gerekir.
Küçük veriden büyük sonuç çıkarmak
12 örnek, gerçek dünyayı temsil etmez. Bizim eşiğimiz bu sepette işe yarar; başka bir bahçenin meyvelerinde şaşırabilir. Az veriyle bulduğumuz kural, "her yerde doğru" demek değildir.
Yanlılığı (bias) görmezden gelmek
Eğitim verimizdeki portakalların hepsi tesadüfen çok ağırsa, sınıflandırıcı küçük portakalları elma sanır. Veri neyi gösterirse kural onu öğrenir; veri yanlıysa kural da yanlı olur.
Güvenlik notu
- Kişisel veri kullanma. Bu deneyde meyve ağırlığı gibi zararsız, uydurma sayılar kullanıyoruz. Kendi veya başkalarının adı, fotoğrafı, adresi, telefonu gibi kişisel bilgileri asla bir veri setine veya internetteki bir yapay zekâ aracına girme.
- Sonuçtan insan sorumludur. Bu sınıflandırıcı bir meyveyi yanlış etiketlerse sorun büyük değil. Ama gerçek hayatta sınıflandırıcılar insanlar hakkında kararlar verebilir (kim krediye uygun, kimin mesajı engellenmeli). Böyle kararlarda sonucu bir insan kontrol etmeli; makinenin çıktısı son söz olmamalı.
- Veri yanlıysa sonuç da yanlı olur. Önemli bir çıktıyı, özellikle biri hakkında ise, körü körüne kabul etme; nereden geldiğini ve hangi veriye dayandığını sor.
- Yapay zekâ araçlarını yaş kurallarına uyarak ve bir yetişkinle birlikte kullan.
Hata örneklerini incelemek
Modelin yalnız toplam doğruluğunu vermek yeterli değildir. Her sınıftan doğru ve yanlış örnekler ayrılır; özellikle yanlış pozitif ve yanlış negatif sonuçların hangi ortak özellikleri taşıdığı araştırılır. Arka plan, ışık, açı veya veri sayısı gibi değişkenler not edilir. Daha sonra yalnız bir değişiklik yapılır ve aynı test kümesi yeniden kullanılır.
Deneyde kişisel ya da hassas veri kullanılmaz. Modelin sınırlı eğitim örneklerinden öğrendiği ve yeni koşullarda hata yapabileceği açıkça belirtilir; sonuç gerçek kişileri değerlendiren otomatik karar sistemi olarak sunulmaz.
Ders özeti
- Sınıflandırma, bir örneği doğru etikete (gruba) yerleştirmektir; biz eşik tabanlı basit bir kuralla yaptık.
- Gerçek bir model eğitmedik; kuralı kendimiz yazdık, bu yüzden nasıl çalıştığını tam olarak biliyoruz.
- Veriyi eğitim ve test diye ayırmak, kuralın yeni örneklerde de işe yarayıp yaramadığını dürüstçe ölçmemizi sağlar.
- Doğruluk, doğru tahmin sayısının toplama oranıdır; ama tek başına yeterli değildir, dengesiz veride yanıltabilir.
- Yanlı veya küçük veri, yanlı sonuç üretir; önemli kararlarda son sözü insan söylemelidir.
Kontrol soruları
- Eğitim verisi ile test verisi arasındaki fark nedir ve testi neden ayrı tutarız?
- Eşik tabanlı sınıflandırıcımız kararı neye bakarak veriyor?
- Doğruluk 0.5 çıkarsa bu ne anlama gelir?
- 90 portakal ve 10 elmadan oluşan bir veride "her şey portakal" kuralının doğruluğu kaç olur ve bu neden yanıltıcıdır?
- Bu deneyde neden gerçek bir yapay zekâ modeli eğitmediğimizi söylüyoruz?
Cevaplar
- Eğitim verisi, eşiği seçerken baktığımız örneklerdir; test verisi, seçimden sonra daha önce görmediğimiz örneklerdir. Testi ayrı tutarız çünkü bir kuralın gerçekten iyi olup olmadığını ancak görmediği örneklerde anlayabiliriz.
- Tek bir özelliğe, meyvenin ağırlığına bakıyor; ağırlık eşiğin üstündeyse "portakal", değilse "elma" diyor.
- Örneklerin yarısını doğru, yarısını yanlış bildiği anlamına gelir. İki gruplu bir problemde bu, rastgele tahmin kadar iyidir, yani kural pek işe yaramıyordur.
- Doğruluk 0.90 (yani %90) olur çünkü örneklerin %90'ı zaten portakaldır. Yanıltıcıdır çünkü kural tek bir elmayı bile doğru bilemez; yüksek sayı, gerçek başarıyı gizler.
- Çünkü kuralı (eşiği) verinin örüntüsüne bakıp kendimiz seçtik; makine kendi kendine öğrenmedi. Bu, dürüst ve öğretici bir deneydir, gerçek bir eğitilmiş model değildir.
Kaynak ve doğrulama notu
“Proje: Basit Sınıflandırma Deneyi” dersi için doğrulama odağı Sınıflandırma nedir? ile Günlük hayattan iki örnek arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Bu modüldeki veri kümeleri eğitim amaçlı ve küçüktür; gerçek kişisel veri kullanılmamalıdır. Bir yapay zekâ sonucunun doğruluğu kadar, verinin dengesi, hataların dağılımı ve açıklanabilirliği de değerlendirilmelidir.
Sonraki ders
Proje Atölyesi modülü: Öğrendiğin kodlama, robotik ve veri fikirlerini birleştirerek baştan sona kendi projeni tasarlayıp yapacağın atölye.