Siteye izinsiz girenlerle mücadele etmek için otomatik bir sistemin oluşturulması (dolandırıcılık)

Yaklaşık altı aydır dolandırıcılıkla (dolandırıcılık faaliyeti, dolandırıcılık vb.) mücadele etmek için herhangi bir başlangıç ​​altyapısı olmadan bir sistem oluşturuyorum. Sistemimizde bulduğumuz ve uyguladığımız günümüz fikirleri, birçok dolandırıcılık faaliyetini tespit etmemize ve analiz etmemize yardımcı oluyor. Bu yazımda teknik kısma girmeden, takip ettiğimiz ilkelerden ve sistemimizin şu anki durumuna ulaşmak için neler yaptığımızdan bahsetmek istiyorum.

Sistemimizin ilkeleri

"Otomatik" ve "sahtekarlık" gibi terimleri duyduğunuzda büyük ihtimalle makine öğrenimi, Apache Spark, Hadoop, Python, Airflow ve Apache Vakfı ekosistemi ile Veri Bilimi alanındaki diğer teknolojiler hakkında düşünmeye başlarsınız. Bu araçları kullanmanın genellikle bahsedilmeyen bir yönü olduğunu düşünüyorum: Bunları kullanmaya başlayabilmeniz için kurumsal sisteminizde belirli önkoşulların olması gerekir. Kısaca data lake ve ambar içeren kurumsal bir veri platformuna ihtiyacınız var. Peki ya böyle bir platformunuz yoksa ve yine de bu uygulamayı geliştirmeniz gerekiyorsa? Aşağıda paylaştığım ilkeler, işe yarayan bir fikir bulmak yerine fikirlerimizi geliştirmeye odaklanabileceğimiz bir noktaya ulaşmamıza yardımcı oldu. Ancak bu bir proje platosu değil. Planda hâlâ teknolojik ve ürün açısından pek çok şey var.

İlke 1: Önce İş Değeri

Tüm çalışmalarımızda “iş değerini” ön plana koyuyoruz. Genel olarak herhangi bir otomatik analiz sistemi, yüksek düzeyde otomasyona ve teknik karmaşıklığa sahip karmaşık sistemler grubuna aittir. Sıfırdan oluşturursanız eksiksiz bir çözüm oluşturmak çok zaman alacaktır. İş değerini ilk sıraya, teknolojik bütünlüğü ise ikinci sıraya koymaya karar verdik. Gerçek hayatta bu, ileri teknolojiyi dogma olarak kabul etmediğimiz anlamına gelir. Şu anda bizim için en iyi olan teknolojiyi seçiyoruz. Zamanla bazı modülleri yeniden uygulamamız gerekecek gibi görünebilir. Bu bizim kabul ettiğimiz uzlaşmadır.

İlke 2: Artırılmış zeka

Makine öğrenimi çözümlerinin geliştirilmesiyle derinlemesine ilgilenmeyen çoğu insanın, amacın insanları değiştirmek olduğunu düşünebileceğine bahse girerim. Aslında makine öğrenimi çözümleri mükemmel olmaktan uzaktır ve yalnızca belirli alanlarda değişiklik yapılabilir. Bu fikri en başından beri birkaç nedenden dolayı reddettik: dolandırıcılık faaliyetlerine ilişkin dengesiz veriler ve makine öğrenimi modelleri için kapsamlı bir özellik listesi sağlayamama. Bunun aksine, gelişmiş zeka seçeneğini tercih ettik. Bu, yapay zekanın destekleyici rolüne odaklanan alternatif bir yapay zeka kavramıdır ve bilişsel teknolojilerin insan zekasını değiştirmek yerine onu geliştirmeyi amaçladığı gerçeğini vurgulamaktadır. [1]

Bu göz önüne alındığında, baştan itibaren eksiksiz bir makine öğrenimi çözümü geliştirmek çok büyük bir çaba gerektirecektir ve bu da işimiz için değer yaratılmasını geciktirecektir. Alan uzmanlarımızın rehberliğinde yinelemeli olarak büyüyen makine öğrenimi özelliğine sahip bir sistem kurmaya karar verdik. Böyle bir sistem geliştirmenin zorlu kısmı, analistlerimize yalnızca dolandırıcılık faaliyeti olup olmadığına ilişkin vakalar sunmak zorunda olmamasıdır. Genel olarak müşteri davranışındaki herhangi bir anormallik, uzmanların araştırıp bir şekilde yanıt vermesi gereken şüpheli bir durumdur. Bildirilen bu vakaların yalnızca küçük bir kısmı gerçekten dolandırıcılık olarak sınıflandırılabilir.

Prensip 3: Zengin Analitik Platformu

Sistemimizin en zorlu kısmı sistemin iş akışının uçtan uca doğrulanmasıdır. Analistler ve geliştiriciler, analiz için kullanılan tüm ölçümleri içeren geçmiş veri setlerini kolayca elde etmelidir. Ek olarak veri platformu, mevcut bir ölçüm kümesini yenileriyle tamamlamanın kolay bir yolunu sağlamalıdır. Oluşturduğumuz süreçler (bunlar sadece yazılım süreçleri değil), geçmiş dönemleri kolayca yeniden hesaplamamıza, yeni metrikler eklememize ve veri tahminini değiştirmemize olanak sağlamalıdır. Bunu üretim sistemimizin ürettiği tüm verileri biriktirerek başarabiliriz. Bu durumda veriler giderek rahatsız edici hale gelecektir. Kullanmadığımız giderek artan miktarda veriyi depolamamız ve korumamız gerekir. Böyle bir senaryoda, veriler zamanla giderek daha önemsiz hale gelecektir, ancak yine de onu yönetmek için çaba göstermemiz gerekecektir. Bizim için veri istiflemenin bir anlamı yoktu, bu yüzden farklı bir yaklaşım benimsemeye karar verdik. Gerçek zamanlı veri depolarını sınıflandırmak istediğimiz hedef varlıklar etrafında düzenlemeye ve yalnızca en güncel ve ilgili dönemleri kontrol etmemize olanak tanıyan verileri depolamaya karar verdik. Bu çabanın zorluğu, sistemimizin tutarlı bir şekilde çalışması için dikkatli planlama gerektiren birden fazla veri deposu ve yazılım modülüne sahip, heterojen olmasıdır.

Sistemimizin tasarım konseptleri

Sistemimizde dört ana bileşen bulunmaktadır: alım sistemi, hesaplamalı, BI analizi ve takip sistemi. Belirli, yalıtılmış amaçlara hizmet ederler ve biz bunları belirli tasarım yaklaşımlarını izleyerek izole ederiz.

Siteye izinsiz girenlerle mücadele etmek için otomatik bir sistemin oluşturulması (dolandırıcılık)

Sözleşmeye dayalı tasarım

Her şeyden önce, bileşenlerin yalnızca aralarında aktarılan belirli veri yapılarına (sözleşmelere) dayanması gerektiği konusunda anlaştık. Bu, aralarında entegrasyonu kolaylaştırır ve bileşenlerin belirli bir bileşimini (ve sırasını) empoze etmez. Örneğin bazı durumlarda bu, giriş sistemini doğrudan uyarı takip sistemiyle entegre etmemize olanak tanıyor. Böyle bir durumda bu, üzerinde anlaşılan uyarı sözleşmesine uygun olarak yapılacaktır. Bu, her iki bileşenin de başka herhangi bir bileşenin kullanabileceği bir sözleşme kullanılarak entegre edileceği anlamına gelir. Giriş sisteminden takip sistemine uyarı eklemek için ek bir sözleşme eklemeyeceğiz. Bu yaklaşım, önceden belirlenmiş minimum sayıda sözleşmenin kullanılmasını gerektirir ve sistemi ve iletişimi basitleştirir. Temel olarak, "Önce Sözleşme Tasarımı" adı verilen bir yaklaşımı benimsiyoruz ve bunu akış sözleşmelerine uyguluyoruz. [2]

Her yerde akış

Durumu bir sistemde kaydetmek ve yönetmek, kaçınılmaz olarak uygulanmasında zorluklara yol açacaktır. Genel olarak, durum herhangi bir bileşenden erişilebilir olmalı, tutarlı olmalı, tüm bileşenler arasında en güncel değeri sağlamalı ve doğru değerlerle güvenilir olmalıdır. Ek olarak, en son durumu almak için kalıcı depolamaya çağrı yapılması, G/Ç işlemlerinin sayısını ve gerçek zamanlı işlem hatlarımızda kullanılan algoritmaların karmaşıklığını artıracaktır. Bu nedenle, mümkünse durum depolamasını sistemimizden tamamen kaldırmaya karar verdik. Bu yaklaşım, gerekli tüm verilerin iletilen veri bloğuna (mesaj) dahil edilmesini gerektirir. Örneğin, bazı gözlemlerin toplam sayısını (işlemlerin veya belirli özelliklere sahip durumların sayısı) hesaplamamız gerekiyorsa, bunu bellekte hesaplar ve bu tür değerlerin bir akışını oluştururuz. Bağımlı modüller, akışı varlıklara bölmek ve en son değerler üzerinde çalışmak için bölümlemeyi ve toplu işlemi kullanacak. Bu yaklaşım, bu tür veriler için kalıcı disk depolamaya olan ihtiyacı ortadan kaldırdı. Sistemimiz Kafka'yı mesaj aracısı olarak kullanıyor ve KSQL ile veritabanı olarak kullanılabiliyor. [3] Ancak bunu kullanmak çözümümüzü büyük ölçüde Kafka'ya bağlayacaktı ve biz onu kullanmamaya karar verdik. Seçtiğimiz yaklaşım, sistemde büyük bir iç değişiklik yapmadan Kafka'yı başka bir mesaj aracısıyla değiştirmemize olanak tanıyor.

Bu kavram, disk depolama ve veritabanlarını kullanmadığımız anlamına gelmez. Sistem performansını test etmek ve analiz etmek için, çeşitli ölçümleri ve durumları temsil eden önemli miktarda veriyi diskte saklamamız gerekir. Burada önemli olan nokta gerçek zamanlı algoritmaların bu tür verilere bağlı olmamasıdır. Çoğu durumda, depolanan verileri çevrimdışı analiz, hata ayıklama ve belirli durumların ve sistemin ürettiği sonuçların izlenmesi için kullanırız.

Sistemimizin sorunları

Belli bir seviyeye kadar çözdüğümüz bazı sorunlar var ama bunlar daha düşünceli çözümler gerektiriyor. Şimdi burada bunlara değinmek istiyorum çünkü her nokta ayrı bir yazı değerindedir.

  • Otomatik veri analizimiz, keşfimiz ve araştırmamız için anlamlı ve ilgili verilerin birikmesini destekleyen süreçleri ve politikaları tanımlamaya hâlâ ihtiyacımız var.
  • İnsan analizi sonuçlarının, sistemi en son verilerle güncelleyecek şekilde otomatik olarak kurma sürecine dahil edilmesi. Bu sadece modelimizi güncellemek değil, aynı zamanda süreçlerimizi güncellemek ve verilerimizi anlamamızı geliştirmek anlamına geliyor.
  • IF-ELSE ve ML'nin deterministik yaklaşımı arasında bir denge bulmak. Birisi "ML çaresizler için bir araçtır" dedi. Bu, algoritmalarınızı nasıl optimize edeceğinizi ve geliştireceğinizi artık anlamadığınızda ML'yi kullanmak isteyeceğiniz anlamına gelir. Öte yandan deterministik yaklaşım, öngörülemeyen anormalliklerin tespitine olanak sağlamamaktadır.
  • Hipotezlerimizi veya verilerdeki metrikler arasındaki korelasyonları test etmek için basit bir yola ihtiyacımız var.
  • Sistemin çeşitli düzeylerde gerçek pozitif sonuçlara sahip olması gerekir. Dolandırıcılık vakaları, sistem açısından olumlu sayılabilecek vakaların yalnızca bir kısmıdır. Örneğin analistler tüm şüpheli vakaları doğrulama için almak isterler ve bunların yalnızca küçük bir kısmı dolandırıcılıktır. Sistem, olayın gerçek bir dolandırıcılık mı yoksa sadece şüpheli bir davranış mı olduğuna bakılmaksızın tüm vakaları etkili bir şekilde analistlere sunmalıdır.
  • Veri platformu, anında oluşturulan ve hesaplanan hesaplamalarla geçmiş veri kümelerini alabilmelidir.
  • Sistem bileşenlerinden herhangi birini en az üç farklı ortama kolayca ve otomatik olarak dağıtın: üretim, deneysel (beta) ve geliştiriciler için.
  • Ve son ama en az değil. Modellerimizi analiz edebileceğimiz zengin bir performans test platformu oluşturmamız gerekiyor. [4]

referanslar

  1. Artırılmış Zeka Nedir?
  2. API Öncelikli Tasarım Metodolojisinin Uygulanması
  3. Kafka “Olay Akışı Veritabanına” Dönüşüyor
  4. AUC - ROC Eğrisini Anlamak

Kaynak: habr.com

Yorum ekle