الأخبار التكنولوجية والاستعراضات والنصائح!

مشروع التعلم الآلي في بايثون خطوة بخطوة احتيال بطاقة الائتمان … – نحو الذكاء الاصطناعي

ستساعدك المقالة التالية: مشروع التعلم الآلي في بايثون خطوة بخطوة احتيال بطاقة الائتمان … – نحو الذكاء الاصطناعي

نُشر في الأصل في Towards AI.

مشروع التعلم الآلي خطوة بخطوة في Python – كشف الاحتيال باستخدام بطاقة الائتمان

عرض توضيحي لكيفية التعامل مع مشاكل التصنيف غير المتوازن للغاية

الصورة بواسطة CardMapr على Unsplashما هو الاحتيال على بطاقة الائتمان؟يحدث الاحتيال في بطاقة الائتمان عندما يستخدم شخص ما بطاقة ائتمان شخص آخر أو معلومات حسابه دون إذن لإجراء عمليات شراء غير مصرح بها أو سحب الأموال من خلال السلف النقدية. يمكن أن يحدث ذلك عبر الإنترنت وفي المتاجر الفعلية. بصفتك صاحب عمل ، يمكنك حماية نفسك من الصداع المحتمل والدعاية السلبية من خلال توخي الحذر وتحديد حالات استخدام بطاقة الائتمان الاحتيالية في نظام الدفع الخاص بك.

ثلاثة تحديات تحيط بالاحتيال على بطاقة الائتمان

  1. ليس من السهل دائمًا الاتفاق على حقيقة ما تعنيه كلمة “احتيال”.
  2. بغض النظر عن كيفية تعريفك للحقيقة الأساسية ، فإن الغالبية العظمى من التهم ليست احتيالية.
  3. معظم التجار ليسوا خبراء في تقييم تأثير الاحتيال على الأعمال.

عرض المشكلة:

الهدف من كشف الاحتيال على بطاقة الائتمان هو تحديد المعاملات الاحتيالية بدقة من مجموعة كبيرة من معاملات بطاقات الائتمان من خلال بناء نموذج تنبؤي يعتمد على بيانات المعاملات السابقة. الهدف هو الكشف عن جميع المعاملات الاحتيالية بأقل قدر من الإنذارات الكاذبة.

ملاحظات

  • مجموعة البيانات غير متوازنة إلى حد كبير ، مع وجود 0.172٪ فقط من الملاحظات احتيالية.
  • تتكون مجموعة البيانات من 28 ميزة محولة (V1 إلى V28) وميزتين غير محولين (الوقت والمبلغ).
  • لا توجد بيانات مفقودة في مجموعة البيانات ، ولا يتم توفير معلومات حول الميزات الأصلية.

لماذا يؤثر عدم توازن الفئة على أداء النموذج؟

  • بشكل عام ، نرغب في زيادة الاسترجاع إلى الحد الأقصى أثناء وضع حد لسعر FPR (المعدل الإيجابي الخاطئ) ، ولكن يمكنك تصنيف الكثير من الرسوم بشكل خاطئ مع الحفاظ على معدل FPR منخفض لأن لديك عددًا كبيرًا من السلبيات الحقيقية.
  • هذا يساعد على اختيار عتبة منخفضة نسبيًا ، مما يؤدي إلى استدعاء مرتفع ولكن دقة منخفضة للغاية.

في الوقت الحاضر، أجهزة الكمبيوتر المحمولة تأتي مع بطاقة رسومات عالية الجودة؟

  • يؤدي تدريب نموذج على مجموعة بيانات متوازنة إلى تحسين الأداء على بيانات التحقق من الصحة.
  • ومع ذلك ، فإن الهدف هو تحسين الأداء على مجموعة بيانات الإنتاج غير المتوازنة. تحتاج في النهاية إلى إيجاد توازن يعمل بشكل أفضل في الإنتاج.
  • أحد الحلول لهذه المشكلة هو: استخدام جميع المعاملات الاحتيالية ولكن المعاملات غير الاحتيالية في عينة فرعية حسب الحاجة للوصول إلى المعدل المستهدف.

أسئلة العمل لطرح الأفكار:

نظرًا لأن جميع الميزات مجهولة الهوية ، سنركز تحليلنا على الميزات غير مجهولة المصدر: الوقت والمبلغ

  1. ما مدى اختلاف مقدار الأموال المستخدمة في فئات المعاملات المختلفة؟
  2. هل تحدث المعاملات الاحتيالية في كثير من الأحيان خلال إطارات معينة؟

تحليل البيانات الاستكشافية – EDA

دعونا الآن نتحقق من القيم المفقودة في مجموعة البيانات.

0

المتغيرات الوحيدة غير المحولة للعمل معها هي:

  • وقت
  • كمية
  • الفئة (1: الاحتيال ، 0: not_fraud)

0 284315
1492
الاسم: الفئة ، النوع: int64

لاحظ كيف أن مجموعة البيانات الأصلية غير متوازنة! معظم المعاملات غير احتيالية. إذا استخدمنا إطار البيانات هذا كأساس للنماذج والتحليلات التنبؤية الخاصة بنا ، فقد نحصل على الكثير من الأخطاء ، ومن المحتمل أن تكون خوارزمياتنا أكثر من اللازم لأنها “تفترض” أن معظم المعاملات ليست عملية احتيال. لكننا لا نريد أن يفترض نموذجنا ، نريد أن يكتشف نموذجنا الأنماط التي تعطي إشارات تدل على الاحتيال!

حدد عدد عمليات الاحتيال والمعاملات الصالحة في مجموعة البيانات بأكملها.

شكل المعاملات الاحتيالية: (492 ، 31)
شكل المعاملات غير الاحتيالية: (284315 ، 31)

ما مدى اختلاف مقدار الأموال المستخدمة في فئات المعاملات المختلفة؟

هل تحدث المعاملات الاحتيالية في كثير من الأحيان خلال فترة زمنية معينة؟

التوزيعات:

من خلال رؤية التوزيعات ، يمكننا الحصول على فكرة عن مدى انحراف هذه الميزات ، ويمكننا أيضًا رؤية المزيد من التوزيعات للميزات الأخرى. هناك تقنيات يمكن أن تساعد في أن تكون التوزيعات أقل انحرافًا ، والتي سيتم تنفيذها في هذا الكمبيوتر الدفتري في المستقبل.

لا يبدو أن وقت المعاملة مهم حقًا هنا ، وفقًا للملاحظة أعلاه. الآن دعونا نأخذ عينة من مجموعة البيانات للنمذجة والتنبؤ.

مصفوفات الارتباط

مصفوفات الارتباط هي جوهر فهم بياناتنا. نريد معرفة ما إذا كانت هناك ميزات تؤثر بشكل كبير على ما إذا كانت معاملة معينة عملية احتيال. ومع ذلك ، من المهم أن نستخدم DataFrame الصحيح (عينة فرعية) حتى نتمكن من معرفة الميزات التي لها ارتباط إيجابي أو سلبي مرتفع فيما يتعلق بالمعاملات الاحتيالية.

الملخص والشرح:

  • الارتباطات السلبية: ترتبط V17 و V14 و V12 و V10 ارتباطًا سلبيًا. لاحظ كيف أنه كلما انخفضت هذه القيم ، زادت احتمالية أن تكون النتيجة النهائية معاملة احتيالية.
  • الارتباطات الإيجابية: ترتبط V2 و V4 و V11 و V19 ارتباطًا إيجابيًا. لاحظ كيف أنه كلما ارتفعت هذه القيم ، زادت احتمالية أن تكون النتيجة النهائية معاملة احتيالية.
  • BoxPlots: سنستخدم boxplots للحصول على فهم أفضل لتوزيع هذه الميزات في المعاملات الاحتيالية وغير الاحتيالية.

Note: يجب أن نتأكد من أننا نستخدم العينة الفرعية في مصفوفة الارتباط الخاصة بنا وإلا ستتأثر مصفوفة الارتباط الخاصة بنا باختلال التوازن الكبير بين فئاتنا. يحدث هذا بسبب عدم التوازن من الدرجة العالية في DataFrame الأصلي.

تأتي أعلى الارتباطات من:

– الوقت و V3 (-0.42)
– المبلغ & V2 (-0.53)
– المبلغ & V4 (0.4)

المعالجة المسبقة للبيانات

يجب قياس الوقت والمبلغ مثل الأعمدة الأخرى.

وزن صفقة الاحتيال: 0.0017994745785028623
وزن المعاملة غير الاحتيالية: 0.9982005254214972 التدريب: X_train: (159491، 30)، y_train: (159491،)
_______________________________________________________
التحقق من صحة: X_validate: (39873، 30)، y_validate: (39873،)
__________________________________________________
الاختبار: X_test: (85443، 30)، y_test: (85443،)

بناء نموذج

الشبكات العصبية الاصطناعية (ANNs)

2671/2671 [==============================] – 11 ثانية 4 مللي ثانية / خطوة – خسارة: 0.0037 – fn: 29.0000 – fp: 12.0000 – tn: 85295.0000 – tp: 107.0000 – الدقة: 0.8992 – استدعاء: 0.7868
[0.003686850192025304, 29.0, 12.0, 85295.0, 107.0, 0.8991596698760986, 0.7867646813392639]

نتيجة القطار:
==================================================
درجة الدقة: 99.99٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 1.00 1.00 1.00
استدعاء 1.00 0.95 1.00 0.98 1.00
الدرجة الأولى 1.00 0.97 1.00 0.99 1.00
دعم 159204.00 287.00 1.00 159491.00 159491.00
_______________________________________________
الارتباك مصفوفة:
[[159204 0]
[ 14 273]]

نتيجة الاختبار:
==================================================
درجة الدقة: 99.96٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 0.92 1.00 0.96 1.00
استدعاء 1.00 0.81 1.00 0.90 1.00
الدرجة الأولى 1.00 0.86 1.00 0.93 1.00
الدعم 85307.00 136.00 1.00 85443.00 85443.00
_______________________________________________
الارتباك مصفوفة:
[[85298 9]
[ 26 110]]

XGBoost

نتيجة القطار:
==================================================
درجة الدقة: 100.00٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 1.00 1.00 1.00
استدعاء 1.00 1.00 1.00 1.00 1.00
الدرجة f1 1.00 1.00 1.00 1.00
دعم 159204.00 287.00 1.00 159491.00 159491.00
_______________________________________________
الارتباك مصفوفة:
[[159204 0]
[ 0 287]]

نتيجة الاختبار:
==================================================
درجة الدقة: 99.96٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 0.95 1.00 0.97 1.00
استدعاء 1.00 0.82 1.00 0.91 1.00
الدرجة الأولى 1.00 0.88 1.00 0.94 1.00
الدعم 85307.00 136.00 1.00 85443.00 85443.00
_______________________________________________
الارتباك مصفوفة:
[[85301 6]
[ 25 111]]

غابة عشوائية

نتيجة القطار:
==================================================
درجة الدقة: 100.00٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 1.00 1.00 1.00
استدعاء 1.00 1.00 1.00 1.00 1.00
الدرجة f1 1.00 1.00 1.00 1.00
دعم 159204.00 287.00 1.00 159491.00 159491.00
_______________________________________________
الارتباك مصفوفة:
[[159204 0]
[ 0 287]]

نتيجة الاختبار:
==================================================
درجة الدقة: 99.96٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 0.91 1.00 0.95 1.00
استدعاء 1.00 0.82 1.00 0.91 1.00
الدرجة الأولى 1.00 0.86 1.00 0.93 1.00
الدعم 85307.00 136.00 1.00 85443.00 85443.00
_______________________________________________
الارتباك مصفوفة:
[[85296 11]
[ 25 111]]

كاتبووست

نتيجة القطار:
==================================================
درجة الدقة: 100.00٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 1.00 1.00 1.00
استدعاء 1.00 1.00 1.00 1.00 1.00
الدرجة f1 1.00 1.00 1.00 1.00
دعم 159204.00 287.00 1.00 159491.00 159491.00
_______________________________________________
الارتباك مصفوفة:
[[159204 0]
[ 1 286]]

نتيجة الاختبار:
==================================================
درجة الدقة: 99.96٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 0.93 1.00 0.97 1.00
استدعاء 1.00 0.82 1.00 0.91 1.00
الدرجة الأولى 1.00 0.87 1.00 0.94 1.00
الدعم 85307.00 136.00 1.00 85443.00 85443.00
_______________________________________________
الارتباك مصفوفة:
[[85299 8]
[ 25 111]]

LigthGBM

نتيجة القطار:
==================================================
درجة الدقة: 99.58٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 0.23 1.00 0.62 1.00
استدعاء 1.00 0.59 1.00 0.79 1.00
الدرجة f1 1.00 0.33 1.00 0.67 1.00
دعم 159204.00 287.00 1.00 159491.00 159491.00
_______________________________________________
الارتباك مصفوفة:
[[158652 552]
[ 119 168]]

نتيجة الاختبار:
==================================================
درجة الدقة: 99.50٪
_______________________________________________
تقرير التصنيف:
0 1 دقة الماكرو المتوسط ​​المرجح المرجح
الدقة 1.00 0.16 0.99 0.58 1.00
استدعاء 1.00 0.53 0.99 0.76 0.99
الدرجة f1 1.00 0.25 0.99 0.62 1.00
الدعم 85307.00 136.00 0.99 85443.00 85443.00
_______________________________________________
الارتباك مصفوفة:
[[84942 365]
[ 64 72]]

مقارنة النموذج

الاستنتاجات:

لقد تعلمنا كيفية تطوير نموذج الكشف عن الاحتيال الخاص ببطاقات الائتمان باستخدام التعلم الآلي. استخدمنا مجموعة متنوعة من خوارزميات تعلم الآلة ، بما في ذلك نماذج الشبكات العصبية الاصطناعية والنماذج القائمة على الشجرة. في نهاية التدريب ، من بين 85443 معاملة التحقق من الصحة ، يعمل XGBoost بشكل أفضل من الطرز الأخرى:

  • تحديد 111 منهم بشكل صحيح على أنهم احتياليون
  • 9 معاملات احتيالية في عداد المفقودين
  • على حساب وضع علامة غير صحيحة على 25 معاملة شرعية

الروابط والموارد:


مشروع التعلم الآلي في Python خطوة بخطوة – تم نشر كشف الاحتيال ببطاقة الائتمان في الأصل في Towards AI on Medium ، حيث يواصل الأشخاص المحادثة من خلال تسليط الضوء على هذه القصة والرد عليها.

تم النشر عبر نحو الذكاء الاصطناعي