Merhaba,
Bugün, son bir yılda konuştuğum hemen her ekipte karşıma çıkan bir konuyu açmak istiyorum: yapay zeka projeleri neden çoğu zaman beklentiyi karşılamıyor?
Genelde ilk suçlanan model olur. “Belki daha büyük bir model kullanmalıyız, belki farklı bir teknik denemeliyiz.” Oysa benim gördüğüm tablo çok daha sade: sorun çoğu zaman modelin kendisinde değil, ona verdiğimiz veride.
Bu sadece bir his de değil. Gartner’ın araştırmasına göre kötü veri kalitesi, şirketlere yılda ortalama 12,9 milyon dolara mal oluyor. Yani veri kalitesi “olsa iyi olur” türünden soyut bir konu değil; doğrudan paraya, zamana ve güvene dokunan bir mesele.
Bu yazıda yapay zekanın en sessiz ama en belirleyici unsurunu, yani veri kalitesini enine boyuna konuşacağız. Önce neden bu kadar kritik olduğunu, sonra iyi verinin dört ölçütünü, ardından da kendi verinizi denetlemek için kullanabileceğiniz pratik SQL sorgularını paylaşacağım. Amacım, yazıyı bitirdiğinizde kendi tablonuza bambaşka bir gözle bakmanız.
Garbage in, garbage out: AI’da neden daha tehlikeli?
Yazılımın en eski kurallarından biri vardır: çöp girerse, çöp çıkar. Klasik yazılımda bu kuralın etkisi sınırlıdır; hatalı bir kayıt genelde tek bir hatalı sonuç üretir, fark edersiniz, düzeltirsiniz, geçer.
Yapay zekada ise iş değişir. Çünkü model veriyi tek tek işlemez; verideki örüntüleri öğrenir. Bunun anlamı şu: verinizdeki sistematik bir hata, modelin öğrendiği bir “kural” haline gelir. Model tek bir yanlış kaydı değil, o yanlışın mantığını öğrenir ve her yeni tahminde tekrar eder. Kısacası yapay zeka, kötü veriyi düzeltmez; onu ölçekler.
Somut bir örnek vereyim. Diyelim ki müşteri tablonuzda bir dönem “şehir” alanı, bir hata yüzünden hep “İstanbul” olarak doldurulmuş. Klasik bir raporda bunu fark eder, elle düzeltirsiniz. Ama bu veriyle eğitilen bir model, “müşterilerin neredeyse tamamı İstanbul’da” diye öğrenir ve İstanbul dışındaki herkese karşı sessizce körleşir. Hata artık tek bir hücrede değil, modelin dünya görüşündedir.
İyi veri neye benzer? Dört ölçüt
Bir veri setine baktığımda pratikte dört şeyi kontrol ederim. Siz de kendi verinize aynı dört soruyu sorabilirsiniz. Şimdi her birini tek tek açalım.
1. Eksiksiz mi?
Veri kalitesinin ilk ve en görünür boyutu eksiksizliktir: boş bırakılmış alanlar, yarım kalmış kayıtlar, hiç doldurulmamış kolonlar.
Sorun sadece “bilgi yok” olması değil. Asıl sorun, modelin bu boşlukla ne yapacağını bilememesi. Kimi yöntem boşluğu sıfır sayar, kimi ortalamayla doldurur, kimi de o satırı tamamen yok sayar. Hangisi olursa olsun, model gerçeği değil bir varsayımı öğrenir.
Buradaki en kritik tavsiyem şu: “boş” ile “sıfır”ı asla karıştırmayın. Bir müşterinin gelirinin 0 olması ile bilinmiyor olması bambaşka iki durumdur. Veritabanında bunu NULL ile 0 ayrımıyla net tutarsanız, modelin de eline çok daha dürüst bir veri vermiş olursunuz.
2. Tutarlı mı?
İkinci boyut tutarlılık: aynı bilginin tek bir biçimde tutulması.
“İstanbul”, “Ist.”, “İST”, “istanbul”, “34”… İnsan için hepsi aynı şehir. Model için beş ayrı kategori. Bu dağınıklık, modelin aynı şeyleri birbiriyle ilişkilendirmesini engeller ve veriyi olduğundan çok daha “çeşitli” gösterir.
Tutarsızlık yalnızca yazımda olmaz; birimlerde de olur. Bir kolonda kimisi metre kimisi santimetre, kimisi TL kimisi dolar girmişse, model bunu anlamaz; yalnızca çıplak sayıları görür. Bu yüzden tek bir standart belirleyip tüm veriyi ona çekmek, temizliğin en kazançlı adımlarından biridir.
3. Güncel mi?
Üçüncü boyut güncellik: verinin bugünü ne kadar yansıttığı.
Yapay zeka geçmişten öğrenir ama biz ondan geleceği tahmin etmesini bekleriz. Bu ikisi arasında köprü kuran şey, verinin güncelliğidir. İki yıl önceki alışveriş davranışıyla bugünün müşterisini tahmin etmeye çalışmak, eski bir haritayla yeni bir şehirde yön bulmaya benzer.
Özellikle hızlı değişen alanlarda (fiyatlar, stok, kullanıcı davranışı) verinin ne sıklıkla güncellendiği, modelin ne kadar işe yarayacağını doğrudan belirler. “Bu tablo en son ne zaman güncellendi?” sorusunun cevabını her tablo için bilmelisiniz.
4. Dengeli mi?
Dördüncü ve bence en sinsi boyut denge: verinin gruplar arasında adil dağılması.
Eğer verinizin büyük çoğunluğu tek bir gruptan, tek bir bölgeden ya da tek bir senaryodan geliyorsa, model o çoğunluğu “normal”, geri kalanı “istisna” sayar. Azınlıkta kalan durumları ya yanlış tahmin eder ya da tamamen gözden kaçırır.
Bunun klasik örneği, dolandırıcılık tespiti gibi nadir olayların öğrenilmesidir. Verinin yüzde 99’u “normal işlem” ise, hiçbir şey yapmadan “her işlem normaldir” diyen bir model bile yüzde 99 doğruluk gösterir. Kağıt üzerinde harika görünür; ama asıl yakalaması gereken yüzde 1’i kaçırdığı için işe yaramaz. Dengesiz veri, yüksek ama yanıltıcı bir başarı üretir. Bu yüzden tek bir başarı oranına bakıp “modelimiz çok iyi” demeden önce, verinin dağılımına bakmak şart.
Kendi verinizi SQL ile denetleyin
Teori güzel ama asıl iş veriye bakmakta. Aşağıdaki sorguları hiçbir şey kurmadan deneyebilmeniz için, önce küçük bir örnek tablo oluşturuyorum. Bu sayede tüm bloklar kopyala-çalıştır mantığında, hatasız döner. Kendi verinizde ise
#musteriler
yerine kendi tablo adınızı yazmanız yeterli. Sorgular SQL Server için yazıldı ama mantık her veritabanında aynı.
IF OBJECT_ID('tempdb..#musteriler') IS NOT NULL DROP TABLE #musteriler; CREATE TABLE #musteriler ( id INT IDENTITY(1,1) PRIMARY KEY, email NVARCHAR(100), telefon NVARCHAR(20), sehir NVARCHAR(50), segment NVARCHAR(20), guncelleme_tarihi DATETIME ); INSERT INTO #musteriler (email, telefon, sehir, segment, guncelleme_tarihi) VALUES (N'[email protected]', N'5550001122', N'İstanbul', N'Bireysel', GETDATE()), (N'[email protected]', N'5550001122', N'Ist.', N'Bireysel', GETDATE()), (N'[email protected]', NULL, N'İST', N'Bireysel', DATEADD(MONTH, -3, GETDATE())), (N'[email protected]', N'5550003344', NULL, N'Bireysel', DATEADD(YEAR, -2, GETDATE())), (NULL, N'5550005566', N'Ankara', N'Kurumsal', DATEADD(YEAR, -1, GETDATE())), (N'[email protected]', N'5550007788', N'İzmir', N'Bireysel', GETDATE());
1. Eksiksizlik: Hangi kolonda ne kadar boş kayıt var?
COUNT(*)
tüm satırları,
COUNT(kolon)
ise yalnızca dolu olanları sayar; aradaki fark size boş kayıt sayısını verir.
SELECT COUNT(*) AS toplam_kayit, COUNT(*) - COUNT(email) AS email_bos, COUNT(*) - COUNT(telefon) AS telefon_bos, COUNT(*) - COUNT(sehir) AS sehir_bos FROM #musteriler;
2. Tutarlılık: Aynı şehrin kaç farklı yazımı var? Sonuç listesinde “Ist.”, “İST” gibi varyasyonları gözünüzle yakalarsınız.
SELECT sehir, COUNT(*) AS adet FROM #musteriler GROUP BY sehir ORDER BY adet DESC;
3. Tekrar eden kayıtlar: Aynı e-posta birden fazla kez geçiyorsa, muhtemelen aynı müşteri birden çok kez kaydedilmiştir. Bu, hem raporları hem modeli yanıltır.
SELECT email, COUNT(*) AS tekrar FROM #musteriler GROUP BY email HAVING COUNT(*) > 1 ORDER BY tekrar DESC;
4. Güncellik: Kaç kayıt son bir yıldır hiç güncellenmemiş? Bu sayı, verinizin ne kadarının “bayat” olduğunu gösterir.
SELECT COUNT(*) AS bayat_kayit FROM #musteriler WHERE guncelleme_tarihi < DATEADD(YEAR, -1, GETDATE());
5. Denge: Kayıtlar segmentlere nasıl dağılmış? Yüzde kolonu, verinin tek bir gruba yığılıp yığılmadığını net gösterir.
SELECT segment, COUNT(*) AS adet, CAST(100.0 * COUNT(*) / SUM(COUNT(*)) OVER () AS DECIMAL(5,1)) AS yuzde FROM #musteriler GROUP BY segment ORDER BY adet DESC;
Bu beş sorguyu çalıştırdığınızda çıkan tablo, çoğu zaman insanı şaşırtır. “Bizim veri temizdir” diyen ekiplerin bile yüzlerce boş kayıt, onlarca farklı şehir yazımı ve epeyce tekrar eden müşteri bulduğuna defalarca şahit oldum. Profesyonel tarafta bu düzenli kontroller veritabanı sağlık taraması olarak adlandırılır.
Veriyi temizlerken üç altın kural
Sorunları gördükten sonra sıra temizliğe gelir. Burada acele etmek, bazen sorunun kendisinden daha pahalıya patlar. Yıllar içinde benimsediğim üç kural:
- Ham veriyi asla kaybetmeyin. Temizliği her zaman bir kopya üzerinde yapın. Orijinali saklayın ki bir hata yaptığınızda geri dönebilesiniz.
- Otomatik düzeltmeye körü körüne güvenmeyin. “Boşları ortalamayla doldur” gibi kısayollar bazen veriyi düzeltmez, gizler. Her düzeltmenin neyi varsaydığını bilin.
- Temizliği tek seferlik bir iş değil, sürekli bir süreç olarak kurun. Veri her gün akıyorsa, kalite kontrolü de her gün çalışmalı. Yukarıdaki sorguları bir görünüme ya da zamanlanmış işe bağlayıp düzenli izleyebilirsiniz.
Bu süreci tek başınıza taşımak zorunda değilsiniz
Buraya kadar anlattıklarım kulağa sade gelebilir ama işin zor tarafı tek seferlik temizlik değil, bunu sürekli ayakta tutmaktır. Veri her gün akar; her yeni kayıtla birlikte yeni boşluklar, yeni tutarsızlıklar, yeni tekrarlar girer. Kalite, bir kez ulaşılan değil, sürekli korunan bir durumdur. Bu da düzenli izleme, uzmanlık ve zaman ister.
İşte tam bu noktada, veritabanı tarafını profesyonel bir ekibe emanet etmek mantıklı hale geliyor. DMC Bilgi Teknolojileri, Yönetilen Veritabanı Hizmeti ile tam olarak bu yükü üstleniyor:
- Veritabanlarınızın sağlığı, performansı ve kalitesi düzenli izlenir; sorunlar siz fark etmeden önce yakalanır.
- Yedekleme, güncelleme, güvenlik ve erişim gibi kritik işler uzman veritabanı yöneticileri tarafından sürekli yürütülür.
- Eksik, tutarsız ve tekrar eden kayıtlar gibi kalite sorunları düzenli denetimlerle gündemde tutulur.
- Siz iş ve yapay zeka tarafına odaklanırken, verinin temeli sağlam ve güncel kalır.
Bu modelin klasik destek hizmetinden farkını merak ediyorsanız, yönetilen servis ile destek hizmetini karşılaştıran şu yazı iyi bir başlangıç olabilir.
Yani yapay zekanın ihtiyaç duyduğu o “iyi veri”, aslında iyi yönetilen bir veritabanının doğal sonucudur. Veri tarafını sağlam bir zemine oturtmak isterseniz, DMC’nin yönetilen veritabanı hizmetine göz atabilir, ihtiyacınızı konuşmak için DMC ekibiyle iletişime geçebilirsiniz.
Nereden başlamalı?
Bir yapay zeka projesine girişmeden önce önerim net: paranızı ve zamanınızı önce verinize ayırın. Pratik bir sıra:
- Önce verinizi yukarıdaki sorgularla denetleyin, sorunları görünür kılın.
- Eksik ve tekrar eden kayıtları temizleyin.
- Tutarsız yazımları ve birimleri tek bir standarda oturtun.
- Verinin nasıl ve ne sıklıkla güncellendiğini netleştirin.
- Dağılımı kontrol edin; dengesizlik varsa bunu modelden önce konuşun.
- Ancak ondan sonra model tarafına geçin.
Yapay zekanın veritabanından beklediği yeni sorumlulukları daha geniş ele aldığım AI Agent çağında veritabanının yeni sınavı yazısına da göz atabilirsiniz.
Sıkça Sorulan Sorular
Veri kalitesi nedir?
Veri kalitesi, bir veri setinin amacına ne kadar uygun olduğunu anlatır. Genellikle eksiksizlik, tutarlılık, güncellik ve denge gibi ölçütlerle değerlendirilir. Kaliteli veri; eksiksiz, tek biçimli, güncel ve dengeli olan veridir.
Veri kalitesi yapay zekayı nasıl etkiler?
Yapay zeka, öğrendiği veri kadar iyidir. Kötü veri, modelin yanlış örüntüler öğrenmesine ve bu hataları her tahminde tekrarlamasına yol açar. Bu yüzden veri kalitesi, çoğu zaman model seçiminden bile daha belirleyicidir.
Veri kalitesi nasıl ölçülür?
Pratikte dört soruyla başlayabilirsiniz: veri eksiksiz mi, tutarlı mı, güncel mi ve dengeli mi? Bu yazıdaki SQL sorgularıyla boş kayıtları, tutarsız yazımları, tekrar eden kayıtları ve dağılımı hızlıca ölçebilirsiniz.
Veri kalitesini iyileştirmeye nereden başlamalı?
Önce verinizi denetleyip sorunları görünür kılın; ardından eksik ve tekrar eden kayıtları temizleyin, tutarsız değerleri tek standarda çekin. Bu süreci sürekli kılmak için yönetilen veritabanı hizmeti gibi profesyonel bir destek almayı değerlendirebilirsiniz.
Özet
Yapay zekanın görünen yüzü modeller, demolar, etkileyici cevaplardır. Görünmeyen ama asıl belirleyici yüzü ise veridir. En pahalı model bile kötü veriyi kurtaramaz; ama veri tarafı sağlamsa, yapay zeka zaten işini yapar.
İyi haber şu: veri kalitesi, üzerinde gerçekten kontrol sahibi olduğunuz bir alan. Bugün anlattığım dört soruyu kendi tablonuza sormak, çoğu projede en değerli ilk adımdır.
Siz hangi “çöp veri” hikayesiyle karşılaştınız? Yorumlarda paylaşırsanız çok merak ederim. Bir sonraki yazıda görüşmek üzere 🙂
