logo

خوارزمية تصنيف شجرة القرار

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

ملاحظة: يمكن أن تحتوي شجرة القرار على بيانات فئوية (نعم/لا) بالإضافة إلى بيانات رقمية.

خوارزمية تصنيف شجرة القرار

لماذا نستخدم أشجار القرار؟

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

  • عادةً ما تحاكي أشجار القرار قدرة التفكير البشري أثناء اتخاذ القرار، لذا فهي سهلة الفهم.
  • يمكن فهم المنطق الكامن وراء شجرة القرار بسهولة لأنه يظهر بنية تشبه الشجرة.

مصطلحات شجرة القرار

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

كيف تعمل خوارزمية شجرة القرار؟

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

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

ك أقرب جار
    الخطوة 1:ابدأ الشجرة بالعقدة الجذرية، كما يقول S، والتي تحتوي على مجموعة البيانات الكاملة.الخطوة 2:ابحث عن أفضل سمة في مجموعة البيانات باستخدام مقياس اختيار السمة (ASM). الخطوه 3:قم بتقسيم S إلى مجموعات فرعية تحتوي على القيم المحتملة لأفضل السمات.الخطوة 4:قم بإنشاء عقدة شجرة القرار التي تحتوي على أفضل سمة.الخطوة 5:قم بإنشاء أشجار قرارات جديدة بشكل متكرر باستخدام المجموعات الفرعية لمجموعة البيانات التي تم إنشاؤها في الخطوة -3. استمر في هذه العملية حتى يتم الوصول إلى مرحلة لا يمكنك فيها تصنيف العقد بشكل أكبر وتسمى العقدة النهائية كعقدة طرفية.

مثال: لنفترض أن هناك مرشحًا لديه عرض عمل ويريد أن يقرر ما إذا كان يجب عليه قبول العرض أم لا. لذا، لحل هذه المشكلة، تبدأ شجرة القرار بالعقدة الجذرية (سمة الراتب بواسطة ASM). تنقسم العقدة الجذرية إلى عقدة القرار التالية (المسافة من المكتب) وعقدة ورقية واحدة بناءً على التسميات المقابلة. يتم أيضًا تقسيم عقدة القرار التالية إلى عقدة قرار واحدة (منشأة الكابينة) وعقدة ورقية واحدة. أخيرًا، تنقسم عقدة القرار إلى عقدتين ورقيتين (العروض المقبولة والعرض المرفوض). النظر في الرسم البياني أدناه:

خوارزمية تصنيف شجرة القرار

تدابير اختيار السمة

أثناء تنفيذ شجرة القرار، تنشأ المشكلة الرئيسية وهي كيفية تحديد أفضل سمة للعقدة الجذرية والعقد الفرعية. لذلك، لحل مثل هذه المشاكل هناك تقنية تسمى مقياس اختيار السمة أو ASM. ومن خلال هذا القياس، يمكننا بسهولة اختيار أفضل سمة لعقد الشجرة. هناك طريقتان شائعتان لـ ASM، وهما:

    كسب المعلومات مؤشر جيني

1. كسب المعلومات:

  • اكتساب المعلومات هو قياس التغيرات في الإنتروبيا بعد تجزئة مجموعة البيانات بناءً على إحدى السمات.
  • فهو يحسب مقدار المعلومات التي توفرها لنا الميزة حول الفصل الدراسي.
  • وفقًا لقيمة اكتساب المعلومات، قمنا بتقسيم العقدة وبناء شجرة القرار.
  • تحاول خوارزمية شجرة القرار دائمًا تعظيم قيمة اكتساب المعلومات، ويتم تقسيم العقدة/السمة التي تتمتع بأعلى كسب للمعلومات أولاً. ويمكن حسابها باستخدام الصيغة أدناه:
 Information Gain= Entropy(S)- [(Weighted Avg) *Entropy(each feature) 

إنتروبيا: الإنتروبيا هو مقياس لقياس الشوائب في سمة معينة. ويحدد العشوائية في البيانات. يمكن حساب الانتروبيا على النحو التالي:

Entropy(s)= -P(yes)log2 P(yes)- P(no) log2 P(no)

أين،

    S = العدد الإجمالي للعينات P (نعم) = احتمال نعم P(no)= احتمال لا

2. مؤشر جيني:

  • مؤشر جيني هو مقياس للشوائب أو النقاء المستخدم أثناء إنشاء شجرة القرار في خوارزمية CART (شجرة التصنيف والانحدار).
  • يجب تفضيل السمة ذات مؤشر Gini المنخفض مقارنةً بمؤشر Gini المرتفع.
  • إنها تقوم فقط بإنشاء انقسامات ثنائية، وتستخدم خوارزمية CART مؤشر Gini لإنشاء انقسامات ثنائية.
  • يمكن حساب مؤشر جيني باستخدام الصيغة التالية:
 Gini Index= 1- &#x2211;<sub>j</sub>P<sub>j</sub><sup>2</sup> 

التقليم: الحصول على شجرة القرار الأمثل

التقليم هو عملية حذف العقد غير الضرورية من الشجرة من أجل الحصول على شجرة القرار الأمثل.

تزيد الشجرة الكبيرة جدًا من خطر التجهيز الزائد، وقد لا تتمكن الشجرة الصغيرة من التقاط جميع الميزات المهمة لمجموعة البيانات. لذلك، تُعرف التقنية التي تقلل حجم شجرة التعلم دون تقليل الدقة باسم التقليم. هناك نوعان رئيسيان من الأشجار تشذيب التكنولوجيا المستخدمة:

استبدال سلسلة جافا سكريبت
    تشذيب تعقيد التكلفة تقليل تشذيب الأخطاء.

مزايا شجرة القرار

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

عيوب شجرة القرار

  • تحتوي شجرة القرار على الكثير من الطبقات، مما يجعلها معقدة.
  • قد تكون هناك مشكلة في التجهيز الزائد، والتي يمكن حلها باستخدام خوارزمية الغابة العشوائية.
  • لمزيد من التسميات الطبقية، قد يزيد التعقيد الحسابي لشجرة القرار.

تنفيذ بايثون لشجرة القرار

الآن سوف نقوم بتنفيذ شجرة القرار باستخدام بايثون. لهذا، سوف نستخدم مجموعة البيانات ' user_data.csv '، والتي استخدمناها في نماذج التصنيف السابقة. باستخدام نفس مجموعة البيانات، يمكننا مقارنة مصنف شجرة القرار مع نماذج التصنيف الأخرى مثل كي إن إن سفم، الانحدار اللوجستي ، إلخ.

ستبقى الخطوات أيضًا كما هي، وهي موضحة أدناه:

    خطوة المعالجة المسبقة للبيانات ملاءمة خوارزمية شجرة القرار لمجموعة التدريب التنبؤ بنتيجة الاختبار دقة اختبار النتيجة (إنشاء مصفوفة الارتباك) تصور نتيجة مجموعة الاختبار.

1. خطوة المعالجة المسبقة للبيانات:

فيما يلي رمز خطوة المعالجة المسبقة:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd #importing datasets data_set= pd.read_csv(&apos;user_data.csv&apos;) #Extracting Independent and dependent Variable x= data_set.iloc[:, [2,3]].values y= data_set.iloc[:, 4].values # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.25, random_state=0) #feature Scaling from sklearn.preprocessing import StandardScaler st_x= StandardScaler() x_train= st_x.fit_transform(x_train) x_test= st_x.transform(x_test) 

في الكود أعلاه، قمنا بمعالجة البيانات مسبقًا. حيث قمنا بتحميل مجموعة البيانات، والتي تعطى على النحو التالي:

خوارزمية تصنيف شجرة القرار

2. ملاءمة خوارزمية شجرة القرار لمجموعة التدريب

الآن سوف نلائم النموذج مع مجموعة التدريب. لهذا، سوف نقوم باستيراد DecisionTreeClassifier فئة من sklearn.tree مكتبة. أدناه هو رمز لذلك:

 #Fitting Decision Tree classifier to the training set From sklearn.tree import DecisionTreeClassifier classifier= DecisionTreeClassifier(criterion=&apos;entropy&apos;, random_state=0) classifier.fit(x_train, y_train) 

في الكود أعلاه، قمنا بإنشاء كائن مصنف، حيث مررنا معلمتين رئيسيتين؛

    'المعيار ='الانتروبيا':يتم استخدام المعيار لقياس جودة الانقسام، والذي يتم حسابه من خلال كسب المعلومات الناتج عن الإنتروبيا.حالة عشوائية=0':لتوليد الحالات العشوائية.

أدناه هو الإخراج لهذا:

أمثلة على برمجة بايثون
 Out[8]: DecisionTreeClassifier(class_weight=None, criterion=&apos;entropy&apos;, max_depth=None, max_features=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=False, random_state=0, splitter=&apos;best&apos;) 

3. التنبؤ بنتيجة الاختبار

الآن سوف نتنبأ بنتيجة مجموعة الاختبار. سنقوم بإنشاء ناقل تنبؤ جديد y_pred. أدناه هو رمز لذلك:

 #Predicting the test set result y_pred= classifier.predict(x_test) 

انتاج:

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

خوارزمية تصنيف شجرة القرار

4. اختبار دقة النتيجة (إنشاء مصفوفة الارتباك)

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

 #Creating the Confusion matrix from sklearn.metrics import confusion_matrix cm= confusion_matrix(y_test, y_pred) 

انتاج:

خوارزمية تصنيف شجرة القرار

في صورة الإخراج أعلاه، يمكننا أن نرى مصفوفة الارتباك، التي لديها 6+3= 9 توقعات غير صحيحة و 62+29=91 توقعات صحيحة. لذلك، يمكننا القول أنه بالمقارنة مع نماذج التصنيف الأخرى، قدم مصنف شجرة القرار تنبؤًا جيدًا.

5. تصور نتيجة مجموعة التدريب:

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

 #Visulaizing the trianing set result from matplotlib.colors import ListedColormap x_set, y_set = x_train, y_train x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap((&apos;purple&apos;,&apos;green&apos; ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) fori, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap((&apos;purple&apos;, &apos;green&apos;))(i), label = j) mtp.title(&apos;Decision Tree Algorithm (Training set)&apos;) mtp.xlabel(&apos;Age&apos;) mtp.ylabel(&apos;Estimated Salary&apos;) mtp.legend() mtp.show() 

انتاج:

jdbc
خوارزمية تصنيف شجرة القرار

يختلف الناتج أعلاه تمامًا عن نماذج التصنيف الأخرى. يحتوي على خطوط رأسية وأفقية تقسم مجموعة البيانات وفقًا لمتغير العمر والراتب المقدر.

كما نرى، تحاول الشجرة التقاط كل مجموعة بيانات، وهذه هي حالة التجهيز الزائد.

6. تصور نتيجة مجموعة الاختبار:

سيكون تصور نتيجة مجموعة الاختبار مشابهًا لتصور مجموعة التدريب باستثناء أنه سيتم استبدال مجموعة التدريب بمجموعة الاختبار.

 #Visulaizing the test set result from matplotlib.colors import ListedColormap x_set, y_set = x_test, y_test x1, x2 = nm.meshgrid(nm.arange(start = x_set[:, 0].min() - 1, stop = x_set[:, 0].max() + 1, step =0.01), nm.arange(start = x_set[:, 1].min() - 1, stop = x_set[:, 1].max() + 1, step = 0.01)) mtp.contourf(x1, x2, classifier.predict(nm.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape), alpha = 0.75, cmap = ListedColormap((&apos;purple&apos;,&apos;green&apos; ))) mtp.xlim(x1.min(), x1.max()) mtp.ylim(x2.min(), x2.max()) fori, j in enumerate(nm.unique(y_set)): mtp.scatter(x_set[y_set == j, 0], x_set[y_set == j, 1], c = ListedColormap((&apos;purple&apos;, &apos;green&apos;))(i), label = j) mtp.title(&apos;Decision Tree Algorithm(Test set)&apos;) mtp.xlabel(&apos;Age&apos;) mtp.ylabel(&apos;Estimated Salary&apos;) mtp.legend() mtp.show() 

انتاج:

خوارزمية تصنيف شجرة القرار

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