Pembuatan sistem otomatis untuk memerangi penyusup di situs (penipuan)

Selama sekitar enam bulan terakhir, saya telah membuat sistem untuk memerangi penipuan (aktivitas penipuan, penipuan, dll.) Tanpa infrastruktur awal apa pun untuk ini. Gagasan hari ini yang kami temukan dan terapkan di sistem kami membantu kami mendeteksi dan menganalisis banyak aktivitas penipuan. Pada artikel ini, saya ingin berbicara tentang prinsip-prinsip yang kami ikuti dan apa yang kami lakukan untuk mencapai kondisi sistem kami saat ini, tanpa mempelajari bagian teknis.

Prinsip sistem kami

Saat Anda mendengar istilah seperti "otomatis" dan "penipuan", kemungkinan besar Anda mulai berpikir tentang pembelajaran mesin, Apache Spark, Hadoop, Python, Airflow, dan teknologi lainnya di ekosistem Apache Foundation dan bidang Ilmu Data. Menurut saya, ada satu aspek penggunaan alat ini yang biasanya tidak disebutkan: alat ini memerlukan prasyarat tertentu untuk diterapkan pada sistem perusahaan Anda sebelum Anda dapat menggunakannya. Singkatnya, Anda memerlukan platform data perusahaan yang menyertakan danau data dan penyimpanan. Tetapi bagaimana jika Anda tidak memiliki platform seperti itu dan masih perlu mengembangkan praktik ini? Prinsip-prinsip berikut, yang saya uraikan di bawah, telah membantu kami sampai pada titik di mana kami dapat berfokus pada peningkatan ide-ide kami, daripada menemukan ide yang berhasil. Namun, ini bukan "dataran tinggi" proyek. Ada lebih banyak hal dalam rencana dari sudut pandang teknologi dan produk.

Prinsip 1: Nilai Bisnis Pertama

Kami menempatkan "nilai bisnis" di garis depan dari semua upaya kami. Secara umum, setiap sistem analisis otomatis termasuk dalam kelompok sistem kompleks dengan otomatisasi tingkat tinggi dan kompleksitas teknis. Membuat solusi lengkap akan memakan banyak waktu jika Anda membuatnya dari awal. Kami memutuskan untuk mengutamakan nilai bisnis dan kematangan teknologi di urutan kedua. Dalam kehidupan nyata, ini berarti kami tidak menerima teknologi canggih sebagai dogma. Kami memilih teknologi yang paling sesuai untuk kami saat ini. Seiring waktu, tampaknya kita harus mengimplementasikan ulang beberapa modul. Ini adalah kompromi yang kami terima.

Prinsip 2: Kecerdasan yang diperbesar

Saya yakin kebanyakan orang yang tidak terlalu terlibat dalam pengembangan solusi pembelajaran mesin mungkin berpikir bahwa penggantian manusia adalah tujuannya. Faktanya, solusi pembelajaran mesin jauh dari sempurna dan hanya di area tertentu yang memungkinkan penggantian. Kami meninggalkan ide ini sejak awal karena beberapa alasan: data yang tidak seimbang tentang aktivitas penipuan dan ketidakmampuan untuk menyediakan daftar lengkap fitur untuk model pembelajaran mesin. Sebaliknya, kami memilih opsi augmented intelligence. Ini adalah konsep alternatif kecerdasan buatan yang berfokus pada peran pendukung AI, menekankan fakta bahwa teknologi kognitif dirancang untuk meningkatkan kecerdasan manusia, bukan menggantikannya. [1]

Dengan mengingat hal ini, mengembangkan solusi pembelajaran mesin yang lengkap sejak awal akan membutuhkan upaya besar yang akan menunda penciptaan nilai bagi bisnis kami. Kami memutuskan untuk membangun sistem dengan aspek pembelajaran mesin yang terus berkembang di bawah bimbingan pakar domain kami. Bagian tersulit dari pengembangan sistem semacam itu adalah ia harus memberikan studi kasus kepada analis kami tidak hanya dalam hal apakah ini merupakan aktivitas penipuan atau tidak. Secara umum, setiap anomali dalam perilaku pelanggan adalah kasus mencurigakan yang perlu diselidiki oleh spesialis dan entah bagaimana meresponsnya. Hanya beberapa dari kasus yang terekam ini yang benar-benar dapat diklasifikasikan sebagai penipuan.

Prinsip 3: Platform Wawasan yang Kaya

Bagian tersulit dari sistem kami adalah verifikasi end-to-end dari alur kerja sistem. Analis dan pengembang harus dengan mudah memperoleh kumpulan data historis dengan semua metrik yang digunakan untuk analisis. Selain itu, platform data harus menyediakan cara mudah untuk melengkapi rangkaian indikator yang ada dengan yang baru. Proses yang kami buat, dan ini bukan hanya proses perangkat lunak, harus memudahkan untuk menghitung ulang periode sebelumnya, menambahkan metrik baru, dan mengubah perkiraan data. Kami dapat mencapainya dengan mengumpulkan semua data yang dihasilkan oleh sistem produksi kami. Dalam kasus seperti itu, data secara bertahap akan menjadi penghalang. Kami perlu menyimpan semakin banyak data yang tidak kami gunakan dan melindunginya. Dalam skenario seperti itu, data akan menjadi semakin tidak relevan dari waktu ke waktu, tetapi tetap membutuhkan upaya kami untuk mengelolanya. Bagi kami, penimbunan data tidak masuk akal, dan kami memutuskan untuk menggunakan pendekatan yang berbeda. Kami memutuskan untuk mengatur gudang data real-time di sekitar entitas target yang ingin kami klasifikasikan, dan hanya menyimpan data yang memungkinkan kami memeriksa periode terbaru dan terkini. Tantangan dengan upaya ini adalah bahwa sistem kami heterogen dengan banyak penyimpanan data dan modul perangkat lunak yang memerlukan perencanaan yang cermat untuk bekerja secara konsisten.

Konsep desain sistem kami

Kami memiliki empat komponen utama dalam sistem kami: sistem penyerapan, sistem komputasi, analisis BI, dan sistem pelacakan. Mereka melayani tujuan terisolasi tertentu, dan kami menjaga mereka tetap terisolasi dengan mengikuti pendekatan pengembangan tertentu.

Pembuatan sistem otomatis untuk memerangi penyusup di situs (penipuan)

Desain berbasis kontrak

Pertama-tama, kami sepakat bahwa komponen hanya boleh bergantung pada struktur data (kontrak) tertentu yang diteruskan di antara mereka. Ini membuatnya mudah untuk diintegrasikan di antara mereka dan tidak memaksakan komposisi (dan urutan) komponen tertentu. Sebagai contoh, dalam beberapa kasus hal ini memungkinkan kita untuk secara langsung mengintegrasikan sistem penerima dengan sistem pelacakan peringatan. Dalam kasus seperti itu, ini akan dilakukan sesuai dengan kontrak pemberitahuan yang disepakati. Artinya, kedua komponen tersebut akan diintegrasikan dengan menggunakan kontrak yang dapat digunakan oleh komponen lainnya. Kami tidak akan menambahkan kontrak tambahan untuk menambahkan peringatan ke sistem pelacakan dari sistem input. Pendekatan ini membutuhkan penggunaan jumlah kontrak minimum yang telah ditentukan sebelumnya dan menyederhanakan sistem dan komunikasi. Pada dasarnya, kami menggunakan pendekatan yang disebut "Desain Pertama Kontrak" dan menerapkannya pada kontrak streaming. [2]

Streaming Dimana-mana

Menyimpan dan mengelola negara dalam sistem pasti akan menimbulkan komplikasi dalam implementasinya. Secara umum, status harus dapat diakses dari komponen apa pun, harus konsisten dan memberikan nilai paling mutakhir di semua komponen, dan harus dapat diandalkan dengan nilai yang benar. Selain itu, memiliki panggilan ke penyimpanan persisten untuk mendapatkan status terbaru akan meningkatkan jumlah I/O dan kerumitan algoritme yang digunakan dalam pipeline real-time kami. Karena itu, kami memutuskan untuk menghapus penyimpanan status, jika memungkinkan, sepenuhnya dari sistem kami. Pendekatan ini mensyaratkan bahwa semua data yang diperlukan dimasukkan ke dalam unit data yang dikirimkan (pesan). Misalnya, jika kita perlu menghitung jumlah total beberapa pengamatan (jumlah operasi atau kasus dengan karakteristik tertentu), kita menghitungnya dalam memori dan menghasilkan aliran nilai tersebut. Modul dependen akan menggunakan partisi dan pengelompokan untuk membagi aliran berdasarkan entitas dan beroperasi pada nilai terbaru. Pendekatan ini menghilangkan kebutuhan untuk memiliki penyimpanan disk yang persisten untuk data tersebut. Sistem kami menggunakan Kafka sebagai perantara pesan dan dapat digunakan sebagai basis data dengan KSQL. [3] Tetapi menggunakannya akan sangat mengikat solusi kami dengan Kafka, dan kami memutuskan untuk tidak menggunakannya. Pendekatan yang kami pilih memungkinkan kami mengganti Kafka dengan broker pesan lain tanpa perubahan internal yang besar pada sistem.

Konsep ini tidak berarti kita tidak menggunakan penyimpanan disk dan database. Untuk memeriksa dan menganalisis kinerja sistem, kita perlu menyimpan sejumlah besar data pada disk, yang mewakili berbagai indikator dan status. Poin penting di sini adalah bahwa algoritme waktu nyata tidak bergantung pada data semacam itu. Dalam kebanyakan kasus, kami menggunakan data yang disimpan untuk analisis offline, debugging, dan pelacakan kasus dan hasil tertentu yang dihasilkan sistem.

Masalah dalam sistem kami

Ada masalah tertentu yang telah kami selesaikan hingga tingkat tertentu, tetapi masalah tersebut membutuhkan solusi yang lebih bijaksana. Untuk saat ini, saya hanya ingin menyebutkannya di sini, karena setiap item bernilai artikelnya sendiri.

  • Kami masih perlu menentukan proses dan kebijakan yang membantu menghasilkan data yang bermakna dan relevan untuk analisis, penemuan, dan eksplorasi data otomatis kami.
  • Pengenalan hasil analisis oleh seseorang dalam proses penyetelan sistem secara otomatis untuk memperbaruinya dengan data terbaru. Ini bukan hanya pembaruan untuk model kami, tetapi juga pembaruan untuk proses kami dan pemahaman yang lebih baik tentang data kami.
  • Menemukan keseimbangan antara pendekatan deterministik IF-ELSE dan ML. Seseorang berkata: "ML adalah alat untuk yang putus asa." Ini berarti Anda ingin menggunakan ML saat Anda tidak lagi memahami cara mengoptimalkan dan meningkatkan algoritme Anda. Di sisi lain, pendekatan deterministik tidak memungkinkan pendeteksian anomali yang tidak terduga.
  • Kami membutuhkan cara mudah untuk menguji hipotesis atau korelasi kami antara metrik dalam data.
  • Sistem harus memiliki beberapa tingkat hasil positif yang sebenarnya. Kasus penipuan hanyalah sebagian kecil dari semua kasus yang dapat dianggap positif bagi sistem. Misalnya, analis ingin menerima semua kasus mencurigakan untuk ditinjau, dan hanya sebagian kecil darinya yang merupakan penipuan. Sistem harus secara efektif memberi analis semua kasus, apakah itu penipuan nyata atau hanya perilaku mencurigakan.
  • Platform data harus dapat mengambil kumpulan data historis dengan perhitungan yang dibuat dan dihitung dengan cepat.
  • Penyebaran sederhana dan otomatis dari salah satu komponen sistem di setidaknya tiga lingkungan berbeda: produksi, eksperimental (beta), dan untuk pengembang.
  • Dan yang tak kalah pentingnya. Kami perlu membuat platform pembandingan yang luas tempat kami dapat menganalisis model kami. [4]

referensi

  1. Apa itu Augmented Intelligence?
  2. Menerapkan Metodologi Desain API-First
  3. Kafka Berubah Menjadi β€œDatabase Streaming Acara”
  4. Memahami AUCβ€”Kurva ROC

Sumber: www.habr.com

Tambah komentar