SefaMerve.com ArGe Merkezinin çalışmalarından bahsettiğimiz, "Eticarette yapay Zeka Uygulamaları" başlıklı bir sunumumuz oldu. Sunumu Cüneyt bey yaptı. Sunumun ilk kısmında "Payment Anomaly" başlıklı bir kısım sonrasında genel yapılanlar anlatıldı. Ben burada İlk kısım için biraz daha teferruatlı bir açıklma yazmak istiyorum. İnşallah birilerine Faydalı olur.
Bir E-Ticaret firmasının helede Uluslararası satışı varsa pek çok kaynakdan ve çeşitli kurlarda tahsilat yapması gerekmektedir. Pek çok banka, değişik ödeme türleri ( paypal, paybyme vs... ) gibi Değişik ülkelerde çalışmaktadır. Yani sistemin sağlıklı yürüyebilmesi için pek çok tahsilat sisteminide sağlıklı yürüyor olması lazımdır.
Biz tahsilat sistemindeki olası anormalliklerin tespiti için, her türdeki alt sistem için yapılan saatlik tahsilatların toplamlarını bir zaman serisine dönüştürdük. Sonra 24 saatlik veri ile 25. saat deki değeri tahmin edecek bir model kurduk. Tahmin ve gerçek değer arasındaki belli eşik edeğerinden fazla farklılık ve bu farklılığın belli saat boyunca devam etmesinin bir anomaly olacağını varsaydık.
Çalışmamız bu anlamda klasik bir zaman serisi tahmini modeline benzetilebilir. Bir kaç özelliği var ; çok girişli, çembersel normalizsayon, gurup normalizasyonu.
Circular Normalization:
Genelde İnsan davranışları için elebtte burda bizim ana ilgimiz olan satın alma için zamanın önemi büyük. Zamanın dönügüleri var. Gün içinde bazı saatlerde satışlar artarken bazı saatlerde çok düşe biliyor. Haftanın günlerine görede bu değişimi gözlemleye biliriz, hafta içi ile hafta sonu davranış farkları olması gibi. Normalde bu döngüsel zaman değerlerinin girişi klasik kategorik veri gibi yapılmaktadır. yani mesela haftanın günleri için.Pazartesi : 0 0 0 0 0 0 1gibi Bu durumda her bir günün bir birine uzaklığı eşit olmaktadır. Oysa Cumartesi gününün Pazar gününe uzaklığı ile Çarşamba gününe uzaklığı farklıdır.
Salı : 0 0 0 0 0 1 0
...
Pazar : 1 0 0 0 0 0 0
Biz bu tip döngüsel kategorik değişkenler için Birim çember üzerinde eşit aralıklı noktalar olarak Normalize etmeyi kullandık. Üstteki grafikde olduğu gibi. Pazar Günü pazartesi ve Cumartesi gününe yakındır. Bu şekilde bir dönüşümün bir faydasıda girdi büyüklüğünün küçülmesidir. Kasik metodla kodladığımızda 7 lik vektör olarak kodlayabilirken. Çembersel Normalizasyonla 2 lik vektöre dönüştürmüş oluyoruz. Bu sayede günün hangi saati olduğunuda 24 yerine 2 lik vektör olarak kodluyoruz. Yada Ayın hangi günü olduğunuda 31 lik vektör yerine 2 lik vektör olarak kodlamış oluyoruz. Bu tip bi kodlamanın daha önce uygulandığına dair bir bilgimiz yok. İşin akademik yönünüde klasik metodlarla karşılaştırıp teferruatlı test etme imkanımız olmadı malesef. Tecrübi bir yöntem olarak bahsetmiş oluyoruz.
Grup Normalization :
Zaman serisinde tedrici genel - belki mevsimsel - bir değişim olabilmektedir. Zaman serisinin normalizasyonunda komple bütün serinin maksimum değerine göre yapılması bizce kısmen problem olabilir. Hele bu genel değeşim çok büyükse. Genel maksimuma göre normalizasyon yerine biz bu çalışmamızda giriş olarak aldığımız 24 saatlik gurubun maksimum değerine göre bir normalizasyon yapmayı tercih ettik.Multiple Input Model :
Çok girişli bir ağ yapısını kullandık. Çünkü ; Zaman serisi dışında tahmin etmememiz gereken saatin zaman döngüsünde nerede olduğunun da tahmin ile ilgili olduğunu düşündük ve onuda kattık.
İlk girdimiz zaman serisi ve 24 saatlik bir birini takip eden tahsilat değerleri LSTM ile işleniyor.
İkinci girdimiz Zaman ile ilgili verimiz 8 lik bir vektör . ( haftanın günü, saat, ayın günü, ay ) kalsik YSA katmanı - Dense layer - ile işleniyor. Sonrasında bu iki kısım birleştiriliyor.
Sonuç olarak sıradışı bir anormallik tespiti yaklaşımı üzerine bir çalışma yapmış olduk. Koda ve verilere ve sunuma şağıdaki github sayfamızdan ulaşabilirsiniz
github.com/birolkuyumcu/deep_con18_payment_anomaly_workshop
Her türlü görüş ve önerilerinizi bekleriz.