أعوذ بالله السلام عليهم بسم الله الرحمن الرحيم
الحمد لله والصلاة والسلام على رسول الله أهلًا وسهلًا
فيكم، نسأل الله لكم ولنا السلام دائمًا ولجميع
المسلمين، وإن شاء الله تزول هذه الغمة، ونلقاكم من
جديد. اليوم هنستعرض مع بعض إن شاء الله تعالى
المحاضرات المصورة لموضوع الـ data mining، ومن ثم
سنعمل review سريعة. لو وقفنا... كنا بدأنا في
chapter data mining... data mining chapter ثلاثة
في الـ classification، وقلنا الـ classification هي
عبارة عن classical task تقليدية أو مهمة
التقليدية في الـ machine learning. هدفها أن
أعمل فعليًا prediction لـ discrete أو لـ nominal value
اللتي سميناها الـ categorical value، ولما حاولنا نعرف
الـ classification مع بعض، كنتم تذكرون كنا نقول أن
الـ classification هي عبارة عن عملية لتحديد عضوية
العناصر في مجموعات معرفة مسبقًا. وتكلمنا أو وضعنا
الرسم هذا على السريع، وقلنا أنه يمثل الـ
model الخاص بالـ classification، أنه أُضيف الـ raw
data، يُحدد الـ algorithm، الـ algorithm يبني الـ model،
والـ model بعد ذلك يجب أن يكون قادرًا على الـ
prediction بشكل صحيح. وبالتالي، الـ classification هي
عبارة عن تقنية تُستخدم في موضوع الـ prediction
للعضوية، لعضوية العناصر في المجموعة. وتكلمنا أن
فعليًا في الـ classification task، يوجد لديّ two
steps. أي classification task، لإنجازها، يوجد لديّ
two steps. الأولى هي construction للموديل،
بناء الموديل، بحيث أن أحاول من خلال الخطوات
هذه أن أعرف علاقة الـ attribute مع الـ class، أعرف
علاقة الـ attribute بالـ class، وهذه تُسمى
مرحلة الـ training، والتي دائمًا آخذ جزءًا من الـ data
set، التي تُسمى الـ training set، وشاهدنا مثالها سابقًا.
الخطوة الثانية أو المحل، الخطوة الثانية التي
هي الـ model usage، استخدامه، بحيث أن أجد الـ
label أو الـ target class لـ data set، أو عفواً، لـ
sample set الموجودة لديّ مسبقًا. وقلنا مهم جدًا أن
الـ model أو الـ classification model يتمتع بالـ
accuracy، بالدقة، وبالـ speed، سرعة الحساب،
والـ robustness، الـ robustness، التي تعني
قدرة الـ classifier هذا على أن يتعامل أو
يقدر أن يعطيني prediction دقيقة عندما تكون الـ data
تحتوي على noise أو missing data. تكلمنا عن
الـ scalability والـ interpretability للـ data set، أو
عفوًا، للـ classifier. ويُخبرنا هذه مجموعة من الـ
algorithms الموجودة، وكنا في المحاضرة الماضية مع
بعض، في آخر محاضرة، الـ k-nearest neighbor. طبعًا لو
سألت الآن سؤالًا، والمفروض منكم أن تأخذوا لحظة قبل
أن تجيبوا عليّ، على ماذا يعتمد الـ k-nearest neighbor
؟ المفروض الآن أن تبدأوا تفكرون في الإجابة. الـ k-
nearest neighbor يعتمد على تصنيف العناصر تبعًا
للنقاط المجاورة له. وقلنا هذا هو واحد من
الـ instance-based. تذكرون معي؟ ماذا هو؟ كنا
نتحدث عن ماذا؟ Instance-Based. Instance-Based يعني
يعتمد على الـ data set بدون بناء model، يعتمد على
الـ data set بدون بناء models، وبالتالي
لا يوجد لديّ أي model، ولا يعتمد إلا على العمل في الـ
memory، يعني بين الـ جسيم الحساب، وهذا يعطيني
دائمًا الـ Result بناءً على الـ majority الخاصة بالـ
جيران الموجودة عنده. وقلنا بالـ K أنه يجب
أن أُحدد عدد العناصر الموجودة عنده. ومررنا
بشكل سريع، وقلنا كيف أحسب التشابه أو أحسب القرب أو
البعد بين النقاط أو الـ objects، وقلنا يعتمد على
شيء نسميه similarity function، والـ similarity
function، عندما تكون لديّ أرقام، معناته أتحدث
عن Euclidean distance أو Manhattan distance أو
غيرها من الأشياء، وشاهدنا المعادلات مع بعضنا،
وَفرّقنا بينهم، وبين العناصر الموجودة. ما الذي يطلبه
الـ k-nearest neighbor، حسب ما شرحنا في المحاضرة
الأخيرة؟ كان يطلب مني أن أُحدد الـ K، وهي عدد
الجيران الذين سأُجري بينهم voting، يعني لو
قلتُ، سأُصنف الجار هذا أو سأُصنف الـ
object الجديد بناءً على العناصر الموجودة
وبالتالي، أنا أتحدث عن أن لديّ فعليًا
عشرة جيران، حسب أغلبهم. الأغلبية طبعًا، أتحدث هنا على
ستة. الستة ماذا تصنفه؟ أذهب وأصنفه تبعًا للستة الذين
موجودين لديّ. سأحدد الـ distance method التي سأستخدمها
كمقياس. وبالتالي، بعد أن حددت الـ K،
أحسب الـ distance بين الـ sample الموجودة لديّ،
وكل الـ data set أو الـ training set التي
موجودة لديّ هنا. ممكن أعتمد الـ Euclidean أو الـ
Manhattan. أرتب البيانات، وقلنا موضوع الترتيب ليس
مهم إلا عندما تكون الـ data set كبيرة، يصبح عليه
حصر، يسهل عليّ أن أحصر العناصر الأقرب، الـ
k-nearest، مجموعة العناصر العشرة، أصحاب أقصر مسافة
بين الـ sample الموجودة لديهم، أجري بينهم voting،
بحيث أُحدد الأغلبية. وشاهدنا المثال الموجود
هنا، وكيف اشتغلنا على الـ Euclidean، وإذا تتذكرون،
المفروض أن المعادلة الخاصة بنا هذه، حسب الـ Euclidean
distance، فيها الجذر التربيعي. وطبعًا، لأجل التسهيل،
عندما نتحدث عن الجذر التربيعي والجذر التربيعي
موجود في كل المعادلات، من باب المقارنة، ممكن أن
أتغاضى عنه، لأن الأكبر تحت الجذر، أو أكبر عنصر تحت
الجذر، سيبقى أكبر عنصر خارج... خارج الجذر، عندما...
يعني مثلاً، جذر الـ 16، جذر الـ 25، جذر الـ 13، جذر
التسعة. أصغر واحدة فيهم جذر التسعة، التي هي ثلاثة.
وأكبر واحدة فيهم جذر الخمسة وعشرين، خمسة. كذلك،
الخمسة وعشرون هي أكبر value، والتسعة هي أصغر value
موجودة لديّ. وبالتالي، كنت أقول أنه ممكن من
ناحية الحساب السريع، لأني أخلص من
المقارنات السريعة، ممكن أن أتغاضى عن الجذر التربيعي،
وأبقى أتكلم على الـ Euclidean distance. وشاهدنا
مع بعض المثال، وانتهينا من المثال هذا. قلنا
في حالة أن كانت الـ data set الموجودة لديّ
تحتوي على nominal attributes أو categorical
attributes، قلنا هنا يلزم أن أرى
طريقة، لأني لا أستطيع أن أحسب مسافة بين عنصرين لو
قلنا مثلاً، أنا male و female في الـ
gender attribute، المسافة بينهما غير معرفة، لا أستطيع
أن أتحدث عنها. وبالتالي، الآن، لو قلنا أحمد،
أحمد مع الـ E في الوسط هنا، ما هي المسافة
بينهما؟ طبعًا، نحن متفقون أن الأسماء لا تدخل في
الحسابات لديّ، لأنها دائمًا غير مفيدة. وبالتالي، أنا
أثناء التحضير، سأزيلها. ولكن في النهاية، عندما
يكون لديّ string أو text أو كما سميناها في
لغة الـ data mining، categorical data أو nominal
data، كيف سأحسبها أو سأحسب المقارنة بينها؟ هذا
الكلام صعب في الـ Euclidean distance والـ Manhattan.
فلذلك، في الـ k-nearest neighbor، يصبح عليّ العمل. هل فعليًا الـ
term هاتان متطابقتان؟ إذا كانت الـ two terms متطابقتان،
معناته أضع لهما صفرًا. إذا كانت الـ two terms مختلفتان، يعني
أبعد ما يمكن عن بعض أو بعيدتان عن بعض، أضع الفرق بينهما
واحدًا. وطبعًا، تحدثنا بعد ذلك عن أهمية الـ scaling في
موضوع الـ k-nearest neighbor. وقلنا من أهم... أهم مميزاته
الـ robustness اتجاه الـ noisy data والـ
effectiveness في موضوع مرحلة الـ training.
العيوب: تحديد الـ K... أي K هي الأنسب
للموضوع الذي أعمل عليه. مفهوم الـ distance غير
واضح، خصوصًا عندما تظهر لديّ الـ categorical data، و
هذه تتمتع بـ computation cost عالية. تخيل الـ
data set فيها مئة ألف record. وبالتالي، عندما أريد
أن أُجري evaluation أو عفواً، أن أُجري prediction لـ
class لـ one example، معناته سأذهب وأحسب مئة ألف
distance. طيب لو كان لديّ في المقابل، لديّ
عشرة أو مئة سأُجري عليهم testing، مئة في مئة ألف،
معناته نحن نتحدث عن عشرة ملايين تقريبًا
computation. وبالتالي، العملية ستأخذ مني وقتًا
طويلًا. الآن، عندما رأينا الـ code، أهم شيء في الـ code السابق،
إذا كنتم تتذكرون، أخذت من scikit-learn،
KNeighborsClassifier. KNeighborsClassifier. KNeighborsClassifier.
KNeighborsClassifier. KNeighborsClassifier. الخاصة بالـ K-nearest neighbor، وأعطيتها الـ
K الخاصة بي، تساوي خمسة. وهنا نتذكر، قلنا دائمًا الـ X
الخاصة بك أو الـ K الخاصة بك، يجب أن تكون كبيرة
كفاية، وتكون دائمًا قادرة على إعطائي الـ predictions أو
أن تُجري الـ voting الصحيح، لأنه ليس معقولًا مثلاً أن تكون
لديّ two binary أو two labels، وأذهب وأقول
سآخذ مثلاً أربعة أو ستة، ستة، يعني الاحتمال أن
يكون خمسة خمسة، على الأقل، أحتاج أكثر، في حالة
الـ binary classification، لأُقدر أن الـ voting
يميل لأحد الـ classes الموجودة لديهم. وتذكروا جيدًا، وتذكروا جميعًا أنني عندما
تحدثت عن الـ k-nearest neighbors، وأعطيتها الـ test
attribute، test sample الخاصة بي التي بنيتها هنا، و
مع الـ K الخاصة بي، التي تساوي خمسة، فعليًا أعطاني من
بينهم هذه العناصر، وما هي الـ distances الموجودة
بينها، وبقي عليّ أن أعود إلى الـ data set، أحصل على
الـ label الخاصة بهذه العناصر، وأُجري بينها voting. كان
هذا... حتى هنا أنهينا محاضرتنا السابقة عند
هذا المثال، وأتمنى أن أكون قد وفقت في أن
أذكركم بعد انقطاع أسبوع من الدراسة، بما سبق في موضوع
الـ classification. لكن تعالوا لنرى قبل أن ننتقل
إلى الموضوع الجديد، تعالوا لنرى هذا المثال، المفروض أن
هذا المثال ليس موجودًا لديكم في الـ slides، أنتم
المفروض أن... المفروض أن الـ slides معكم، وتبدأون
بتراجعوها باستمرار. لو نظرتُ إلى الـ attributes
أو إلى الـ data set الموجودة هنا، وأجب معي، أو
أجبوا معي على السؤال التالي: ما هو الـ data type
الخاص بالـ outlook؟ المفروض
nominal، صحيح.
الـ data type الخاص بالـ temperature، numeric.
وإن
قلتم ratio أو interval، كلامكم صحيح، كـ interval،
وليس كـ ratio. الـ play golf أو play
golf، binary classification، يعني لديّ two labels،
yes و no، حسب الـ data set الموجودة لديّ، و
المطلوب أن أذهب وأحصل على الـ class الخاصة بالـ instance
التي فيها الـ sunny، وهذه طبعًا في الـ outlook، الـ
تبع للـ distance اللي صارت التنين، هذه هتظهر أول
واحدة. ليش؟ لأنه الآن لما بتتساوى القيم، بصير ظهور
تبع الـ value هو الأول، هو اللي بياخد في الترتيب.
الظهور تبع الـ values هي اللي بتاخد في الترتيب.
وبالتالي هذي هتكون أول واحدة فوق. الآن لو أنا والـ
key and nearest neighbor equal one. إيش الـ key
تبعتي أو الـ label تبعتي true، وبالتالي هتكون عندي
yes. طيب في حالة أن الـ key تبعتي equal تلاتة، تلاتة
هي واحدة، نتين، تلاتة، معناته هي واحدة، هي نتين، هي
تلاتة. الـ majority بينهم نتين yes وواحدة no، يعني
بنتكلم على 66% yes و33% no، وبالتالي الـ majority
تبعتي لـ playing golf equal yes، تمام. الخطوة الأخيرة
لو أنا قلت له K equal خمسة، K equal خمسة، معناته بده
يدور على الـ shortest distances. أي واحدة، نتين، هذه
تلاتة، وهذه أربعة، وهذه خمسة. الـ label سبعتها واحدة،
نتين، تلاتة، أربعة، وهذه خمسة. الآن بدي أعمل voting ما
بين الخمسة اللي موجودة عندي. واحدة، اتنين، تلاتة،
أربعة yes، 80% yes، و20% no.
وبالتالي لما تكون الـ key تبعتي equal five، معناته
برضه الـ golf تبعتي، أو الـ playing golf يعني فرصة
أني ألعب الـ golf في الظروف المناخية اللي موجودة في
الـ data set اللي موجودة عندي، فرصة عالية اللي أشارناها
yes، تمام.
طيب، سؤال، ونفرض تقدروا تجاوبوا عليه، بما أنه هذا الـ
attribute هو الـ dominant attribute، يعني هو صاحب
القرار في موضوع الـ classification، درجة الحرارة. في
حين، أنت لو أنت تخيلنا أن لو كان الجو ماطر، ممكن
يأثر في لعبة الـ golf ولا مش هيأثر؟ بتعرفوا إيش
يعني لعبة golf؟ ممكن تشوفوا اليوتيوب، how to play
golf، وبيعلموكم إياه، وتتفرجوا عليها، في الآخر هي
رياضة بالعصب، وبيضربوا الكورة عشان يسقطها في حفرة.
الآن، بما أن هذا الـ dominant attribute، إيش الحلول
اللي قدامي؟ وهل لو أنا غيرت، ممكن أحصل على
different result؟ اه، ممكن. أول حل موجود قدامي تماماً
زي ما بتبادر لذهنك الآن، أن أعمل scaling. صحيح، ممكن
أنا أعمل scaling، لو صارت هذه أربعة ونص، أربعة و
تلاتة من عشرة، أربعة point واحد، تلاتة point ستة
واحد point تمانية، واحد point سبعة، اتنين point zero
تلاتة point تلاتة، واحد point ستة، تلاتة point اتنين
اتنين point تلاتة، اتنين point أربعة، أربعة point
zero، تلاتة point اتنين، وطبيعي الحال هتصير واحد
point
8. إيش اللي صار عندي بعد الـ scaling؟ طبعاً أعمل الـ
ratio، قسمت على عشرة، أو ضربت في عشر، أو سالب واحد.
شو بتتوقع تصير الـ distance؟ هتقل بين جثين، هتصير فيه
عندي أنا أربعة ونص ناقص واحد وتمانية، اللي هي بين
جثين 2.9. لاحظوا أن 2.9 صارت قريبة من القيم اللي
موجودة، وإذا كمان روحت دربت في عشرة أو سالب 2، ممكن
أقلل الـ weight تبعتها، بتصير الـ value balance، تفكير
منطقي، لكن هل فعلياً يقودني للنتيجة أفضل؟ بده تجربة
وعشان بناءً على هيك، أعتبرها assignment لك، واتقارنها
ما بين، في حالة كانت الـ ratio، عملت ratio data، تمام؟
أو اشتغلت على الـ numeric data اللي موجودة. حل
الثاني، هل في حلول ثانية؟ اه، في حلول ثانية. استخدموا
أدمغتكم، هوش الشغلات اللي كنا بنسويها مع الـ data
الموجودة. جماعة الخير، أنا بتكلم على درجة الحرارة.
درجة الحرارة، شو يعني؟ عادة لما بنقول درجة الجو،
بسألُك كيف الجو اليوم يا فلان أو يا فلانة، والله الجو
حار، شوب كتير بارد، ماحدش بيقول لي عشرين وتلاتة أو
أربعين وكذا، فبالتالي ممكن لو أنا... بالضبط لو أنا
حولتها لـ categorical، ممكن تفرج معايا. طيب، هاي حولتها
لـ categorical، شو يعني categorical؟ أن
أنا حطيتها لفئات، على الـ data set اللي موجودة
عندي، عشان بس تكونوا في الصورة. من عشرين، أقل أو تساوي
عشرين، استخدمنا cool. أكبر
من عشرين وأقل أو تساوي أربعين، استخدمنا أقل من أربعين،
عفواً، استخدمنا mild. وفوق الأكبر أو تساوي الأربعين،
روحنا استخدمنا الـ hot. اتذكروا
أن كانت عندي hand، تمانتاشر درجة الحرارة في الـ test
sample اللي موجودة عندي hand، الآن. وبالتالي لما أنا
بداجي أفحص درجة الحرارة اللي موجودة، خمسة وأربعين،
hot، تلاتة وأربعين hot، واحدة وأربعين hot، ستة و
تلاتين mild، cool، cool، cool، mild، cool.
Mild، Mild، Hot، Mild، تمام؟
هذه الـ data set، وبينما هذه الـ 18 هتكون عندي cool.
الآن صارت كل الـ data عندي categorical، وبالتالي صارت
كل الـ attributes اللي عندي نفس الـ weight، شو
ضال عليّ أحسب الـ distance؟ طيب، أنا هسكت دقيقة، هعمل
pause دقيقة، أترك لكم مجال، أجيب الحسبة تبعتي. أستخدم
Manhattan ولا أستخدم الـ Euclidean distance لحساب
الـ similarity ما بين العناصر اللي موجودة عندنا.
طيب... الآن، بما أن كل الـ data categorical، معناته صفر
وواحد، هتصير المعادلة تبعتي، وخلينا مش فارق كتير
معايا من هاتن أو إكلوديا، مش فارق كتير، في الآخر أنا
بدي أجمع أصفار وواحدات. sunny وsunny، zero، زائد
hot وcool، واحد، لأن اتفقنا في حالة التشابه صفر، في
حالة الاختلاف واحد. زائد normal وhigh، واحد، زائد
false وtrue، واحد. وبالتالي هذه القيمة تلاتة. الـ
attribute اللي بعدها، sunny 0، زائد hot واحد، زائد
واحد، زائد صفر، وهذا يساوي اتنين. ولاحظ، لاحظ كل الـ
values تبعتي بالدور حوالين الـ range اللي موجود
عندي هان، اما بين الأربعة والصفر. هذه القيم اللي
موجودة عندي هان. طبعاً أنا مجهز هان عشان ما نضيعش
الوقت في الحساب. هذه
الـ computation بالكامل.
تمام؟ shortest distance مع الـ K equal واحد، اتنين،
أول اتنين هي... لأ، في عندي واحد، هيها الـ
label تبعتها no، والـ label هيختلف عن السابقة. في
المثال السابق، كانت لما الـ K تبعتي equal واحد، كان
بيقول لي ألعب، تمام؟ وبالتالي لما أنا اشتغلت هان،
بيقول لي no. هيها، ليش؟ ماحدش يقول لي، لأن؟ ليش يا دكتور
مش هذه الـ yes هي اللي كانت؟ لأن عندي الـ sorting،
هذا الـ attribute، أو عفواً، هذا الروح، هياخد المرتبة
الأولى. يعني، بينجو سي، لما أنت بتيجي ترتب، خلينا نتكلم
بالـ bubble sort. شو مفهوم الـ bubble sort؟ بضلني
أقارن العنصر، لما بلاقي أصغر عنصر، ما بدي أش اساوي
فيه، أحركه للأعلى. بضلني أقارن العنصر مع عناصر
الجابلة، لحد ما بلاقي أصغر عنصر، بصير أرفعه. بهيك أنا
بأضمن، بدور على الـ minimum value، بروح بحطها فوق.
بدور على الـ minimum وبعملها shift، وهكذا، وبالتالي
هذه هي أول واحدة ستحصل عليها. أنت مش مصدق؟ خد الـ
data set هذه على الـ Excel، واعمل لها sort تبعاً للـ
distance، وستجد أن الـ attribute هذه ستكون أول
attribute موجود عندك. تمام؟ لو الـ K equal 3، هاي
واحدة، وهي واحدة، وهي واحدة. أنا عندي أربعة، فأخد أول
تلاتة. واحد، اتنين، تلاتة، الـ majority تبعتها yes.
وبالتالي هتكون yes. لو قلت له خمسة، هضيف الواحد هذه
معهم كمان، وهتيجي وراهم الاتنين هذه. الآن، تعالَ
نشوف الـ label اللي صارت عندي هنا.
صار في عندي 1، 2، 3، 60% yes، و40% no. وبالتالي لما
تكون الخمسة، الـ K تبعتي equal خمسة، معناته المجلة
تبعتي بتقول yes. ملاحظين معايا تأثير فعلياً الـ
processing على الـ data set؟ جدّاً مهم، جدّاً مهم. بتمنى
أن يكون هذا الموضوع أصبح اليوم يعني من بديهيات
لديكم، ومن ثم أنه إحنا فعلياً أصبحنا غطينا كل جوانب
الـ K nearest neighbor، إن شاء الله تبارك وتعالى.
تمام. الآن، هنتقل إن شاء الله تبارك وتعالى للـ
algorithm الثاني. للـ algorithm الثاني، اللي هو بيبني
شبه model، تمام، وبيعتمد على الـ probabilistic. الـ
classification، هيعتمد على نظرية الاحتمالات في الـ
classification، وفهمها اللي
هو الـ naive Bayesian algorithm، أو الـ bias، يعني
classification، وبالتحديد الـ naive bias classifier.
طيب.
الآن إحنا اتفقنا... اتفقنا سابقاً أن الـ K nearest neighbor
هو عبارة عن instance based model، مصبوط. يعني بيعتمد
دائماً في كل مرة، مع كل sample، بروح بعمل حسبة للـ
distance من الـ sample الأولى في الـ training set للـ
sample الأخيرة، تمام. وبدور على الـ data set اللي
موجودة عندها. في الـ Bayesian، شوية الأمور مختلفة. الـ
Bayesian model، أو الـ Naive bias، هو عبارة عن very fast
model وsimple classification في نفس الوقت. مناسب
جدّاً مع الـ high dimensional data set اللي موجودة
عندي، لأنه
فعلياً ما فيش فيه parameters. لو كانت فيه parameters موجودة،
ما فيش فيه parameters كتير أعتمد عليها. العناصر أو الـ
Naive bias بشكل عام بيعتمد على الـ probabilistic، و
بوصف العلاقة ما بين العناصر أو الـ attributes والـ
label بناءً على احتمالات. خلينا نيجي نقول، أذكركم
بس بالاحتمالات اللي موجودة عندي هان. لو كان أنا في
عندي صندوق بيحتوي على عشرة samples، 6
plus و4 minus.
الآن بلاش plus، خلينا نرسم عمود بالشكل هذا، لحاجة في
بالي. يعني الآن، وجئت قلت لك قداش احتمال أنه يطلع
معايا plus، عشان بس نذكرك بالاحتمالات.
6 على 10، صحيح. الـ probability تبعت الـ plus 6 على 10.
والـ probability طبعاً
عشرة، هي حجم الـ space، اللي أنا، population اللي أنا
بقى اشتغل عليها. طبعاً هذه 4 على 10. الآن
في عندي مصطلحات زي الـ most likely، الـ prior، الـ
posterior، الـ probability إلى آخرها. الـ posterior،
السابق، الـ most likely، اللي هي الأغلب الظن، أو
الغالب، العناصر الموجودة، أو الأكثر احتمالا، وكل هذه
الحسبة تبعتي بناءً على الـ probabilities. إحنا
متفقين الآن... إحنا متفقين الآن أن أنا، هي الـ
probability تبعتي. لكن لو أنا جئت وقلت لك مش بس
على الـ final shape، وبدخل معاها الـ color، وروحت و
قلت لك في عندي الـ dash هذه.
عليها أو أخلص منها عفواً، بس الآن خلّيني أقول هنا C
of X الـ class لـ X يساوي الـ maximum probability
لمين؟ الـ B لـ Probability لـ الـ class يعني بينجو
سيم يجي ويقول لي والله الـ instance الفلانية اللي
هي الـ dash هذه الـ class طبعتها الـ class طبعت الـ
dash هذه تساوي الـ maximum probability
probability يعني بدي آخذ أعلى probability لمين؟ لـ
الـ classes أنا في عندي two classes يعني بدي أحسب
two probabilities الـ probability لـ الـ class أنَّها
تكون زائد أو تكون عمود، تمام؟ فمضروبة انه جداش
احتمال عناصر... مجموع العناصر اللي موجودة عندي هنا
مع الـ class اللي عندي، وبما أنَّه عملية مقارنة زي ما
خلصت سابقاً من الجذر التربيعي، ممكن أخلص الآن من
المقام لأن ما بدي أجسم على ثابت، فممكن أنا أخلص منه
وبالتالي أنا بُصغر المسألة تبعتي للـ argument X
تعالَ نشوف العناصر، إيش المقصود فيها بشكل سريع
المعادلة السابقة اللي إحنا ظهرت عندنا هنا الـ
posterior probability اللي هيقول لنا posterior سابقاً
الـ class على الـ conditional probability تبعت الـ
class والـ attributes اللي موجودة عندي هنا الـ
Probability لـ X على الـ class، الـ likelihood اللي
هي فعلياً الاحتمال اللي أنا بدور عليه، وهو عبارة عن
summation سنشوفها قليلاً الآن، Probability تبع الـ
class نفسه، الـ prior اللي موجود عندي هنا، والـ X الـ
predictor، الـ probability اللي أنا فعلياً بدي أشوفها
تعالَ نشوفه عشان نفهم الكلام هذا، والمعادلة من
ناحية الحساب، لأن شوية الأمور لو بدأت تبقى في
المعادلات الرياضية، هتغم الأمور علينا، لأن إحنا في
جماعة هنا على غرار الناس اللي كانت بدأت تلعب golf
قررت تروح على البحر، على الشاطئ، الآن هل بدهم يروحوا
على الشاطئ ولا ما يروحوش؟ والله قالوا في عندنا ثلاث
عوامل أساسية: الطقس، المظهر مشمس ولا ممطر ولا غائم،
درجة الحرارة، والـ humidity اللي هي الرطوبة، نفس
المثال السابق، لكن غيرنا الـ label من playing golf لـ
beach
الآن مطلوب مني أشتغل كالتالي: بدي أعمل جدول بسيط
الجدول مثل هذا الجدول، هلق إحنا هنشتغل معاكم بكل
بساطة، إيش بده يساوي؟ أنا بدي أعمل prediction لـ data
set بناءً على probability، أنا الآن هاد الـ data set
أو الـ training set تبعتي جاهزة وثابتة، الآن اللي
هرَوح أسويه، هرَوح أحسب علاقة الـ X، الـ outlook مع الـ
label، الـ Probability تبعتها مع الـ... مع الـ sunny
الـ... الـ Probability تبعتها... عفواً، الـ Outlook
فيها كم value، different value، three values: sunny
وrainy وcloudy، علاقة الـ sunny مع الـ yes ومع الـ
no، علاقة الـ rainy مع الـ yes ومع الـ no، علاقة الـ
cloudy مع الـ yes مع الـ no، وأفصل في الجدول اللي
موجود عندي، يعني بدك تيجي لكل attribute بشكل مستقل
هذا الجدول، حاجة أقول والله أنا بدي أتكلم على الـ
outlook، طبعاً جابلي جماعة الخير، لو أنا سألتك، لأن الـ
going للـ beach للـ yes وللـ no زي ما حسبنا هنا الـ
probability للـ yes جداش تساوي؟ الـ data 6 فيها
عشرة، هنا واحدة، اثنين، ثلاث، أربعة yes، أربعة على
عشرة، الـ probability للـ no ستة على عشرة بكل تأكيد
بدون ما أروح أضطر أعدّ الـ yes مظبوطة، الـ outlook الـ
outlook الآن فيها three different values، في
عندي الـ sunny، في
عندي الـ rainy وفي عندي الـ cloudy، ممتاز، طيب وأنا في
عندي فعلياً في الـ labels في عندي الـ yes وفي عندي
الـ No، الـ beach، صح؟
الآن
كم واحدة sunny عندي؟ أنا واحدة، اثنين، ثلاث، أربعة
ممتاز، علاقة الأربع الـ sunny هدول المفروض يكونوا
مُجسَّمات على الـ yes والـ no، الـ yes جداش؟ أربعة، طيب
الآن بدي أقول sunny وyes، يعني أنا بدي أجسّم على
أربعة يا جماعة الخير، وأنَّه ستة، مضبوط، لأن الـ over
all probability تبعت الـ yes، ظهور الـ yes فقط أربع
عناصر، أربع مرات، وظهور الـ no ست مرات، إذا كانت الـ
yes مرتبطة بالـ classes هاي، فعشان أنا أحسب الـ
probability تبعت الـ yes والـ sunny، الـ sunny هاي
مرة yes
اثنين، ثلاث، أربعة، صح؟ ليش هذه لا؟ لأن هذه جاء الـ label
تبعتها no، هاي خلّصنا الأربع الـ sunny اللي موجودة
عندها، يعني بينجو، اثنين، الـ sunny الـ probability
تبعتها ثلاث على أربعة، زائد جداش؟ جداش واحد على ستة
خلاص، أنت ما فيش داعي إنك أنت عايش تنظر لباقي
العناصر، مجموع الـ sun اللي فوق على العناصر اللي
موجودة عندي هنا، الـ rainy الآن جداش؟ حسّبة الـ yes ما
زالت أربعة، والنقل ستة، rainy بدي أشتغل عليها نفس
الكلام، rainy واحدة، اثنين، ثلاث، في عندي ثلاث rainy
والثلاث جايات كلهن من نفس الـ class، معناته صفر على
أربعة زائد ثلاث على ستة، وهلّق بيقول لك طريقة كيف
تتأكد من حيث تفكر إن كل الـ probability بتاعتك صح
cloudy الآن برضه نفس الكلام، أربعة على ستة،
cloudy فيها واحدة مع الـ yes وهم ثلاث، واثنين مع
الستة، الآن لو عديت العناصر تبعت الـ yes، ثلاث على
أربعة زائد صفر على أربعة زائد واحد على أربعة، تطلع
أربعة على أربعة، لو عديت عناصر إنَّه واحد على ستة
زائد ثلاث على ستة زائد اثنين على ستة، تطلع ستة على
ستة، وهي فعلياً الـ probability، لازم مجموع الاحتمالات
كلها تكون عندي واحد، ممتاز، هذا بالنسبة للـ attribute
الأول
وبدي أروح أحسبها للـ attribute الثاني بنفس الكيفية،
temperature
temperature كان فيه... كان value عندي، عندي three
values: high، وlow، وmild، الـ low نبدأ مع الـ low هاي
واحدة، هاي اثنين، اثنين بدهم يتوزّعوا على الـ yes والـ
no، الآن صفر no، و no، معناته صفر على أربعة، واثنين
على ستة مع الـ no، طيب خلّصنا من الـ من الـ low، الـ mild
الـ mild هي واحدة، اثنين، ثلاث، ثلاث عناصر، الثلاث
عناصر هدول يتوزّعوا ما بين الـ yes والـ no، هي الـ
mild الأولى yes، الـ mild الثانية no، والـ mild
الأخيرة no، معناته الآن هم هيكونوا واحد على أربعة مع الـ
yes اللي هي الأولى هاي، واثنين على ستة في حالة الـ no، و
بكمل الجدول لكل العناصر اللي موجودة عندي هنا، الـ
probability تبعت الـ beach، ممكن أحطّ لإيه؟ أنا كتبت
هنا قبل شوية، ممكن أحطها في نهاية الجدول، عشان أنا
أشتغل على العناصر اللي موجودة عندي فعلياً، ستة على عشرة
... الآن أربعة على عشرة، المفروض
في كل واحدة من هدول، ما يلاحظ أربعة على عشرة... أربعة على عشرة
... أربعة على عشرة، ليش أربعة؟ لأن فعلاً أربعة على الـ yes، و
هدول لازم يكون مجموعهم أربعة في كل attribute، وهدول
مجموعهم لازم يكون ستة، وفي المحصلة ستة على عشرة
ممتاز، الآن لاحظوا هذه الـ computation كم مرة هأعملها؟
لمرة واحدة على نفس الـ data set، هأعملها لمرة واحدة
فقط، ولما الـ data... ولما الـ data set ما صار
عليها تغيير، هتظل هذه موجودة عندي، إيش اللي حيصير
لاحقاً، عشان أطبّق المعادلة السابقة هذه، هأشتغل كالتالي:
بيجي بقول: بالله شوف اللي، إيش الـ label تبعت الـ
sunny والـ mild والـ high، إيش الـ label تبعت الـ
sunny، sunny
و mild، و
high، درجة الحرارة
عشان بدي أرجع معاكم للجدول السابق، تمّ ذكره في
المعادلة، المعادلة بتقول: الـ argmax لـ CI اللي
هي الـ class، الـ probability للـ CI مضروبة في الـ
probability لـ X على الـ CI، طيب هلّق قد بنفسر لك
إيّاها أوضح، وبنفسر لك إيّاها أوضح مع الأرقام، نرجع هنا
الـ probability للـ class، هو قاعد بيقول لي: بدور على الـ
argmax، بدور على الـ maximum probability لكل classes
كم class أنا عندي؟ عندي two classes، يعني بين جثين
الجماعة الخير، هو عمال بيسألني، بيسألني الـ
probability تبعت الـ element اللي موجود عندها على
أنّه يكون الـ class، والـ instance اللي أعطاني إيّاها
مش قلنا هذه اللي أنا بدور عليها، قاعد؟ هاي الـ
value، هو بدي تجيب لي الـ probability تبعت الـ class
مع الـ given instance اللي موجودة عندي هنا، طيب،
الآن حسب الـ data set، معناته أنا بدي أروح أشتغل
كالتالي: مرة مع الـ yes ومرة مع no، هذا الكلام بيقول
إيه؟ الـ probability مع الـ yes، الـ label مع مين؟ مع
الـ given data set، الـ sunny والـ mild والـ high، إيش الـ
probability تبعت high؟ أولاً بقول: هذه تساوي الـ
probability تبعت الـ yes، مضروبة
في الـ probability تبعت مين؟ تبعت الـ instance اللي
موجودة عندي هنا، أي instance، طب الـ instance تبعتي
مكونة من الـ outlook والـ temperature والـ humidity
مضبوط؟ كمان مرة، الـ instance تبعتي هنا اللي هي الـ X
هذه اللي أنا الآن هيها، مكونة من الـ outlook والـ
temperature والـ humidity، و بدي أروح بقول لي: علاقة كل
الـ values اللي موجودة عندهم بالـ class مين؟ بالـ
class yes، يعني بين جثين، هي عبارة عن الـ probability
لـ
S، للـ sunny، الـ outlook، equal
sunny مع الـ yes
مضروبة في الـ attribute الثانية، الـ probability تبعت
الـ temperature على الـ yes، هاي الـ sunny أو
الآن mild، هاي الـ mild، الـ temperature تبعتي high
هي الـ high، بكل بساطة بقول: ليه؟ ثلاث على أربعة، أو
عفواً، من الأول، أربعة على عشرة، تبع الـ yes، الـ
probability اللي موجودة عندي هنا، أربعة على عشرة
مضروبة في ثلاث على أربعة، مضروبة في اثنين، عفواً
واحد على أربعة، في اثنين على أربعة، وبهيك بكون أنا بدي
أعيد الحسبة تبعت لمين؟ لكل العناصر الموجودة، يعني الـ
probability للـ yes، طبعاً أنا فصلت لكم إيّاها عشان
ما تنسوهاش، لأن لاحظوا إن هي عبارة عن عملية ضرب
هادي لـ probability تبعت
الـ X على Ci، على class، تساوي لـ probability لمن؟ للـ
values x i على... هي بنجسّم الـ product للـ x i على
الـ class اللي موجودة عندها x j، والـ j equal 1 to n،
بعدد الـ attributes اللي موجودة عندها، الآن الـ
Outlook equals sunny يا جماعة الخير اللي
هي الـ attribute الأول، خلاص هي إحنا هنعتمدها بالشكل
هذا على الـ yes مضروبة في الـ probability للـ mild
اللي هي الـ attribute الثاني على الـ yes مضروبة في
الـ probability للـ attribute الثالث اللي هي الـ low
على الـ yes، بنجي نسينيج، هي عمود الـ yes، كل شغل على
الكيون على العمود هذا، sunny هي الـ value، هي الـ
value، و normal هي هيها
normal normal
بس عشان الـ example يكون تمام، بالـ normal هيها الآن
بكل بساطة، أربعة على عشرة ضرب ثلاثة على أربعة ضرب واحد
على أربعة ضرب اثنين على أربعة، وإذا أنا بدي أطلع الـ calculator
على السريع عشان أشوف حسابة هل في فعلياً تأثير للـ
element هذا أو لأ
قولنا أربعة على عشرة ضرب ثلاثة على أربعة ضرب واحد
على أربعة ضرب، طفت الـ calculator، أربعة
تقسيم عشرة ضرب ثلاثة تقسيم أربعة ضرب واحد تقسيم
أربعة
ضرب اثنين تقسيم أربعة anyway
الـ calculator خذلتنا في الآخر، الـ probability لأنه
بدي أعمل الـ probability لأنه لنفس الـ instance M N
حتكون
الـ probability لأنه مضروبة
القيم المقابلة لهم اللي عمال يحوطهم باللون الأزرق
بالإضافة للقيمة الأخيرة، ما تنسوهاش طبعاً، هاي اللي
هي في الأول، الـ probability لأنه كلها حتصير في
عندها ستة على عشرة مضروبة في واحد على ستة مضروبة في اثنين على ستة
مضروبة في اثنين على ستة، طبعاً لو إحنا فعلياً ٣٦ المقام هنا
أكبر من هنا، فغالباً اللي بالنتيجة حتكون yes، والـ
computation هي اللي بتحكم الموضوع، بتمنى تكون الآن
أصبحت الصورة بالنسبة لنا واضحة، كيف الـ naive baysian
بيشتغل، الفكرة أنه أبني الجدول، إذا أنت بنيت أو أنت
بنيت الجدول صح، معناته أنا مافيش عندي مشكلة، طيب في
حالة، هذا مثال ثاني على السريع
بغض النظر، إحنا مش هنطول عليكم إن شاء الله تعالى، و
بنفترض إنكم حتكونوا متابعين معانا، وبيكونوا كأنّه
في فرصة تشتغلوا، وزيادة الآن، هاي الـ data set كام
attribute؟ ثلاثة على نفس الغرار الـ attribute
السابق، السابق اللي لها دخل في الموضوع؟ لأ، هذا رقم
العينة، أو رقم الـ sample، الـ class تبعتي binary
class، ما فرجتش كتير يا جماعة الخير، بدي أبني الجدول
السابق بالكامل
هو بيقولوا، بدوا مني لـ class، مصبوط، الـ attribute A1
إيش الـ attribute A1 فيه values؟ طبعاً هنا في عندي
yes، واحد أو صفر، واحد في الـ attribute الأول كام
value؟ في عندي صفر، واحد، اثنين، يعني في عندي three
values، صفر، واحد، اثنين، أنا بكتبه من مرتب أفضل
إليه، الـ attribute الثاني
مع الـ labels اللي موجودة، إيش في عندي برضه values؟
صفر، واحد، اثنين، برضه ما عندي مشكلة، صفر، واحد، اثنين، الـ attribute الثالث اللي
أنا هشتغل عليه فقط
قيمتين، واحد، اثنين، وهنا في الآخر الـ probability للـ class، الـ
probability للـ class تبعتي، جدّش الـ probability..
كام class فيه؟ عندي three classes، عفواً، مصبوط الـ..
واحد، اثنين، ثلاثة، هاتوا، هل بدنا كمان عمود الـ class
اللي موجود عندي هنا، واحد
اثنين، ثلاثة
أي، ثلاثة، الـ
class الأول، واحد، واحد، اثنين، ثلاثة، أربعة، أربعة على
عشرة، الـ class الثاني، اثنين، واحد، اثنين، ثلاثة، ثلاثة
على عشرة، وهدا الأخير، ثلاثة على عشرة، مجموعهم عشرة
على عشرة، بدي أجي للعلاقة العناصر مع الـ class الأول
اللي موجود عندي هنا، صفر و واحد، هاي صفر، هاي صفر
اثنين مع
الواحد، أربعة، الـ
class واحد، معناته اثنين على أربعة، وحتمًا.. حتماً
الصفر مع الـ class الثاني، صفر على عشرة.. صفر على
جدّش، الاثنين على ثلاثة، وهنا صفر على ثلاثة، ليش؟ لأن
هون فعلياً الصفر هادي بينت مرتين فقط مع الـ
attribute الأول، وبالتالي أنا هنا بشغل في الـ
attribute الأول، الـ value الثانية، الواحد، الواحد هي
في المربع، واحد، واحد، واحد، واحد، أربعة عناصر، برضه حتكون
عندها القيمة على أربعة يا جماعة الخير، ما تنساش، وهذه
حتكون على ثلاثة، وهذه حتكون على ثلاثة، الآن واحد و
واحد هي.. okay، وهي كمان واحد، ممتاز، يعني اثنين على
أربعة، اثنين
على أربعة، هذه واحدة، وهذه اثنين، طيب جدّش الواحد على
ثلاثة، واحد وثلاثة هيها، ما، واحد على ثلاثة، وجدّش
مع الواحد والاثنين هيها، الـ probability تبعتها، ضال
عند الـ value الأخيرة الموجودة
عندي لمين؟ للثنين، هي الثنين، هي الثنين، هي الثنين، في
عندي أربعة قيم، الأربعة قيم منهم
ولا واحدة مع الـ attribute أو مع الـ class الأول، صفر
على أربعة، ولو أنت جمعت فعلياً هنا، اثنين على أربعة
أو اثنين على أربعة، لازم يطلع معاك أربعة على أربعة
لأن هما الـ maximum أربعة، عفواً، إن هنا اثنين على
أربعة، الآن مع الواحد ولا مافيش شيء مع الاثنين هي
واحدة، هي اثنين، وبالتالي هنا
هذه اثنين على ثلاثة، وهذه اثنين على ثلاثة، لو جمعت
العناصر اللي موجودة عندي هنا، والعناصر اللي عندي
هنا، لازم تاخد ثلاثة وواحد صحيح، وهذه تاخد واحد
صحيح، كمليّة الجدول، نفس الصورة السابقة، حيكون الجدول
هيه عندي بالتمام، ومجرد إن أنا أعمل الجدول هذا
بيسهل عليّ جداً إن أحسب العناصر، خليني على السريع بس
أحط المثال الأخير، لو أنا افترضت إن أنا عندي واحد
واحد واثنين، ما أعرفش، أنا كتبت بشكل random، هل فعلياً
هذه إيش الاحتمال تبعتها إنّها تظهر عندي، أو إيش الـ
class تبعتها اللي توجد عندها، هذه مع الـ class الأول
بدي أحسبها
و بدي أحسبها مع الـ class الثاني، وبدي أحسبها مع الـ
class الثالث، طيب مع الـ class الأول، واحد، وين الـ
واحد؟ هيها يا جماعة الخير، الـ attribute الثاني برضه
واحد، الـ attribute الثالث كانت اثنين، هيها، معناته
أنا بدي آخذ الاحتمال تبع الـ row للـ class الأول
معناته أنا بدي أضرب القيم اللي عليها تحتها
الخط هذه في بعضها، الـ probability تبعتي الواحد
أربعة على عشرة مضروبة في الـ probability، واحد على
واحد، اللي هي attribute A1 equal واحد على واحد
مضروبة في الـ probability، A1A2 equal واحد على واحد، مضروبة
في الـ probability، الـ
probability للواحد as class، مضروبة في الـ
probability للـ A1 equal واحد على واحد، مضروبة في الـ
probability للـ A2 equal واحد على واحد، مضروبة في الـ
probability تبعت الـ A3 equal اثنين على الواحد، اللي هي
القيم اللي أنا حددتها، هيها، هذا بجيبها للـ class
الأول، بجيبها للـ class الثاني، بجيبها للـ class
الثالث، ومن ثم هاي
الحسبة اللي موجودة عندي الآن، بدور على الـ maximum
عندي ٢٥ من ألف، أربعة وأربعين، ٢٥٠ من عشرة آلاف، وأربعة وأربعين
من عشرة آلاف، و ١١١ من عشرة آلاف، الـ most
probability تبعتي، والـ maximum probability أربعة
من مئة، أكيد أكبر من اثنين من مئة، وأكبر من واحد من
مئة، وبالتالي أغلب الظن إن هذه الـ instance حتُصنّف
مع الـ class الثاني، مع الـ class الثاني، لكن أنا
انتبهت لشغلة وأنا بقى أشتغل في الحسبة، وهي إن الـ
instances اللي أنا كتبتها موجودة بس
إيش الـ class تبعتها؟ ثلاثة، يعني صار في عندي
misclassification، هل هذه مسئوليتي؟ لأ، مش مسئوليتي
أنا اشتغلت عليها لأن أَخْضَعْتها لاحتمالات تمام، وهذه
وزنها كان واحدة من العناصر اللي موجودة، لكن الـ node
تبعتي هذه حسب الاحتمالات أو حسب الـ naive baysian
بتطلع لمين؟ مع العنصر الـ class two اللي موجود
عندها، الآن زي ما قلنا، الـ Naive Bayesian، ختاماً للكلام
اللي إحنا اشتغلناه، طبعاً، يا جماعة الخير، في إنّكم data
set موجودة سابقاً في الـ examples السابقة، جرّبوا
عليها Naive Bayesian، ما تستناش، ما تقوليش، ملّون، بدي
أسئلة، في عندك الـ data set اللي موجود في الـ slides
واللي أنا اشتغلت عليها سابقاً، كـ classifier في عنده
strict assumptions زي ما قلنا، about الـ data اللي
هو الـ independent attributes، والـ normal
distribution تبع الـ data اللي موجودة، وهذا بيخليه
fast، very fast، أو extremely fast في الـ training
وفي الـ prediction، في الـ training لأنه بيبني
الجدول مرة واحدة، وفي الـ prediction مافيش.. يعني
الـ computation تبعتها قليلة، straightforward
probabilistic prediction، بيعتمد على الـ
probabilities تماماً، على الاحتمالات، سهل جداً إنّي أفسر
ليش طلع هيك، مش بحاجة إنّي أعمل tuning لـ parameter
لأن فعلياً أنا ما شفتش أي حاجة بيطلب مني بما
إنّه في عندي strict and
complicated
model، فعلياً الـ Naive Bayesian زي ما إحنا شفنا في
حسابه سهل، نعم، لكنه مش سهل إنّي أطبقه في كل مكان، طبعاً
ما هي المطلوب إن أنا فعلياً، وين أنا بدي أروح أطبق
الـ Naive Bayesian؟ فعلياً أنا بقدر أروح أستخدمه أو
ممكن اشتغل كويس لما يكون الـ Naive Assumption
فعلياً موجودة مع الـ data، يعني بين قوسين أنا شبه
متأكد إن الـ attributes اللي عندي كلها independent
attributes، لكن أنت الكلام متأكد منه ولا مش متأكد
منه؟ ما بعرفش، ما بيعرفش، الحل كيف بتتأكد من الـ
dependency من الـ attributes؟ بدك ترجع للـ data
preparation وتفحص الـ correlation ما بين الـ
attributes، وزي ما شفنا في عندنا الـ chi-square، و
في عندنا إيش كمان؟ الـ Pearson coefficient، إلى
آخره هو، بناءً على هيك أنت بتصير تدور على تفهم الـ
data set أكثر، very well separated categories، لما
يكون الـ categories اللي عنده فعلياً finite، و
مفصلين عن بعض، مافيش بينهم يعني، بين قوسين الـ data
set بتفرج بشكل كويس، وإحنا لاحظنا في المثال السابق
إنّه فعلياً عمل misclassification للـ point اللي
موجودة عندها، very high dimensional data، لما تكون
الـ data تبعتي عالية جداً، أو فيها عدد كبير من الـ
attributes، ممكن أنا أشتغل، آخر شغلة في محاضرتنا هي 840 01:08:45,630