Skip to content

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

WARRANTYAI — Garanti Talebi Otomatik Karar Sistemi

Ford Otosan staj projesi · Garanti taleplerini kaydedildikleri anda otomatik karara bağlayan, sızıntısız ve açıklanabilir bir makine öğrenmesi hattı.

Bir garanti talebi açıldığında sonucu bugün ortalama 16 gün sonra belli oluyor. WARRANTYAI bu kararı talep kaydedildiği anda üretir ve üç sınıftan birine atar: ONAY, MANUEL_ONAY, RED.


İçindekiler


Problem

Talep hacmi ~173 talep/gün, tamamı elle karara bağlanıyor
Karar süresi medyan 16 gün (dt_completed_date − dt_registration_date)
Sonuç dağılımı ONAY %73,2 · MANUEL_ONAY %12,1 · RED %14,8

Taleplerin büyük çoğunluğu sonunda zaten onaylanıyor; buna rağmen hepsi aynı manuel süreçten geçiyor. Amaç kararı hızlandırmak değil, otomatikleştirmek.

Sonuçlar

Aşağıdaki değerler sentetik veri üzerinde ölçülmüştür (bkz. Bilinen sınırlar).

Metrik Değer
ROC-AUC (ovr, macro) 0,623
Accuracy 0,724
Baseline ("hep ONAY") 0,723
RED kararı isabeti (precision) %72,6 — taban oranın ~4,7 katı

Accuracy'nin baseline'a eşit görünmesi bir eksiklik değil: model dürüst olasılık ürettiği ve ONAY sınıfı %73 çoğunlukta olduğu için argmax matematiksel olarak çoğunluğa meyleder. Bu yüzden karar argmax ile değil, kalibre olasılık üzerinde eşik ile verilir (bkz. Karar kuralı).

Projenin temel ilkesi

Bir özelliğin modele girmesi için tek kriter vardır: "Bu bilgi skorlama anında elimde var mı?"

Veri setindeki garanti kapsam bayrakları (ccd_bl_warranty, wd_bl_warranty) modele eklendiğinde skor uçuyordu. Ancak bu bayrak "bu iş garanti kapsamında mı?" sorusunun cevabı — yani kararın kendisi. Skorlama anında henüz mevcut değil.

Kontrollü deney (aynı model, aynı bölünme, 9 özellik):

ccd_bl_warranty = 0  (31.652 talep)  ->  RED %92,1
ccd_bl_warranty = 1  (167.206 talep) ->  RED  %0,1

DÜRÜST    (9 özellik)      ROC 0,604
SIZINTILI (+3 bayrak)      ROC 0,828      +0,224

Tam hatta da aynı desen görüldü: dürüst 0,62 → bayraklı 0,85. 0,62 seçildi; 0,85 raporlamak yanıltıcı olurdu.

Tasarım kararları

1. Talep seviyesine toplulaştırma

Ham veri satır seviyesinde (parça / işçilik). Karar ise talep seviyesinde veriliyor. 1.000.000 satır → 198.858 benzersiz talep. Aynı talebin satırlarının eğitim ve teste dağılması böylece engellenir.

2. Point-in-time doğruluk

Bayi geçmişi güçlü bir sinyal, ama "geçmişe bakmak" tek başına yetmiyor — o bilginin skorlama anında bilinebilir olması gerekiyor. Bu yüzden iki ayrı zaman ekseni kullanılır:

Özellik tipi Eksen Gerekçe
Adet / hacim (dealer_claim_count_30d) reg_date "kaç talep açıldı" kayıt anında bilinir
Sonuç oranları (dealer_prior_red_rate) comp_date sonuç ancak karar tarihinde bilinir

Naif kurguda 30 günlük pencerenin %58'i gelecekten geliyordu. Düzeltmenin maliyeti yalnızca %2,3 (payda 114,5 → 111,9): küme küçülmüyor, kayıyor.

Kural: geç kalmak güvenli, erken bilgi sızıntıdır.

3. Zaman bazlı doğrulama

Rastgele bölme geleceği görmek demektir. Eğitim/test ayrımı reg_date'in %80 kuantili ile yapılır (159.086 / 39.772), çapraz doğrulamada TimeSeriesSplit kullanılır.

4. Kalibrasyon

class_weight="balanced" ağacın azınlık sınıfları öğrenmesini sağlar, ama olasılıkları bozar. CalibratedClassifierCV(method="sigmoid", cv=5) bu bozulmayı gerçek 73/12/15 dağılımına geri eşler. Model seçimi de teslim edilen çıktıyla uyumlu olsun diye scoring="neg_log_loss" ile yapılır.

5. Karar kuralı: argmax değil, eşik

risk = 1 − P(ONAY)

risk <  eşik  ->  otomatik ONAY
risk >= eşik  ->  durdur

1 − P(ONAY), MANUEL ve RED olasılıklarını havuzlar; P(RED) tek başına bakıldığında kaçan talepleri yakalar. Eşik bir iş parametresidir — değiştiğinde model yeniden eğitilmez:

Risk iştahı Eşik Durdurulan İsabet Yakalanan risk
Çok sıkı 0,525 398 %72,6 %2,6
Sıkı 0,501 795 %68,3 %4,9
Dengeli 0,451 1.989 %63,2 %11,4
Geniş 0,395 3.977 %56,2 %20,3

6. Açıklanabilirlik ve izlenebilirlik

SHAP ile her karar gerekçelendirilebilir; MLflow ile her deney (parametre, metrik, artifact) yeniden üretilebilir. SHAP aynı zamanda bir sızıntı dedektörü: beklenmedik bir kolon zirveye çıkıyorsa orada bir sorun vardır.

Kurulum

pip install pandas numpy scikit-learn lightgbm mlflow matplotlib scipy sentence-transformers
pip install shap          # opsiyonel, yalnızca --shap için

Kullanım

# Varsayılan çalıştırma (embedding + kalibrasyon açık)
python modelPipeline.py

# Gerçek veriye yönlendir
python modelPipeline.py --data /yol/gercek_veri.csv

# Metin özelliği kaynağını seç
python modelPipeline.py --text-mode tfidf      # tfidf | embedding | both | none

# Arama bütçesini küçült (hızlı deneme)
python modelPipeline.py --n-iter 8

# SHAP analizi (yavaş)
python modelPipeline.py --shap

# Kalibrasyonu kapat (karşılaştırma amaçlı)
python modelPipeline.py --no-calibration
Argüman Varsayılan Açıklama
--data ford_warranty_synthetic_1m_signal.csv Eğitim CSV yolu
--text-mode embedding tfidf | embedding | both | none
--n-iter 30 RandomizedSearchCV deneme sayısı
--no-calibration kapalı Sigmoid kalibrasyonu devre dışı bırakır
--shap kapalı SHAP katkı analizi üretir

Çıktılar

Her çalıştırma Warranty_Ai deneyi altında MLflow'a kaydedilir.

mlflow ui --backend-store-uri sqlite:///mlflow.db

Metrikler: roc_auc_ovr_macro, pr_auc_macro, accuracy, baseline_acc_all_onay, precision_macro, recall_macro, brier_mean ve sınıf bazında precision_* / recall_* / f1_*.

Artifact'lar: confusion_matrix.png, classification_report.txt, feature_importance.csv, num_features.txt, cat_features.txt, text_features.txt — --shap ile ayrıca shap_summary_bar.png, shap_beeswarm_RED.png, shap_beeswarm_MANUEL.png, shap_importance.csv.

Veri şeması

Hat şema-esnektir: başlık önce okunur, REQUIRED_COLS kontrol edilir, eksik opsiyonel kolonlar uyarıyla atlanır. Zorunlu kolonlar:

sq_claim_id                    talep kimliği (toplulaştırma anahtarı)
cd_claim_status_description    hedef (ONAY / MANUEL_ONAY / RED)
cd_line_type                   satır tipi (3 = işçilik, 4 = parça)
rf_org_unit_id                 bayi
wo_open_date                   iş emri açılış tarihi
dt_registration_date           talep kayıt tarihi — SKORLAMA ANI
dt_completed_date              karar tarihi — sonuç oranlarının ekseni
cd_vehicle_group / cd_model / cd_model_year / cd_claim_type
sq_work_order_detail_id        detay sayısı
wo_ch_line_desc                arıza açıklaması (metin)

⚠️ cd_line_type için 3 = işçilik, 4 = parça varsayılır. Kurumsal şemada kodlar farklıysa parça/işçilik türevi ~10 özellik sessizce sıfırlanır — hata vermez, yalnızca skor düşer. Gerçek veriye geçerken kod listesi doğrulanmalıdır.

Bilinen sınırlar

Bulgu Sonuç
Veri sentetiktir Tüm metrikler sentetik üretim üzerinde. Gerçek Ford performansı olarak yorumlanmamalıdır.
MANUEL_ONAY öğrenilemiyor Her dilimde χ²/dof ≈ 1,0 — jeneratör artefaktı. Gerçek tetikleyici muhtemelen bir tutar eşiği; o kolon veri setinde yok.
21 benzersiz metin 1M satırda yalnızca 21 farklı açıklama var. Embedding katkısı +0,002 ROC ile sınırlı kaldı; yöntem doğru, veri çeşitliliği yetersiz.
ROC tavanı ~0,65 Bayraksız ölçülen tavan. 0,623 ile tavana yakınız; daha fazlası ancak sızıntıyla mümkün.

Bu nedenle yatırım skora değil mimariye yapıldı: sızıntı savunması, point-in-time doğruluğu, şema esnekliği, kalibrasyon. Sentetikte ölçülen her şey geçicidir; taşınan tek şey yapıdır.

Yol haritası

Üretime geçiş

  • Veri sözleşmesi ve gerçek veri pilotu
  • Purged / embargoed CV ile zaman sızıntısının kapatılması
  • Karar eşiğinin maliyet verisiyle kalibre edilip üretime alınması
  • Model başarısının sürekli izlenmesi (drift)

Planlanan yetenekler

  • Aktif öğrenme — verilen kararların gerçek sonuçları modele geri beslenir
  • Serbest metin zenginleştirme — şikâyet ile talep edilen parça arasındaki tutarsızlık
  • Tutar-ağırlıklı eşik — P(riskli) × talep tutarı ile beklenen kayba göre karar
  • Belirsizlik nicelemesi — konformal tahminle emin olunmayan talepler MANUEL_ONAY'a
  • Ağ ve anomali tespiti — bayi–araç–parça ilişkilerinin graf olarak modellenmesi
  • Karşı-olgusal açıklama — "şu koşul değişseydi ONAY olurdu"

Numan Arif Deniz · Ford Otosan Digital Products

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages