شعار زيفيرنت

خوارزمية Gaussian Naive Bayes لنمذجة مخاطر الائتمان

التاريخ:

تم نشر هذه المقالة كجزء من مدونة علوم البيانات.

نبذة

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

تعد خوارزمية Naive Bayes خوارزمية تعلم آلي مباشرة وسريعة تُستخدم بشكل متكرر للتنبؤات في الوقت الفعلي. من الممتع التعلم بسبب روابطه القوية بمبادئ الاحتمالات ، وسوف يساعدك في إصدار أحكام مستنيرة خلال رحلة علم البيانات الخاصة بك. هل أنت مستعد لبناء نموذج لمخاطر الائتمان باستخدام ساذج بايز؟ تعال ، دعنا ننتقل إلى تنفيذ النموذج.

Naïve Bayes هي خوارزمية احتمالية تعتمد على مفهوم الاحتمال الشرطي. نحن نعرفها ليس فقط بسبب بساطتها ولكن أيضًا من أجل سرعتها.

لقد عرّفناها أيضًا على أنها خوارزمية هي خوارزمية بسيطة وسريعة للتعلم الآلي تُفضل غالبًا في حالات التنبؤات في الوقت الفعلي.

ما هو الاحتمال؟

يشير إلى احتمالات أو احتمالية وقوع حدث كاحتمال.

P (A / B) هو الاحتمال الشرطي لـ A معطى B ، أو احتمالية وقوع الحدث A إذا كان الحدث B قد وقع بالفعل. نظرًا لأننا نعلم بالفعل أن B قد حدث عندما نجرب ، فقد كان عدد النتائج البديلة للحدث محدودًا. نتيجة لذلك ، نظرًا لأن B قد حدث بالفعل ، فقد تغير الاحتمال غير المشروط الآن إلى احتمال شرطي.

نحدد الاحتمال الشرطي على النحو التالي:

𝑃 (𝐴 / 𝐵) = 𝑃 (𝐴 ∩ 𝐵) 𝑃 (𝐵)

حيث تمثل 𝑃 (𝐴 ∩ 𝐵) الاحتمال المشترك ، أي الاحتمال ، لكلا الحدثين اللذين يحدثان معًا.

أنواع Naïve Bayes

هناك ثلاثة أنواع رئيسية من Naïve Bayes المدرجة أدناه:

1. غاوسي ساذج بايز

2. متعدد الحدود Naïve Bayes

3. برنولي نايف بايز

خوارزمية Gaussian Naïve Bayes

في Gaussian Naïve Bayes ، تم افتراض أن السمات العددية المستمرة يتم توزيعها بشكل طبيعي. يتم أولاً تقسيم السمة بناءً على فئة المخرجات ، ثم يتم حساب التباين ومتوسط ​​السمة لكل فئة.

خوارزمية Naïve Bayes متعددة الحدود

نحن نفضل نموذج Naïve Bayes متعدد الحدود عندما يتم توزيع البيانات متعدد الحدود. متجهات السمات تمثل التردد الذي تولد به الحدود المتعددة حدثًا معينًا. استخدمنا في الغالب خوارزمية Naïve Bayes متعددة الحدود في حالات تصنيف النص.

خوارزمية برنولي نايف بايز

في خوارزمية Bernoulli Naïve Bayes ، يتم توزيع الميزات وفقًا لتوزيعات Bernoulli متعددة المتغيرات. هذا يعني أنه قد تكون هناك ميزات متعددة ، لكن كل واحدة ستكون متغيرًا منطقيًا مستقلًا. ومن ثم ، فإنه يتطلب أن تكون العينات ذات قيم ثنائية. على غرار الخوارزمية متعددة الحدود ، تحظى خوارزمية برنولي بشعبية في تصنيف النص ، حيث يتم استخدام التكرارات الثنائية بدلاً من ترددات المصطلح.

نايف بايز مصنف

إنها خوارزمية تعلم آلي خاضعة للإشراف للتصنيف بناءً على نظرية بايز. تتعلم الخوارزمية احتمالية وجود مثيلات بيانات تنتمي إلى فئة معينة. ومن ثم فهو مصنف احتمالي.

المصدر: المؤلف

والسبب في تسميتها "ساذجة" هو أنها تفترض أن حدوث ميزة معينة (X) مستقل عن حدوث أي ميزات أخرى (أي Xs أخرى). على سبيل المثال ، يمكننا توقع الفاكهة على أنها تفاحة إذا كانت حمراء ودائرية وعرضها 2 بوصة. تساهم هذه الميزات بشكل مستقل في احتمال أن تكون الفاكهة المتوقعة تفاحة ، على الرغم من أن هذه الميزات تعتمد على بعضها البعض.

يمكن اعتبار هذا أيضًا ميزة لأن خوارزمية Naïve Bayes لا تتطلب سوى كمية صغيرة من بيانات التدريب لتقدير معلمات الخوارزمية.

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

دعونا نستخدم خوارزمية Naïve Bayes لحل هذه المشكلة. أولاً ، نحسب احتمال امتلاك شخص لدراجة أم لا. إجمالي نقاط البيانات 30 ، والنقاط الحمراء 9 والنقاط الزرقاء 21.

𝑃 (𝑁𝑜 𝑏𝑖k𝑒) = 9/30 (𝑏𝑖k𝑒) = 21/30

نقطة البيانات الجديدة مثل نقاط البيانات في تلك الدائرة ، قد يكون لها أي قيمة نصف قطرها. يشير الاحتمال الهامشي إلى أنه إذا أضفنا نقطة جديدة ،

𝑃 (𝑃𝑜𝑖𝑛𝑡) = 𝑁𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑖𝑜𝑛𝑠 𝑖𝑛 𝑐𝑖𝑟𝑐𝑙𝑒 / 𝑇𝑜𝑡𝑎𝑙 𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑖𝑜𝑛𝑠 = 4/30

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

𝑃 (𝑃𝑜𝑖𝑛𝑡 / 𝑁𝑜 𝑏𝑖k𝑒) = 𝑁𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑁𝑜 𝑏𝑖k𝑒 𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑖𝑜𝑛𝑠 𝑖𝑛 𝑐𝑖𝑟𝑐𝑙𝑒 / 𝑇𝑜𝑡𝑎𝑙 𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑡𝑖𝑜𝑛𝑠 𝑜𝑓 𝑁𝑜 𝑏𝑖k𝑒 = 1/9

يتم إعطاء الاحتمال اللاحق بواسطة ،

𝑃 (𝑁𝑜 𝑏𝑖k𝑒 / 𝑃𝑜𝑖𝑛𝑡) = 1/4 = 0.25

لذلك هناك احتمال بنسبة 25٪ ألا يمتلك الشخص / نقطة البيانات المعينة دراجة. احسب الاحتمال اللاحق الآخر.

𝑃 (𝑏𝑖k𝑒 / 𝑃𝑜𝑖𝑛𝑡) = 3/4 = 0.75

وهناك احتمال 75٪ أن الشخص يمتلك دراجة. نتيجة لذلك ، من المرجح أن يمتلك الشخص الجديد دراجة. بعد ذلك ، سنصنف النقطة على أنها الشخص الذي يمتلك دراجة. تعمل خوارزمية Naive Bayes بهذه الطريقة.

استيراد الحزم:

استيراد الحزم numpy مثل np import pandas مثل pd من scipy.stats استيراد randint استيراد الباندا مثل pd import matplotlib.pyplot as plt من pandas import set_option plt.style.use ('ggplot')
من sklearn.model_selection استيراد train_test_split من sklearn.linear_model استيراد LogisticRegression من sklearn.feature_selection استيراد RFE من sklearn.model_selection استيراد KFold من sklearn.model_selection استيراد GridSearchCV من sklearn.model_selection استيراد من sklearn.model_selection .ensemble استيراد RandomForestClassifier استيراد xgboost كـ xgb من xgboost استيراد XGBClassifier
من sklearn.model_selection ، قم باستيراد cross_val_score من sklearn.metrics استيراد confusion_matrix من sklearn.neighbours استيراد KNeighboursClassifier من sklearn.tree استيراد DecisionTreeClassifier من sklearn.ensemble استيراد ExtraTreesClassifier من sklearn.feature warnings_selection استيراد SelectFromModel فئة = تحذير المستقبل)
من sklearn.metrics استيراد تصنيف_تقرير

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

تنزيل مجموعة البيانات:

تتمثل الخطوة الأولى نحو حل أي مشكلة في التعلم الآلي في فهم البيانات وإعدادها.

مجموعة البيانات متوفرة في kaggle ، ويمكننا تنزيلها من الرابط

https://www.kaggle.com/uciml/default-of-credit-card-clients-dataset/version/1?select=UCI_Credit_Card.csv

بعد تنزيل مجموعة البيانات ، يمكننا استيراد مجموعة البيانات باستخدام إطار عمل الباندا. يتم تحميل إطار البيانات بتنسيق الائتمان المصرفي المتغير.

BankCredit = pd.read_csv ("UCI_Credit_Card.csv")

استخدم سمة الشكل الخاصة بـ Pandas Dataframe للتحقق من شكل إطار البيانات.

لطباعة شكل إطار البيانات

print (f'The Shape of dataframe is {BankCredit.shape} ') print ()

الناتج

"المصدر: المؤلف"

استخدم وظيفة info () في Pandas Dataframe لعرض أنواع البيانات لكل عمود.

طباعة (BankCredit.info ()) طباعة ()

الناتج

"المصدر: المؤلف"

استخدم وظيفة الاستبدال من Python لتحل محل؟ مع Numpy NaN. تذكر استخدام السمة inplace لاستبدال إطار البيانات الأصلي.

BankCredit.replace (to_replace = '؟'، value = np.NaN، inplace = True)

الناتج

"المصدر: المؤلف"

يمكننا أن نرى أعمدة الإخراج مع "؟" تم استبداله بـ "NaN"

استخدم وصف طريقة للحصول على ملخص وصفي لميزات مجموعة البيانات.

print (BankCredit.describe (include = 'all')) print ()

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

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

الخطوة الأولى هي التحقق من عدد الفئات في المتغير الهدف.

استعمل عدد_القيمة () طريقة حساب عدد الفئات في المتغير الهدف

الكود أدناه سيطبع عدد القيم في كل فئة من المتغير المستهدف (الدخل)

أيضًا ، من المهم التحقق من القيم الخالية في مجموعة البيانات ، لذلك نستخدم طريقة isnull للتحقق من القيم المفقودة

print (BankCredit ['CreditCard']. value_counts ())
print (BankCredit.isnull (). sum ()

الناتج

"المصدر: المؤلف"

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

بعد ذلك ، لتصور الإخراج باستخدام مخطط شريطي ، نستخدم طريقة الرسم البياني لمكتبة seaborn لعرض المخطط الشريطي للمتغير المستهدف

sns.countplot (x = 'CreditCard' ، البيانات = BankCredit ، linewidth = 3) plt.show ()

الناتج

"المصدر: المؤلف"

لعرض الرسم البياني لمتغيرات مجموعة البيانات ، نستخدم طريقة Hist لعرض الرسم البياني للميزات المحددة لإطار البيانات.

BankCredit [['Age'، 'Experience'، 'Family'، 'CCAvg'، 'Mortgage'، 'PersonalLoan'، 'CD_Account'، 'Online']]. hist (bins = 50، figsize = (15,8،XNUMX) ) plt.show ()
"المصدر: المؤلف"

نموذج تدريب واختبار الانقسام

1) أولاً ، يجب استبدال القيم المفقودة بالفئة الأكثر تكرارًا

2) علينا تحديد المتغيرات التابعة والمستقلة ، ثم يتعين علينا تقسيم مجموعة البيانات إلى تدريب واختبار

3) معالجة المتغيرات الفئوية للبيانات المفقودة باستخدام نمط الأعمدة

بعد تحليل البيانات المفقودة في مجموعة البيانات ، تحتوي أعمدة "التعليم" و "حساب الأوراق المالية" على القيم المفقودة ، لذلك يمكننا استخدام إحصائيات الوضع () لاستبدال القيم المفقودة في المتغيرات الفئوية.

BankCredit ['Education']. fillna (BankCredit ['Education']. mode () [0]، inplace = True) BankCredit ['Securities_Account']. fillna (BankCredit ['Securities_Account']. mode () [0]، inplace = صحيح)

لإعادة التحقق مما إذا كنا قد استبدلنا القيم المفقودة بشكل صحيح ، نستخدم الدالة isnull () مرة أخرى للتحقق من القيم المفقودة

print (BankCredit.isnull (). sum ())

الناتج

المصدر: المؤلف

بعد معالجة البيانات المفقودة باستخدام طريقة الوضع ، يتم استبدال البيانات المفقودة بالوضع. إذا تحققنا من وجود قيمة مفقودة ، فستظهر قيمة فارغة مفقودة.

للإعلان عن المتغير المستقل (X) والمتغير التابع (y) ، نستخدم طريقة drop () لإزالة ميزات ['Experience' و 'ZIP_Code' و 'CreditCard'] واستخدام باقي الميزات كميزات مستقلة. استخدم ['CreditCard'] كمتغير تابع.

X = BankCredit.drop (['Experience'، 'ZIP_Code'، 'CreditCard']، محور = 1) y = BankCredit ['CreditCard']

لتقسيم البيانات ، نستخدم فئة train_test_split من وحدة sklearn.model_selection لتقسيم مجموعة البيانات إلى القطار واختبارها.

من sklearn.model_selection ، استيراد train_test_split X_train ، X_test ، y_train ، y_test = train_test_split (X ، y ، test_size = 0.3 ، random_state = 42 ، stratify = y)

لتلائم نموذج بايز الساذج

يمكن أن يكون تمثيل البيانات الفئوية أكثر تعبيراً باستخدام ترميز واحد ساخن. لا يمكن للعديد من خوارزميات التعلم الآلي أن تعمل مباشرة مع البيانات الفئوية. يجب أن يتم تحويل الفئات رقميًا.

لإجراء تشفير واحد ساخن ، نستخدم فئة تشفير ساخنة واحدة من وحدة sklearn.preprocessing لإجراء تشفير ساخن واحد للمتغيرات الفئوية. باستخدام ترميز واحد ساخن ، نحصل على عمود واحد لكل فئة لمتغير.

من sklearn.preprocessing import OneHotEncoder cols = ['Family'، 'Education'، 'PersonalLoan'، 'Securities_Account'، 'CD_Account'، 'Online'] encoder = OneHotEncoder (sparse = False) X_train = encoder.fit_transform (X_train [cols ]) X_test = encoder.transform (X_test [cols])

لتوسيع نطاق ميزات الإدخال باستخدام MinMaxScaler ، نستخدم MinMaxScaler لتحويل الميزات المستقلة لبيانات التدريب والاختبار.

من sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler () X_tler.fit_transform (X_train) X_test = scaler.transform (X_test)

بعد تنفيذ الخطوات المذكورة أعلاه ، يتعين علينا إنشاء مثيل لخوارزمية Naive Bayes. لإنشائه ، نستخدم فئة GaussianNB من حزمة sklearn.naive_bayes لإنشاء مثيل للخوارزمية.

من sklearn.naive_bayes استيراد GaussianNB
model_gnb = GaussianNB ()

خطوتنا التالية هي ملاءمة الخوارزمية في مجموعة بيانات التدريب. للقيام بذلك ، نستخدم طريقة الملاءمة لتلائم الخوارزمية على بيانات التدريب.

model_gnb.fit (X_train، y_train)

كفاءة نموذج بايز السذج

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

أخيرًا ، لعمل تنبؤات على بيانات التدريب. نحن نستخدم طريقة التنبؤ لعمل تنبؤات على بيانات الاختبار. بعد ذلك ، علينا حساب دقة النموذج. نحن نستخدم فئة quality_score من sklearn.metrics لقياس الدقة.

y_pred = model_gnb.predict (X_test) # لقياس الدقة من طباعة sklearn.metrics دقة الاستيراد (f'Model دقة نقاط: {100 * Resolution_score (y_test، y_pred): 0.2f}٪ ') print ()

أخيرًا ، نستخدم فئة confusion_matrix من sklearn.metrics لحساب مصفوفة الارتباك للنموذج.

من sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test، y_pred) print ('Confusion Matrix') print (cm)

الناتج

المصدر: المؤلف

استنتاج نموذج بايز ساذج

يعطي هذا النموذج دقة 73.8٪ ويمكننا تحسين الدقة باستخدام طريقة تحسين المعلمة الفائقة.

1) يضاعف احتمال الفرضية الاحتمال السابق للفرضية ، في ضوء بيانات التدريب.

2) الناتج ليس تصنيفًا فحسب ، بل هو أيضًا توزيع احتمالي يمثل جميع الفئات أيضًا.

3) مع كل مثيل بيانات ، يمكن تحديث السابق والاحتمالية بشكل متزايد

Naïve Bayes سريع في التنبؤ بفئة مجموعة البيانات. وبالتالي ، يمكن استخدامه في الوقت الفعلي لعمل التنبؤات. أخيرًا ، قمنا بتدريب وبناء نموذج لنمذجة بطاقات الائتمان باستخدام Naive Bayes.

آمل أن تكون هذه المقالة أكثر توضيحًا وتحفيزًا!

إذا كان لديك المزيد من الاستفسارات ، يرجى نشرها في قسم التعليقات.

شكرا لقرائتك.

اسمي لافانيا ، وأنا من تشيناي ، الهند. اعتدت تصفح العديد من مفاهيم التكنولوجيا الجديدة ككاتب متحمس ومنشئ محتوى متحمس. أتابع بكالوريوس ، في هندسة علوم الكمبيوتر ولدي اهتمام كبير بهندسة البيانات ، والتعلم الآلي ، وعلوم البيانات ، والذكاء الاصطناعي ، ومعالجة اللغة الطبيعية ،

ينكدين URL: https://www.linkedin.com/in/lavanya-srinivas-949b5a16a/

البريد الإلكتروني [البريد الإلكتروني محمي]

الوسائط الموضحة في هذه المقالة ليست مملوكة لشركة Analytics Vidhya ويتم استخدامها وفقًا لتقدير المؤلف.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة