İçeriğe geç
AI / ML

Asıl kolay kısım modeldir

Bir taze gıda operatörü bize basit bir soruyla geldi: yarınki talebi yemek bazında, lokasyon bazında, marjı çöpe atmayı ve öğlen stoksuz kalmayı bırakacak kadar isabetli tahmin edebilir misiniz? On sekiz ay sonra platform, üretimde %98 isabetle tahmin yapıyor. İşin en zor kısmının makine öğrenmesi olduğu varsayılır. Değildi.

Hariom Kesharwani
Hariom Kesharwani
Kurucu
YayımlandıQ2 2026
Okuma12 min

Bir taze gıda operatörü bize basit bir soruyla geldi: yarınki talebi yemek bazında, lokasyon bazında, marjı çöpe atmayı ve öğlen stoksuz kalmayı bırakacak kadar isabetli tahmin edebilir misiniz? On sekiz ay sonra platform, üretimde %98 isabetle tahmin yapıyor. İşin en zor kısmının makine öğrenmesi olduğu varsayılır. Değildi.

Tahmini yapan model, üzerine birkaç mevsimsellik değişkeni eklenmiş bir gradient boosted regresördür. Yetkin bir veri bilimci bu aileden bir şeyi bir öğleden sonrada ayağa kaldırabilir. Saygın bir ilk sürümü üç haftadan kısa sürede elde etmiştik — geri test üzerinde odadaki herkesin başını sallatacak kadar isabetli.

Ardından beş ay boyunca, «isabetli bir geri testi» «bir operasyon yöneticisinin gününü üzerine kurduğu bir rakama» dönüştüren her şeyi inşa ettik. Bu boşluk işin ta kendisidir ve neredeyse hiç kimse bundan söz etmez, çünkü göz alıcı değildir. İşte burada.

01Üç haftalık model

İstikrarlı ve iyi kayıt altına alınmış bir işletmenin talebini tahmin etmek, açıkçası çözülmüş bir problemdir. Bir hedefiniz (satılan birim), bir takviminiz ve bir yığın geçmiş satırınız var. Birkaç düzine değişken tasarlarsınız — haftanın günü, gecikme pencereleri, hareketli ortalamalar, resmi tatiller, bir hava durumu birleştirmesi — ve etkileşimleri bir boosting kütüphanesinin bulmasına izin verirsiniz. Projeler matematikte ölmez.

Üç haftanın bize gerçekten kazandırdığı şey yalnızca sinyalin var olduğuna dair kesinlikti. Geri test, girdiler temiz olduğu sürece talebin bir iki yüzde puanı yanılma payıyla tahmin edilebilir olduğunu söylüyordu. Bu, yeşil ışıktır. Ürün değildir.

Tuzak

İyi bir geri test rakamı, makine öğrenmesindeki en tehlikeli üründür. Bitiş çizgisi gibi görünür, oysa başlangıç tabancası kadardır ancak. Geri testler, cevabı zaten bilen bir insan tarafından temizlenmiş, birleştirilmiş ve zaman içinde hizalanmış veriler üzerinde çalışır. Üretimin bu lükslerin hiçbiri yoktur.

02Beş ay nereye gitti

İşte sonraki beş ayın dürüst dökümü. Bunların hiçbiri modelleme değil. Hepsi, modeli kullanılabilir kılan şey.

  1. Gerçeğe dayanan bir veri alımı. Satış akışları geç, çift ya da hiç gelmez. Bir POS yeniden başlar ve bir önceki günü tekrar oynatır. Güvenle yeniden çalıştırılabilen ve güvenmediği satırları eğitim setini zehirlemek yerine karantinaya alan idempotent bir veri alımı inşa ettik.
  2. Belleği olan bir özellik deposu. Modelin üzerinde eğitildiği değişkenlerin, tahmin anında, yalnızca o anda gerçekten elinizde olacak verilerle hesaplanabilir olması gerekir — geleceğe göz atmadan. Bu point-in-time doğruluğunu zorunlu kılmak haftalarca süren bir iş oldu ve ilk geri testi şişiren iki sızıntıyı yakaladı.
  3. Geri doldurma ve yeniden oynatma. Bir lokasyonun geçmişi yanlış olduğunda, canlı sistemi durdurmadan o lokasyon için akış aşağısındaki tüm tahminleri yeniden oluşturmamız gerekiyordu. Yeniden oynatma, kimsenin demosunu yapmadığı ama herkesin ihtiyaç duyduğu bir tesisattır.
  4. Özelliklerden önce izleme. Sürüklenme ve tazelik alarmlarını, arayüzün yarısını teslim etmeden önce teslim ettik. Sessizce yanlış olan bir tahmin, görünür biçimde eksik olan bir tahminden daha kötüdür.
  5. İnsan geçersiz kılması. Yeni bir lokasyon açılır, bir festival gelir, bir yol kapanır. Model bunu bilemez. Planlamacıların, rakamı ayarlayacak ve sistemin bu ayarlamadan öğrenmesini sağlayacak yetkili bir yola ihtiyacı vardı.

Model bir soruyu yanıtlar. Platform, hangi soruyu, hangi verilerle, kim için ve cevap yanlış olduğunda ne olacağını belirler.

— Asıl işin sarmalama olması üzerine

03Veri sözleşmesi

İnşa ettiğimiz en yüksek kaldıraçlı şey bir model iyileştirmesi değildi. Bir veri sözleşmesiydi: her bir kaynak ile boru hattımız arasında açık ve doğrulanmış bir şema sözleşmesi. Sütun türleri, izin verilen aralıklar, tazelik pencereleri, null değer politikaları — hepsi bildirilmiş, hepsi kapıda denetlenmiş.

Sözleşmeden önce, bir POS sağlayıcısı bize haber vermeden bir para birimi alanını kuruştan dolara değiştirdiği için bir tahmin sessizce bozulabiliyordu. Sözleşmeden sonra bu değişiklik, veri alımında adlandırılmış ve yükseltilmiş bir hatayla reddedilir — ve özgüvenli ama yanlış yeni bir tahmin yerine son iyi tahmin ekranda kalır.

contract · sales_daily
# her kaynak, eğitimi zehirledikten sonra değil, kapıda doğrulanır
sales_daily:
  units:        int  >= 0      # negatifleri reddet — iadeler başka yere gider
  revenue:      decimal(10,2)  # kuruş → v3'te işaretlendi, artık zorunlu
  site_id:      fk(sites)      # bilinmeyen lokasyon → karantina, nöbetçiye yükselt
  recorded_at:  freshness <= 6h # bayat akış → son iyi tahmini koru
on_violation: quarantine + alert  # asla: sessizce onun üzerinde eğitme

Teslim ettiğimiz her üretim ML sisteminin göz alıcı olmayan kalbi budur. Model bir fonksiyondur; sözleşme ise fonksiyonun, beklemek üzere eğitildiği girdilerle beslenmesini güvence altına alan şeydir. Bunu atlarsanız bir tahmin platformunuz olmaz — çoğu zaman doğru cevap veren, çok pahalı bir rastgele sayı üreteciniz olur.

04Sürüklenme bir özelliktir, bir başarısızlık değil

Her model bozulur. Zevkler değişir, yeni bir menü gelir, bir rakip karşıya açılır. Soru asla dünyanın modelinizin altından kayıp kaymayacağı değildir — onu bir gösterge panosundan mı yoksa öfkeli bir telefondan mı öğreneceğinizdir.

Sürüklenme tespitini birinci sınıf bir ürün özelliği olarak ele alıyoruz. Platform, canlı girdi dağılımlarını ve canlı hatayı eğitim referanslarıyla sürekli karşılaştırır. Biri ya da diğeri bir eşiği aştığında şu üç şeyi, bu sırayla yapar:

  • Birine haber verir — belirli bir insana, lokasyon, metrik ve ne kadar hareket ettiği bilgisiyle.
  • Çıktıyı korur — güven aralıklarını genişleterek ya da artık ekstrapolasyon yapan bir modele güvenmek yerine daha basit ve daha sağlam bir referansa geri çekilerek.
  • Bir yeniden eğitim planlar — yeni verilerle, orijinalin geçmesi gereken aynı geri test eşiğine bağlanarak.
98%Tahmin isabeti

Yalnızca geri testte değil, üretimde de korunan.

−58%Stok tükenmeleri

Öğlen vakti boş dolaplar, yarıdan fazla azaldı.

−41%Aşırı stok

Eskiden gün sonunda çöpe atılan marj.

Manşet rakamın — %98 — en ilginç olan olmadığına dikkat edin. İlginç rakamlar onu çevreleyen ikisidir; çünkü işletmenin hissettiği şey onlardır. İsabet girdidir; daha az israf ve daha az stok tükenmesi çıktıdır. Birincisini optimize edip ikincisini görmezden gelen bir platform, bir laboratuvar projesidir.

05Birinin sabah 8'de baktığı gösterge panosu

Tahmin, bir servisin başında, bir tablette, elinde kahveyle, doksan saniyede bir mutfak şefi tarafından tüketilir. Bu kısıt, model mimarisinden daha fazla kararı şekillendirdi.

Cevabın bir olasılık dağılımı değil, bir miktar olmasını gerektiriyordu. «Katılmıyorum, işte nedeni»nin tek bir dokunuşa sığmasını gerektiriyordu. Ekranın dünkü tahmini gerçekte ne olduğuyla karşı karşıya göstermesini gerektiriyordu; çünkü güven, özgüvenli olunarak değil, görünür biçimde hesap verilebilir olunarak kazanılır. Üzerine yaslanan kişiye geçmiş performansını gösteremeyen bir model, bir haftadan kısa sürede sessizce göz ardı edilir.

Gerçek kabul testi

F1 skoru değil. RMSE değil. Kabul testi, ikinci haftada bir mutfak şefinin «evet, artık sadece dediğini yapıyorum» demesiydi. Bu cümle herhangi bir çevrimdışı metrikten daha değerlidir ve onu yalnızca son doksan saniyeyi modeli tasarladığınız kadar özenle tasarlayarak kazanırsınız.

06Geçmişteki kendimize notlar

Bu biçimde bir şeye başlamak üzereyseniz, on sekiz ay önce başlayan ekibe söyleyeceklerimiz şunlar:

  • Modeli değil, sarmalamayı bütçeleyin. Modelin eforun %15'i olduğunu varsayın ve kalan %85'i bilinçli olarak planlayın. Teslim tarihlerini kaçıran ekipler, bunun tersini bütçeleyenlerdir.
  • Önce veri sözleşmesini yazın. Tek bir değişkenden bile önce. Geri testinizdeki bir sızıntıyı su yüzüne çıkaracak ve savunamayacağınız bir rakamı teslim etmekten sizi kurtaracaktır.
  • Arayüzden önce izlemeyi teslim edin. Göremediğinizi işletemezsiniz ve kimsenin fark etmediği yanlış bir tahmin, sözleşmeleri kaybettiren başarısızlık türüdür.
  • Geçersiz kılmayı tasarlayın. İnsanlar her zaman modelin bilmediği şeyleri bilecektir. Onlara yetkili bir kol verin ve ondan öğrenin; aksi hâlde tüm sistemi bir elektronik tabloda atlatırlar.
  • Modeli ekranda hesap verebilir kılın. Geçmişini tahmininin yanında gösterin. Güven, bir matematik meselesi olduğu kadar bir arayüz kararıdır.

Makine öğrenmesi kolay kısımdı. Bunu modeli küçümsemek için değil — açıkçası iyidir — zorluğun gerçekte nerede yattığını göstermek için söylüyoruz. Şişirilen söylem üç haftayı satar. Beş ay ise bir mühendislik ekibine asıl bunun için ödeme yaparsınız.

Hariom Kesharwani
Yazan

Hariom Kesharwani

Kurucu

Hariom Kesharwani, 2017 yılında kurduğu kurumsal yazılım şirketi CODT Technologies'in kurucusudur. Mobil, SaaS ve yapay zeka projelerinde bizzat sahada çalışarak girişimcilerin ve kurumların kalıcı, üretime hazır sistemler geliştirmesine yardımcı olur.

Aklınızda bir proje mi var?

Bize anlatın — uygunluk ve kapsam hakkında dürüst bir değerlendirmeyle bir iş günü içinde yanıt vereceğiz.