Bigquery ML برای تشخیص تقلب در معاملات کارت اعتباری با استفاده از کنسول

۱. مقدمه

در این آزمایشگاه، شما از BigQuery برای آموزش و ارائه یک مدل با داده‌های جدولی با استفاده از یک کنسول استفاده خواهید کرد. این پیشنهاد، افزونه محبوبی برای ارائه و آموزش مدل مبتنی بر SQL است. BigQuery ML کاربران را قادر می‌سازد تا با استفاده از کوئری‌های SQL، مدل‌های یادگیری ماشین را در BigQuery ایجاد و اجرا کنند. هدف، دموکراتیزه کردن یادگیری ماشین با قادر ساختن متخصصان SQL برای ساخت مدل‌ها با استفاده از ابزارهای موجود و افزایش سرعت توسعه با حذف نیاز به جابجایی داده‌ها است.

آنچه یاد خواهید گرفت

  • داده‌های موجود در Bigquery را بررسی کنید
  • با استفاده از کنسول، یک مدل با استفاده از SQL در Bigquery ایجاد کنید
  • ارزیابی نتایج مدل ایجاد شده
  • با استفاده از مدل ایجاد شده، کلاهبرداری بودن یا نبودن یک تراکنش را پیش‌بینی کنید.

۲. درباره داده‌ها

این مجموعه داده‌ها شامل تراکنش‌های انجام شده توسط کارت‌های اعتباری در سپتامبر ۲۰۱۳ توسط دارندگان کارت‌های اروپایی است. این مجموعه داده‌ها تراکنش‌هایی را که در دو روز رخ داده‌اند، نشان می‌دهد که در آن ۴۹۲ مورد کلاهبرداری از ۲۸۴,۸۰۷ تراکنش وجود دارد. این مجموعه بسیار نامتعادل است و دسته مثبت (کلاهبرداری‌ها) ۰.۱۷۲٪ از کل تراکنش‌ها را تشکیل می‌دهند.

این فقط شامل متغیرهای ورودی عددی است که نتیجه تبدیل PCA هستند. متأسفانه، به دلیل مسائل محرمانه بودن، ما نمی‌توانیم ویژگی‌های اصلی و اطلاعات پیش‌زمینه بیشتری در مورد داده‌ها ارائه دهیم.

  1. ویژگی‌های V1، V2، ... V28 مؤلفه‌های اصلی به‌دست‌آمده با PCA هستند، تنها ویژگی‌هایی که با PCA تبدیل نشده‌اند «زمان» و «مقدار» هستند.
  2. ویژگی «زمان » شامل ثانیه‌های سپری‌شده بین هر تراکنش و اولین تراکنش در مجموعه داده‌ها است.
  3. ویژگی «مبلغ» مبلغ تراکنش است، این ویژگی می‌تواند برای یادگیری حساس به هزینه وابسته به مثال استفاده شود.
  4. ویژگی «کلاس» متغیر پاسخ است و در صورت وجود کلاهبرداری مقدار ۱ و در غیر این صورت مقدار ۰ را می‌گیرد.

این مجموعه داده‌ها طی یک همکاری تحقیقاتی بین Worldline و گروه یادگیری ماشینی ( http://mlg.ulb.ac.be ) دانشگاه آزاد بروکسل (ULB) در زمینه کلان‌داده‌کاوی و تشخیص کلاهبرداری جمع‌آوری و تجزیه و تحلیل شده است.

جزئیات بیشتر در مورد پروژه‌های فعلی و گذشته در موضوعات مرتبط در https://www.researchgate.net/project/Fraud-detection-5 و صفحه پروژه DefeatFraud موجود است.

استناد:

آندریا دال پوزولو، اولیویه کائلن، رید ای. جانسون و جیانلوکا بونتمپی. کالیبراسیون احتمال با نمونه‌گیری کمتر برای طبقه‌بندی نامتوازن. در سمپوزیوم هوش محاسباتی و داده‌کاوی (CIDM)، IEEE، ۲۰۱۵

دال پوزولو، آندره‌آ؛ کائلن، اولیویه؛ لو بورن، یان-آل؛ واترشوت، سرژ؛ بونتمپی، جیانلوکا. درس‌های آموخته‌شده در تشخیص تقلب کارت اعتباری از دیدگاه یک متخصص ، سیستم‌های خبره با کاربردها، 41، 10، 4915-4928، 2014، پرگامون

دال پوزولو، آندره‌آ؛ بوراچی، جاکومو؛ کائلن، اولیویه؛ آلیپی، چزاره؛ بونتمپی، جیانلوکا. تشخیص تقلب در کارت اعتباری: یک مدل‌سازی واقع‌گرایانه و یک استراتژی یادگیری جدید، تراکنش‌های IEEE در شبکه‌های عصبی و سیستم‌های یادگیری، 29،8،3784-3797،2018، IEEE

دال پوزولو، آندره‌آ یادگیری ماشین تطبیقی ​​برای تشخیص تقلب در کارت اعتباری ، پایان‌نامه دکترای ULB MLG (با نظارت جی. بونتمپی)

کارسیلو، فابریزیو؛ دال پوزولو، آندریا؛ Le Borgne, Yann-Aël; کالن، اولیویه؛ مازر، یانیس؛ بونتمپی، جیانلوکا. Scarff: چارچوبی مقیاس‌پذیر برای شناسایی تقلب در کارت اعتباری با Spark ، Information fusion، 41، 182-194،2018، Elsevier

کارسیلو، فابریزیو؛ لو بورن، یان-آل؛ کائلن، اولیویه؛ بونتمپی، جیانلوکا. استراتژی‌های یادگیری فعال جریانی برای تشخیص تقلب در کارت اعتباری در زندگی واقعی: ارزیابی و تجسم، مجله بین‌المللی علوم داده و تجزیه و تحلیل، 5،4،285-300،2018، انتشارات بین‌المللی اشپرینگر

برتراند لبیشو، یان-اِل لو بورن، لیون هی، فردریک اوبله، جیانلوکا بونتمپی ، تکنیک‌های تطبیق دامنه یادگیری عمیق برای تشخیص تقلب در کارت‌های اعتباری ، INNSBDDL 2019: پیشرفت‌های اخیر در کلان‌داده و یادگیری عمیق، صفحات 78-88، 2019

فابریزیو کارسیلو، یان-آل لو بورن، اولیویه کائلن، فردریک اوبله، جیانلوکا بونتمپی، ترکیب یادگیری بدون نظارت و نظارت شده در تشخیص تقلب کارت اعتباری، علوم اطلاعات، ۲۰۱۹

۳. محیط خود را آماده کنید

برای اجرای این codelab به یک پروژه Google Cloud Platform با قابلیت پرداخت صورتحساب نیاز دارید. برای ایجاد یک پروژه، دستورالعمل‌های اینجا را دنبال کنید.

  1. فعال کردن API مربوط به bigquery

به BigQuery بروید و اگر فعال نیست، آن را فعال کنید. برای ایجاد مدل خود به این نیاز خواهید داشت.

۴. داده‌ها را کاوش کنید

مرحله 1: به Bigquery بروید

در آدرس https://cloud.google.com/console به دنبال Bigquery بگردید.

مرحله ۲: کاوش داده‌ها با استفاده از پرس‌وجو

در ویرایشگر، کوئری SQL زیر را برای بررسی داده‌های موجود در مجموعه داده عمومی تایپ کنید.

SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` LIMIT 5

مرحله ۳: اجرا

برای اجرای کوئری، دستور Run بالا را فشار دهید.

c670e136ecd58236.png

نتایج

باید در پنل نتایج جستجو باشد و چیزی شبیه به این باشد. داده‌ها ممکن است متفاوت باشند.

be082fb135879158.png

ستون‌های مربوطه و خروجی را بررسی کنید.

شما می‌توانید چندین پرس‌وجو را برای درک نحوه توزیع داده‌ها اجرا کنید. برخی از مثال‌ها ممکن است شامل موارد زیر باشد:

SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=0;
SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=1;

۵. ایجاد یک مجموعه داده خروجی

مرحله ۱: ایجاد مجموعه داده برای ایجاد مدل

  1. در پنل اکسپلورر - سمت چپ، پروژه‌ای را که در حال حاضر روی آن کار می‌کنید انتخاب کنید، روی سه نقطه کنار آن کلیک کنید

7618699754e066bd.png

  1. روی ایجاد مجموعه داده در بالا سمت راست کلیک کنید

۱۷۸۵۱cc9db05dc1.png

  1. جزئیات مربوط به نام مجموعه داده، میزان نگهداری، مکان و غیره را وارد کنید، از این تنظیمات استفاده کنید

b8b6731408f61d57.png

۶. ایجاد مدل رگرسیون لجستیک

مرحله 1: ایجاد بیانیه

در پنجره‌ی Query، عبارت زیر را برای ایجاد مدل تایپ کنید. گزینه‌های کلیدی این دستور را درک کنید. در این لینک توضیح داده شده است.

INPUT_LABEL_COLS برچسب پیش‌بینی را نشان می‌دهد

AUTO_CLASS_WEIGHTS برای مجموعه داده‌های نامتوازن استفاده می‌شود.

MODEL_TYPE نشان می‌دهد که الگوریتم مورد استفاده در این مورد، رگرسیون لجستیک است.

DATA_SPLIT_METHOD نشان دهنده تقسیم بین داده‌های آموزشی و آزمایشی است.

CREATE OR REPLACE MODEL advdata.ulb_fraud_detection 
TRANSFORM(
    * EXCEPT(Amount),
    SAFE.LOG(Amount) AS log_amount
)
OPTIONS(
    INPUT_LABEL_COLS=['class'],
    AUTO_CLASS_WEIGHTS = TRUE,
    DATA_SPLIT_METHOD='seq',
    DATA_SPLIT_COL='Time',
    MODEL_TYPE='logistic_reg'
) AS

SELECT 
 *
FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`

مرحله ۲: اجرا

دستور بالا را اجرا کنید. تکمیل این کار باید چند دقیقه طول بکشد.

به نکات کلیدی بعد از اتمام دویدن توجه کنید

3385a54d3907443e.png

  1. پنل اکسپلورر مدل را ایجاد خواهد کرد.
  2. پنل نتایج پرس‌وجو، مدت زمان لازم برای پردازش SQL ماشین یادگیری (ML SQL) را مشابه هر دستور SQL دیگری نشان خواهد داد.
  3. پنل نتایج جستجو همچنین لینک «برو به مدل» را برای بررسی شما خواهد داشت.

مرحله ۳: کاوش

با کلیک بر روی «برو به مدل» یا از پنل «کاوشگر»، مدل ایجاد شده را بررسی کنید. تب‌ها اطلاعاتی در مورد مدل ایجاد شده، آموزش، ارزیابی و غیره ارائه می‌دهند، نتایج را بررسی کنید.

b350f1b94835f2d1.png

در بخش‌های بعدی این موضوع را بیشتر بررسی خواهیم کرد

برای آشنایی بیشتر با رگرسیون لجستیک، اینجا را ببینید

۷. بررسی معیارهای ارزیابی مدل

در این مرحله خواهیم دید که مدل ما چگونه عمل می‌کند.

پس از اتمام کار آموزش مدل، روی مدلی که آموزش داده‌اید کلیک کنید و به برگه ارزیابی نگاهی بیندازید. معیارهای ارزیابی زیادی در اینجا وجود دارد - ما فقط روی یکی از آنها تمرکز خواهیم کرد:roc_auc

 SELECT * FROM ML.EVALUATE(MODEL advdata.ulb_fraud_detection)

نتایج چیزی شبیه به این خواهد بود. roc_auc معمولاً در مجموعه داده‌های نامتوازن اهمیت بیشتری دارد.

c3c80286082dc336.png

برای کسب اطلاعات بیشتر در مورد نتایج، مستندات ML.Evaluate را اینجا جستجو کنید.

دقت و فراخوانی

منحنی ROC و AUC

۸. پیش‌بینی کلاس برای یک زمان مشخص

روی «ایجاد یک پرس‌وجوی جدید» کلیک کنید و SQL زیر را اجرا کنید. زمان شناسایی‌شده در اینجا مقدار جعلی دارد. ما در تلاشیم تا ارزیابی کنیم که پیش‌بینی کار می‌کند یا خیر.

SELECT Amount, predicted_class_probs, Class
FROM ML.PREDICT( MODEL advdata.ulb_fraud_detection,
 (SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` WHERE Time = 85285.0)
)

خروجی باید چیزی شبیه به این باشد (اعداد ممکن است متفاوت باشند)

676fc8accdab2f6c.png

در این مثال، ما مقدار را به همراه احتمال مرتبط با برچسب نمایش می‌دهیم. ستون کلاس در اینجا نشان می‌دهد که نتایج واقعی چه بوده‌اند.

برای کسب اطلاعات بیشتر در مورد ML.PREDICT. اینجا را ببینید

۹. پاکسازی

اگر می‌خواهید منابع ایجاد شده با این آزمایشگاه را پاکسازی کنید، مجموعه داده را از پنل Explorer در سمت چپ باز کنید.

e7d18fadd2b781be.png

روی حذف مجموعه داده در گوشه بالا سمت راست کلیک کنید

b47bc819869bed6c.png

برای تأیید جزئیات، دوباره نام مجموعه داده را وارد کنید. برای مورد ما، این advdata خواهد بود.

۱۰. تبریک

تبریک می‌گویم، شما با موفقیت اولین مدل خود را ایجاد کردید، آن را با استفاده از یادگیری ماشینی نظارت‌شده ارزیابی و پیش‌بینی کردید!

اکنون مراحل کلیدی مورد نیاز برای ایجاد یک مدل رگرسیون لجستیک را می‌دانید.

بعدش چی؟

برخی از این روش‌های دیگر مربوط به پیش‌بینی را بررسی کنید

اسناد مرجع