باسم الله والحمد لله والصلاة والسلام على رسول
الله هذا التسجيل الأخير إن شاء الله في الـ chapter
clustering عفواً قبل الأخير بيضللنا في تسجيل إن شاء
الله سيكون عملي باعتماد الـ python الصحيح فشوف في
شغل الـ python بعض الإبداعات منكم وبعضكم .. حلو
حلو حلو طبعاً ما شاء الله
البداية، الـ chapter إن الـ cluster هي عبارة عن عملية
تقسيم الـ instances بناءً على تشابه أو similarities
ما بينهم لمجموعات، في عندنا الـ partition cluster والـ
partition cluster أنه ما يكونش فيه overlap
clusters وفي عندنا hierarchical cluster أنه أنا
فعلياً أقدر أشوف كل cluster بينتمي لأي cluster والـ
طبعاً هنا بتحكم في عدد الـ clusters اللي أنا بدي
إياها، كل cluster ببساطة، اليوم إن شاء الله نتكلم عن
جزئية الـ evaluation طبعاً لما نتكلم عن الـ evaluation
كتقييم الـ ..
نتكلم عن التقييم، هل التقييم وارد في الـ
clustering؟ التقييم كتقييم في الـ clustering إذا الـ
data بقى unlabeled أو عمره بيكون صحيح لأن أنا
فعلياً لازم أتدخل human عفواً المقصود أن التقييم
مستحيل يكون صحيح أو حالياً بدي أقول أنه يكاد يكون من
المستحيل تطبيق التقييم إلا من خلال expert قادر
فعلياً على دراسة كل instance وفعلياً أنها تنتمي لـ
cluster أو متشابه مع العناصر اللي موجودة عندها، لكن
إحنا هلأ لما نتكلم عن الـ clustering، أنا لدي
algorithm و data set وطبقت على الـ data set، هل في
مجال أعمل evaluation للـ algorithm أو للناتج اللي
موجود؟ آه في مجال لكن في حالة واحدة فقط، إذا أنا
اعتمدت أن في عندي labeled data set، طيب إحنا قلنا
من البداية أن
الـ cluster بتشتغل على الـ test set يعني الـ label مش
موجود، صحيح، الفكرة وين أن أنا بدي أفصل الـ data set
بتاعتي، مجموعة الـ attributes لحال والـ target label
لحال، وبعد هيك أعمل لها الـ clustering، بدي أعمل هنا
clustering للـ data set اللي موجودة عندي هنا وبناءً
على الـ clusters، أنا عارف أن كل instance بتتبع أي
label، فبيصير أنا بقى بأقارن الـ label اللي عندي مع الـ
clusters اللي هو اللي عندي هنا وبناءً على هيك بحصل
على تقييم، وبالتالي لما إحنا بنتكلم على الـ الـ الـ الـ
(Repeated "ال" - removed)
لأن النتائج اللي موجودة عندي ما حدش بيقول عنها صح
أو خطأ، يعني أنا استخدمت two different algorithms
وقلت لهم والله جسمّلت الـ data set كـ partitional لـ
three clusters، طلعوا لي three clusters، مش ضروري مش
ضروري العناصر اللي في الـ cluster الأول هي نفسها
اللي في عناصر الـ cluster الثاني، ناتج الـ
algorithm وبالتالي مقارنة الـ output شبه مستحيلة، إذا
كنت أقول أن الـ Algorithm أعطاني نفس النتيجة أو
نفس الـ الـ فايدة من الثاني، فلا يتميز الثاني عنه
تمام، إلا فعلياً لو الـ Data كانت فعلياً الـ Data
discriminant، الـ instances ميّالة لـ different tree
classes وكل واحدة، كل instance تنتمي لـ class، يعني
في عندي discriminant attribute و أقدر أصفّهم
أو أودّيهم على الـ certain class أو الـ target
cluster، عفواً بشكل كويس، لكن لما أنا فعلياً بأطبق
ممكن باعتمادي على الـ training set، الـ training set
إذا أنا طبقت الـ cluster algorithm على الـ training
set، تلاحظوا معايا يا جماعة الخير؟ لما أنا بدي أعمل
evaluation، الآن فعلياً، فعلياً ليه الـ clustering
unsupervised learning؟ يعني أنا بتجاهل الـ label أو
الـ label مش موجود في الـ data set، هذه واحدة، لما أنا
بدي أعمل له evaluation للـ algorithm، تمام؟ بقدر أعمل
evaluation في حالة واحدة فقط إذا أنا قدرت أطبقه
على الـ training set، شو الـ training set؟ يعني في عندي
label، طيب هل الكلام هذا موجود؟ آه موجود، بيصير كل
label، كل class بمثابة cluster، كل class بمثابة
cluster وبروح بأخذ الـ class وبجسّم الـ data set
بدون الـ cluster زي ما واجهتكم في الـ slide السابقة
زي ما أرسلناها، يعني أنا الآن هي الـ data set بتاعي
مرة كمان، فصلت الـ cluster
أو فصلت الـ data set، الـ attribute والـ label أو الـ
class، جسمّلت
الـ data set، صار عندي الآن هي الـ label وهي الـ
attribute، الآن بأجي بأطبق الـ clustering، بأطبق الـ
clustering على الـ attributes اللي موجودة عندها
على الـ instances اللي موجودة، تمام، الآن فعلياً كل
instance بتبقى class وفي عندي مجموعة instances في
نفس الـ class، بينجّم أنه فعلياً الـ data already
منجسمة، فإذا أنا قدرت أربط ما بين الـ true cluster
اللي هي الـ label والـ predicted cluster اللي موجود
عندها، بقدر أنشئ شغل اسمها الـ Contingency Matrix
ومن الـ Contingency Matrix ممكن أن أتكلّم على شغل
أول metric، هسميها الـ Purity، تعالوا نتكلم عن الـ
Contingency Matrix، ايش الـ Contingency Matrix
بتقول؟ أن لدي ثلاثة .. طبعاً لاحظوا يا جماعة الخير
في موقفي، أنا بدي أختبر Clustering Algorithm في
عندي labeled data set، الـ labeled data set فيها عدد
classes معيّن N، لما بدي أستخدم الـ Clustering
Algorithm، بدي أقول جسمّلتها لـ N من الـ cluster لأن
كل cluster بدي يمثل Class، فأنا بفترض أنه عندي data
set مكوّنة من three classes، labeled data set مكوّنة
من three classes، بنسمّيهم T1 وT2 وT3، من true true
cluster أو true segment أو true partition، سمّوها زي
ما بدّكم، true label سمّوها زي ما بدّكم، وC1 وC2 وC3 هما
الـ clusters اللي أنشأتهم من الـ algorithm اللي
موجود عندها، ايش راح أجيب؟ ايش بفهم الـ contingency
matrix؟ أن في C1، C1 خمسة وعشرين element بينتمي لـ
T2 وخمسة
elements بينتمي لـ T3، وخمس عناصر بينتمي لـ T3، يعني
عندي 25 عنصر من T، ناتج
الـ clustering، C1 بيحتوي على 30 عنصر، 25 منهم حقيقة
من الـ class الثاني و5 من الـ class الثالث ولا
واحد من الـ class الأول، T2 أو cluster C2 بيحتوي على
35 عنصر، 15 من الـ class الأول و20 من الـ class
الثالث، cluster ثلاثة بيحتوي على عشر عناصر فقط، كلهم
كلهم بيتبعوا T1، الآن هذا الكلام إذا أنا فهمته
معناته أنا مش ضروري الـ Clustering algorithm تبعي
يكون صح مائة في المائة، ممتاز، طيب متى بيكون صح مائة
في المائة؟ إذا والله أنا إجيت قلت هيك مثلاً
حصرت على صورة واحدة من الصور التالية، فأنا هأتكلّم عن
الـ matrix، لو أنا إجيت قلت هنا والله عندي
هنا ثلاثين
وعندي هنا 20 وعندي هنا 50 وأنا
C1، C2،
وC3، والباقي أصفر، طبعاً هنا T1، T2، T3، وأنا تعمّدت أحط
القيم نفس الكمية، لحظوا معايا إنه فعلياً كل cluster
completely pure، صافي ما فيش فيه أي .. يعني كل
cluster مثل واحدة من الـ classes اللي موجودة عندي
كل cluster مثل واحدة فقط من الـ classes اللي موجودة
عندي، وهنا بتكلم إنه فعلياً كل cluster نقي تماماً
بيحتوي على عناصر من نفس الـ class فقط، عشان هي كان
بنتكلم إحنا على الـ purity، نقاوة أو نقاء، درجة
النقاء، طيب بما أن الحالة دي هي الـ optimal case أو
الـ ideal case واللي أنا فعلاً مش هأحصل عليها، أنا
هأحصل على شغل مشابه زي هيك من خلال الـ contingency
matrix، كيف أحسب الـ purity؟ الـ purity هي تساوي
عبارة عن مجموع الـ maximum في كل صف، الـ maximum عدد
maximum للـ Ti تنتمي لـ C، على الآن، الـ maximum خمسة و
عشرين، الـ maximum عشرين، الـ maximum عشرة، يعني خمسة و
عشرين زائد عشرين زائد عشرة، عندما أتكلّم عن خمسة و
خمسين، على كل الآن خمسة وخمسين، وفي عندي أضيفهم
هنا على خمسة وسبعين، بتكلم على الـ purity، الآن إن
عندي هنا ثلاثين، خمسة وثلاثين هي خمسة وستين، خمسة
و سبعين، معناته عندي أنا هنا خمسة اللي عندي هنا
نتكلم .. إحنا قلنا الـ maximum خمسة وأربعين ..
خمسة وخمسين .. خمسة وخمسين على خمسة وسبعين، هذه
الـ purity تبع الـ cluster أو تبع الـ contingency
matrix اللي موجودة عندي
طيب .. تعالوا نشوف المثال البسيط اللي عندي هذا
أنا مش بقول، بقول إن أنا الـ Purity بقدر أحسبها إذا
كانت بتعامل مع test set بتحتوي على target class
تخيّل، عشان يدمج التعريف هذا، الـ definition هذا، عشان
يدمج ما بين الشغلتين، بين إنه فعلياً الـ clustering
بتطبق على test set وأنا ما بقدرش أروح أقدر أعمل
evaluation إلا غير لو كان الـ label موجود، فجالي الـ
test set بتحتوي على target التي بنجمعها من الـ training
set ولا شو رأيكم؟ training
set، بيبقى الآن بقول، أفرض أن أنا في عندي test set
مكوّنة من 24 element بتنتمي لـ three different
classes، الـ O أو الـ circle، triangle، و square، ومجسّم
العناصر بالتساوي، 8، 8، 8، 8، بعد ما طبّقت الـ clustering
تبعتي، الـ cluster C1 فيها العناصر التالية، الـ cluster
C2، والـ cluster C3، طبعاً هنا في مصطلح جديد أضيفه
نقاء كل cluster، نقاء كل cluster بشكل مستقل، إذا
سألتكم، الـ cluster الأول بيمثل ايش؟ معظمكم حيقولوا والله
هذا بيمثل المثلثات، الـ triangles، واللي تحت
التاني راح يمثل المربعات الحمراء، وهذه راح تمثل الدوائر
الخضراء، مظبوط؟ فبالتالي أنا بقدر أحسب الـ purity
تبع كل cluster، الـ cluster الأول بيحتوي على 9 عناصر
والـ maximum كانت لمين؟ للمثلثات، معناته 6 على 9
لكن مش هي الـ target بتاعتي، أنا ما بهمنيش الـ purity
تبع كل class، أنا اللي بيهمني الـ purity لكل output
مرة واحدة للـ algorithm، الـ 24 element، هروح
أدور هنا، الـ maximum هنا 6، الـ maximum هنا 5، الـ
maximum هنا 5، 6 زائد 5 زائد 5 على 24، 16 على 24
درجة النقاء اللي بيعطينا إياها الـ cluster هذا بشكل
عام، 76.67% وهيك بتتمّ حساب الـ purity بتاعتنا هنا
طبعاً كمان مرة برجع بقول، أنا بقدر أتكلّم بشكل مبدئي
الـ majority تبع كل cluster، كذا غالبية تبع كل 175 00:14:09,910 -->