Home خوارزميات خوارزمية ID3
خوارزمية ID3

خوارزمية ID3

881
0
بسم الله الرحمن الرحيم ، والصلاة والسلام على اشرف المرسليين سيدنا محمد صلى الله علية وسلم

خوارزمية ID3

مقدمة:
تتحدث المقالة عن احد خوارزميات تصنيف البيانات وهى خوارزمية ID3 ونستعرض فيها شرح للخوارزمية وكيفية تطبيقها والقصور فيها

تعريفها
هى عبارة عن خوارزمية تستخدم لتصنيف البيانات –حيث مدخل الخوارزمية مجموعة من البيانات والناتج هو قاعدة classifier  تستطيع من خلالة تصنيف بيانات جديدة لم تستخدم من قبل كنوع من التنبؤ  لهذة للبيانات الجديدة – هذا الclassifier  يكون على شكل شجرة tree structure  لذا سميت decision tree  ويمكن تحويلها الى مجموعة من القواعد rules لذا اطلق عليها ايضا اسم decision rules

استخدامها
كل ما يخص مشاكل التصنيف (من تحليل الدخل income Analysis-تصنيف امراض –تصنيف صور—)

مبدأ الخوارزمية
تستخدم الخوارزمية مبدأ Divide and Conquer  فكرة المبدا تقسيم المشكلة الى اجزاء ويحل كلها منها على حدة ثم يتم تجميع الحل هناك قصة فى نهاية المقالة عن المبدأ ( لا تنسون قرأتها والاستفادة منها)

 كيفية استخدامها
لنفترض ان لدى مجموعة من البيانات  كبيرة –كمثال مصغر كما بالجدول (1)

جدول(1): مجموعة بيانات عبارة عن Attributes ,class
جدول(1): مجموعة بيانات عبارة عن Attributes ,class

البيانات  فى العادة تكون كبيرة  لذا سوف نمثلها على هيئة جدول بة مجموعة من الامثلة instances كل مثال فى صف record  و يتم تقسيمها من حيث الاعمدة columns   الى:-

1) مجموعة خصائص Attributes   وكل Attribute  لها  مجموعة من القيم Values

فمثلا Travel Cost  هى خاصية Attribute  وتأخذ اى من القيم الثلاثة( Cheap-Standard-Expensive )،  وهكذا لباقى خصائص الجدول .

2) مجموعة الكلاسات Classes وهى ايضا خاصيةAttribute   ولكنها تعتبر ناتج تصنيف مجموعة من Attributes  مع بعضها وفى العادة مشاكل التصنيف تكون بها كلاس واحد لكن يمكن ان تكون اعقد وبها اكثر من كلاس.

فمثلا جدول (1) عبارة عن بيانات لتحديد وسيلة الموصلات المناسبة لكل شخص حسب خصائص Attributes معينة .

انواع الخصائص Attributes:

هناك انواع لل Attributes  يتم تصنيفها من حيث القيم Values التى تأخذها فمثلا:

  • اذا كانت القيم لخاصية  Attribute  ما -يمكن التعبير عنها على صورة (0,1) True or False  فتسمى Binary Attributes مثل الخاصية Gender  فتأخذ قيم اما male, female
  • اذا كانت الخاصية تأخذ قيم يمكن التعبير عنها دون ان يوجد ترابط بين قيمها تسمى Ordinal Attribute مثل الخاصية الكلاس Transportation mode  وتأخذ القيم Bus-Train-Car  فلا يوجد علاقة بينهم

هناك انواع كثيرة اخرى للخصائص يمكن البحث عنها .

كيفية استخدام ال Decision Tree
الجدول السابق يمكن اختصارة الى قاعدة تصنيف classifier  كما بالصورة 

شكل (1) Decision tree example
شكل (1) Decision tree example

ومن هذة القاعدة classifier  يمكن ان استنتج قيم لبيانات لم نراها من قبل فنفترض ان لدينا  مجموعة من الاشخاص واريد التنبؤ لهم ما هو طريقة الانتقال المناسبة لهم Transportation mode  كما بالجدول (2) فلدى مجموعة بيانات جديدة لمجموعة  من الاشخاص واريد ان اعطى كل منهم نوع وسيلة المواصلات الملائمة لة (هذة البيانات الجديدة نطلق عليها   Test Set اى بيانات اختبارية حيث استطيع بها  تحديد واختبر  مدى جودة القاعدة الclassifier  التى انتجتها)

جدول (2): مجموعة من البيانات الجديدة التى ليس لها كلاس واريد التنبؤ بة
جدول (2): مجموعة من البيانات الجديدة التى ليس لها كلاس واريد التنبؤ بة

لكن كيف هذة القاعدة classifier  تعبر عن الجدول وكيف يمكن استخدامها فى التنبؤ بوسيلة الموصلات الملائمة اذا كانت مفقودة

لاستخدام القاعدة سوف ابدأ ب Root node  فى الشكل (1) وهى Travel cost/km ثم  ابدأ التفرع منها حسب قيمة كل خاصية Attribute الى ان انتهى الى Leaf node  والتى تعتبر الكلاس  للبيانات التى تتبعت قيمها فى القاعدة.

فمثلا لو اردت التنبؤ للشخص Alex  عن طريقة المواصلات الملائمة لة سوف ابدأ ب Root node  فى الشكل (1) وهى Travel cost/km   ثم التفرع سوف اجد ثلاث خيارات امامى  اما expensive او standardاو  cheap  لكن Alex  من جدول (2) قيمة ال Travel cost/km   لة هى stranded  لذا سوف يكون تصنيف المواصلات لة هو Train

هكذا الحال عندما اريد التنبؤ لنوع المواصلات لدى بقية الاشخاص.

يمكن تحويل decision tree  الى مجموعة من القواعد Rules Set  باستخدام if –else فالشكل (1) يمكن كتابتة كالاتى:

طبقا لمجموعة القواعد السابقة والdecision tree  فى شكل (1) فيمكن التنبؤ لبقية Test set  كما بالجدول (3)

جدول(3):نتيجة تطبيق Rule Set and decision tree
جدول(3):نتيجة تطبيق Rule Set and decision tree

كيف انشىء Decision Tree  

يتم انشاء الdecision tree  اعتمادا على اختيار افضل خاصية  Attribute  يمكن ان تقسم الTraining  set    بحيث يقل عمق الشجرة فى نفس الوقت الذى يتم فية تصنيف للبيانات بشكل صحيح

كيف يتم اختيار افضل Attribute  للتفرع منها هذا يجعلنا نتطرق لطرق لحساب كيمة التشوية فى البيانات ويعرف على انة Entropy

اذا لدى مجموعة من البيانات فى جدول  عبارة عن امثلة instanceوكل مثال لة Attributes   وكلاس class  فأننا نقول على جدول ما انة Pure  او homogenous اذا كان كل الامثلة فى الجدول تأخذ نفس  قيمة الكلاس كما بالشكل التالى

Untitled11 

اما اذا كانت الامثلة فى الجدول تاخذ قيم مختلفة للكلاس فيعرف الجدول على انة impure or heterogeneous

Untitled11

هناك اكثر من طريقة لحساب impurity  منها:

  Entropy : ويحسب بالمعادلة الاتيه


Untitled11


حيث pj هو احتمالية  اختيار الكلاس j

نبدأ نتعلم كيف نحسب الاحتمالية لكل كلاس اولا ثم نتعلم كيفية حساب Entropy

بداية نرجع للجدول علشان التطبيق

 Untitled11

لحساب احتمالية( Attribute( class والتى هى Transportation mode انظر  الى الجدول واحدد عدد القيم التى تأخذها هذة الخاصية سوف نجد انها تأخذ ثلاث قيم ( car-bus-train) سوف احسب عدد حدوث كل قيمة نسبة لعدد الامثلة الكلى فى الجدول والذى هو 10 لذا فاحتمال probability   لكل قيمة تكون

Untitled11

 Gini Index: وهى طريقة اخرى لحساب impurity  يحسب بالمعادلة

Untitled11

بالتطبيق على مثالنا نجد

Classification error: طريقة اخرى ايضا لحساب  impurityيحسب بالمعادلة

Untitled11

الان بعد معرفة كيفية حساب impurity  نستطيع ان ندخل على كيفية انشاء ال decision tree فى البداية قلنا مسبقا ان مبدأ الخوارزمية هو divide and conquer  لذا سوف نبدأ نتقسيم الTraining Set  فى الجدول حسب كل Attribute  حتى استطيع حساب افضل Attribute  ابدأ بها ك Root node  :

 نبدأ اول خطوة فى الخوارزمية :

نبدأ نحسب لكل  Attribute  فى  Training set  قيمة ال information gain  ما هذة القيمة وكيف يتم حسابها ؟هذة القيمة التى تحدد لنا افضل Attribute  يمكن ان نقسم بها Training set  كيف يمكن حسابها سوف نستخدم  impurity measure التى تحدثنا عنها مسبقا لحسابها

لنفترض اننا بدأنا بخاصية  Attributeالتى هى  Travel cost  فأننا سوف نأخذها على حدة مع الكلاس ونقسمها حسب كل قيمة لها فى جدول مصغر –بشكل مبسط اكثر نحن لدينا ثلاث قيم يأخذها  Travel cost  وهىCheap- Standard-Expensive   لذا سوف يكون لدينا ثلاث جداول مصغريين كما بالشكل التالى

 Untitled11

لكل جدول مصغر سوف نحسب impurity measure   بأى طريقة منهم سواء classification error  Entropy, Gini index

سوف احسب وليكن   Entropy لكل جدول مصغر

Untitled00

 Untitled101

شرح كل ترم وقيمتة

Untitled101

الان بعدما قمنا بحساب information gain  لل Travel Cost Attribute  نكرر حسابة لكل Attributes  الاخرى نحصل على الشكل التالى

 Untitled101

والتى تلخص قيم information gain  لكل Attribute  على حدة

 Untitled101

الان نحصل على الAttribute  ذات الinformation gain  الاعلى وتكون هى افضل Attribute

بعدما حصلنا على افضل Attribute وهى Travel Cost  نضعها هى Root Node  فى الشجرة

Untitled101 

ثم نبدأ تقسيم الجدول طبقا لها لنحصل على الاتى

Untitled101 

نجد بعد استخدام الTravel cost  لتقسيم الجدول ان هناك ثلاث تفرعات فاذا كانت القيمة Expensive  لا يوجد الا كلاس واحدوهو car  كذلك اذا كانت القيمة Standard  فايضا لا يوجد الا كلاس واحد وهو Train اما اذا كان القيمة Cheap  فلدينا اكثر من كلاس لذا سوف نبدأ نكرر مرة اخرى الخطوات السابقة .

 Untitled101

الان نبدأ iteration   جديدة ونعتبر ايضا اننا سوف نبدأ ببيانات جديدة لان الامثلة التى غطتها الrule  السابقة

لل Travel cost ==expensive && Travel cost ==standard   سوف تلغى من training set الان.

اذن كما بالرسمة لم يتبقى لدينا الا الجدول الاول

 Untitled101

اذن لنبدأ ننظر فية : بداية نلغى منة Travel cost ==cheap  سوف يتبقى لدينا ثلاث خصائص

Gender, car ownership, income level نكرر حساب افضل Attribute يمكن ان نقسم بها الجدول عن طريق حساب information gain لكل خاصية كما سبق

Untitled101

اولا :نحسب Entropy  للجدول الجديد

 Untitled101

ثانيا: نحسب الinformation gain  لكل Attribute على حدة Gender,car ownership,income level

 Untitled101

سوف نجد ان افضل information gain  هى للAttribute Gender   لذا سوف نقسم الجدول من خلالها لنحصل على الاتى

 Untitled101

اذن يمكن تقسم الجدول الى تفرعيين لو Gender= male  يوجد لدينا كلاس واحد حصلنا على pure Table تبقى لنا لو Gender=female   سوف نتفرع مرة اخرى الى ان نصل الى pure table  ايضا

ونحصل على القاعدة  classifier

Untitled101 

اخيرا Main Algorithm   الذى يلخص الخطوات السابقة:

عيوب decision tree  :

رغم سهولة decision tree  الا ان لها عيوب كثيرة

1.عند كثرة الامثلة والبيانات ما مدى عمق الشجرة how deep to grow the decision tree

2. لا تسطيع التعامل مع البيانات المستمرة handling continuous attributes

3. ايجاد طريقة لقياس الخاصية الانسب التى تقلل عمق الشجرة وفى نفس الوقت تصنف للبيانات بشكل جيد ليس خاطىء choosing an appropriate attribute selection measure

4. لا تستطيع التعامل اذا هناك قيم لخصائص مفقودة فى اى مثال handling training data with missing attributes

5.  لا يمكن التنبؤ اذا لدى اكثر من كلاس handling attributes with different costs

قصة مبدأ Divide and conquer

وفكرة المبدا تقسيم المشكلة الى اجزاء ويحل كلها منها على حدة ثم يتم تجميع الحل
حقيقة مبدا جميل لحل المشاكل وهكذا يفعلون الاعداء معنا للاسف
علشان نوضح المبدا راح احكى لكم قصة صغيرة وهى قصة الثور الابيض وثلاث من اخواتة ولكن باللون الاسود
وهم كانوا صحبة لا يتفرقون ابدا ونتيجة لتجمعهم لم يستطع ابدا اى عدو اسد او ذئاب ان يقتربوا منهم
للاسف فى يوم من الايام اجتمع الاخوة ” الثور” الذين باللون الاسود وقالوا ان الثور الذى باللون الابيض يظهر فى الظلام وبذلك فهو يعرضنا للخطر بالليل ونحن لوننا اسود فلا نظهر لذلك نفترق عنة حتى لا نتعرض للخطر وفعلا اجمعوا على ان يتركوة لوحدة وفى يوم من الايام وجد الذئاب الثور الابيض لوحدة فلم يخافوة وبدؤا بالهجوم علية وياكلون لحمة والاخوة الذين باللون الاسود يشاهدون ويراقبون ولا يدافعون عن اخوهم وفى اليوم الذى يلية هجم الذئاب على الثلاث باللون الاسود لان عددهم قل وكانت النتيجة ان احدهم مات وفى اليوم الذى يلية اصبح اسهل لان العدد اصبح اثنين وهكذا حتى اخر واحد
وكانت المقوله الشهيرة لاخر واحد فيهم عندما هاجمه الذئاب لقد اوكلت عندما اوكل الثور الابيض—- والتى تعنى لقد مت ليس الان ولكن عندما كنت اراقب اخى يموت امام عيينى واشاهدة ولم افعل شيئا

 

المراجع:

المرجع الاول هو اساس كتابة هذة المقالة مقتبس منة معظم الشرح -في نهايتة اكواد ومراجع بأسماء الكتب مرجو للمهتميين زيارتة للتعلم منة

http://people.revoledu.com/kardi/tutori … n-tree.htm
http://en.wikipedia.org/wiki/ID3_algorithm

{رب انى لما انزلت الى من خير فقير}

{رَبِّ ابْنِ لِي عِنْدَكَ بَيْتًا فِي الْجَنَّةِ}             

 الحمد الله رب العالميين اللهم دومها نعمة واحفظها من الزوال -امين امين امين

(881)

مشاركة