تشخیص تقلب، بیشتر از اونی که فکر کنی SQLه
خلاصهٔ کاملتر
نویسنده که تو یه تیم صحتسنجی برنامهها کار میکنه، ادعای جالبی داره: تشخیص تقلب تو دادههای تراکنش بیشترش SQLه، نه یادگیری ماشین و نه دیتابیس گراف. کافیه با joinهای درست، دنبال «شکل»های مشکوک تو جدول تراکنشها بگردی. به گفتهٔ نویسنده، این الگوها روی هر چیزی که یه جدول تراکنش داشته باشه — کارت اعتباری، ادعاهای بیمه، فروشگاه اینترنتی — جواب میده. اون شش الگو رو معرفی میکنه.
اولین و سادهترین الگو «سرعت» (velocity)ه: یکی که کارت دزدیده رو میخواد قبل از اینکه صاحبش بفهمه خالیش کنه، پس سریع پشتسرهم ازش خرید میکنه. کافیه تراکنشها رو تو بازههای زمانی بشماری و جایی که تعداد از یه حد بالا زد علامت بزنی:
SELECT cardholder_id,
date_trunc('hour', timestamp) AS hour_bucket,
count(*) AS tx_count
FROM transactions
WHERE timestamp >= current_date - INTERVAL '30 days'
GROUP BY 1, 2
HAVING count(*) > 10;الگوی دوم «سفر غیرممکن»ه: اگه یه کارت تو شیکاگو کشیده شه و هفت دقیقه بعد تو لسآنجلس، یکی از این دو جعلیه و کارت کلون شده — با محاسبهٔ فاصله و زمان بین دو تراکنش، هر چیزی سریعتر از یه هواپیما مشکوکه. الگوی سوم «ناهنجاری مبلغ»ه: مبالغ رند و کوچیک مثل ۱ یا ۵ دلار معمولاً «تست کارت»ن (یکی داره چک میکنه کارت دزدی کار میکنه یا نه)، و مبالغ درست زیر یه سقف مثل ۹۹٫۹۹ یا ۴۹۹٫۹۹ نشونهٔ کسیه که میدونه قانون کجاست و داره زیرش میمونه.
الگوی چهارم «فروشندهٔ مشکوک»ه: وقتی یه اسکیمر یه دستگاه کارتخوان رو آلوده میکنه، ناگهان تعداد زیادی کارت غیرمرتبط تو یه بازهٔ کوتاه اونجا خرج میکنن؛ نویسنده میگه بهجای آستانهٔ ثابت، بهتره هر فروشنده رو با میانگین هفتروزهٔ خودش مقایسه کنی و جایی که سه برابر شد علامت بزنی. الگوی پنجم «ساعات غیرعادی»ه: آدمها تو خرجکردن عادت دارن، پس اگه کارت یه کارمند نهتاپنج ناگهان ساعت سه صبح خرج کنه، یا دست یکی دیگهست یا داره سفر میکنه.
الگوی ششم دقیقاً یه الگو نیست، بلکه یه زیرساخته: با توابع پنجرهای (window functions) مثل LAG() میتونی فاصلهٔ زمانی تا تراکنش قبلی یا تغییر فروشنده رو حساب کنی و پنج الگوی قبلی رو با هم ترکیب کنی. جمعبندی نویسنده اینه که برای شروع لازم نیست سراغ ابزارهای پیچیده بری؛ همین کوئریهای SQL روی جدول تراکنش، بیشتر چیزهای عجیب رو پیدا میکنن.
نکات کلیدی:
- ادعای اصلی: تشخیص تقلب بیشتر کار SQLه تا یادگیری ماشین یا دیتابیس گراف
- الگوی سرعت و سفر غیرممکن، خرید سریع پشتسرهم و کارت کلونشده رو میگیرن
- مبالغ رند کوچیک نشونهٔ تست کارت و مبالغ درست زیر سقف نشونهٔ دورزدن قوانینن
- برای فروشندهٔ مشکوک، مقایسهٔ هر فروشنده با میانگین خودش بهتر از آستانهٔ ثابته
- با window functions مثل LAG میشه این الگوها رو با هم ترکیب کرد




