بسم الله والحمد لله والصلاة والسلام على رسول الله
أهلا وسهلا بكم في الدرس الثاني من الـ chapter
clustering. كنا في التسجيل السابق تكلمنا عن الـ
clustering بشكل عام، وقلت إنّ الـ clustering هي عبارة عن
تقسيم الـ data set إلى مجموعات محددة عددها مسبقا
بناء على تقارب أو تشابه الـ instances الموجودة
في الـ data set. يعني، وكنا خلصنا في
نهاية المحاضرة أنّنا فعلنا... أو في نهاية التسجيل
عفوا، أنّنا فعليًا الـ... الـ clustering واحد من
اثنين: إما partition clustering أو hierarchical
clustering. فالـ partition clustering يعني أنّ
أنا بتكون الـ groups أو المجموعات اللي عندي
disjoint، ما فيش بينها overlap، ما فيش
بينهم تقاطع في العناصر. يعني كل element موجود في
مجموعة واحدة فقط. لكن بالـ hierarchical clustering،
لما أنا بيكون عندي hierarchical tree أو عندي
hierarchy معينة، بيصير فيه ممكن الـ
element ينتمي لأكثر من cluster. تماما مثل
علاقة الأعداد أو المجموعات، الأرقام مع بعضها. اليوم
إن شاء الله تعالى، زي ما إحنا متفقين، إنّنا هنبلش في
موضوع الـ partitional clustering. طبعًا لما أتكلم على
الـ partition clustering، يعني أنّني أتكلم على...
عفوا، تمام.
أنا أريد الـ pointer.
عندما أتكلم عن الـ partitional clustering، يعني
أنّني أبحث عن الـ natural groups للـ components
الموجودة عندي على الـ data الموجودة، بناء على
تشابه معين، أو بعض التشابه في العناصر الموجودة
عندها. وبالتالي الـ cluster هنا في الـ partitional
clustering، أنا بأجمع العناصر زي ما قلنا، مجموعات أو
توزيع طبيعي، أو أبحث عن توزيع طبيعي للـ data بحيث
أن يكون عند كل element موجود في مجموعة واحدة، وفي
نفس
الوقت. الـ clustering algorithm بيديني الـ
centroid أو النقطة الأساسية التي تمثل مركز الـ
cluster، أو بتمثل المركز تبع الـ cluster الموجودة
عندها. مركز الـ cluster أو المجموعة الموجودة
عندها، عشان أحدد عضوية الـ cluster. هذا يعني أنا زي
ما قلنا سابقا، هي عبارة عن مجموعات معروفة مسبقا
يعني، واحد، اثنين، ثلاث مجموعات، مجرد ترقيم
مجرد اسم للمجموعة. عشان هيك أنا بحدد عضوية
المجموعات. الـ algorithm بياخد الـ data points اللي
موجودة عندي هنا، وبحسب المسافة بينهم وبين
الـ centroid الموجودة عندها. طيب الـ centroid اللي هي
الـ centers اللي اتفقنا عليها، مش موجودة عندي أول
مرة، بياخدها بشكل عشوائي، وبروح بأجمع يعني بروح
بياخد مجموعة. طبعًا الآن في عندي المجموعة بتكون شاغلة
لما يكون فيها على الأقل عنصر واحد. فإيش هو بروح
بفترض، بروح بفترض أنّ كل مجموعة بتبدأ بعنصر واحد
اللي هو بمثل الـ center، وبصير بعد ذلك يدور على
عضوية المجموعات، على قرب الـ element من الـ
center. هذا كلّ مكان قريب للـ center من التلاتة هدول،
فهو بيتمّ إلى المجموعة اللي بتمثلها الـ center اللي
موجودة عندها. والـ output طبعًا من الـ algorithm هذا
هي عبارة عن عملية description أو statistical
description، وصف إحصائي للـ data set الموجودة. مين هو
الـ centroid، وإيش هي البيانات اللي موجودة عليه، وإيش
هي البيانات اللي موجودة في داخل الـ clusters الـ
cluster الموجودة عندها. طبعًا لما أنا بأتكلم إنّه
في عندنا الـ k-means clustering algorithm، من أشهر الـ
algorithms وأبسطها في الفهم، واللي بيستخدم مع الـ
cluster. طبعًا الـ k عدد المجموعات اللي نتكلم عليه، والـ means
المقصود فيه المتوسط الحسابي للنقاط الموجودة
عندها. الـ... طبعًا قلنا أبسط algorithm وهو الأكثر
استخدامًا في عملية الـ clusterings الموجودة، بدور على
center. بيجتهد الـ algorithm أو الـ algorithm بيحاول
يدور على centers، وبالـ center هذا بمثل نقطة معينة
بتمثل الـ cluster، وبضلّ يعيد في العملية الموجودة
عندي. هم عبارة عن خطوات، زي ما قلنا، بروح بأخذ
center، والـ center هذا بروح بجيب العناصر، بشوف من
العناصر القريبة منه، بحسب المسافة. يعني لو أنا قلت له في
عندي مثلًا أربع مجموعات، معناته في عندي أربع نقاط
رئيسية، أربع نقاط مركزية اللي هي الـ centers تبع الـ
clusters، المجموعات اللي عندي، وعليها ببدأ يشتغل
الآن الـ algorithm هذا بضلّ
يتكرر بتكرر في عمليتين: الأولى، بروح بخصص كل data
point للـ cluster center. يعني الآن، المفروض، تبعًا
لهذه، بروح بحدد قرب، أو بعض العناصر، أو شبه
similarity، بحدد تشابه العناصر، الـ data instances مع
الـ centers الموجودة عندها. وبالتالي بروح بخصص لي
إيّاه للـ center الأقرب. ومن أجل تحقيق هذا الكلام، في
عندي distance function أو similarity function، اللي
عادة بنسميها distance. المفهوم distance أكثر في
الأرقام. الآن في الـ euclidean distance والـ
Manhattan distance، شفناهم سابقًا، وهنشوفهم الآن
كأن نذكر بعض فيهم: Jaccard، وSpearman، وSpearman
عفوا، والـ Hamming، والكوزاين. بعدين هي كده، لما بروح بدور
الـ algorithm بضلّ يكرر في العملية هذه، وبخصص الـ
instances للـ cluster، لما يكون في... لما يثبت
ويبطل يتغير، أو يصير فيه يعني تغيير على الـ data
الموجودة. بنذكر مع بعض الـ distance function أو
الـ similarity function، لما تكون الـ instance عبارة
عن مجموعة من الأرقام.
طبعًا اللي بنتكلم إحنا جالسين إنّ الـ distance
function هذه، أو الـ similarity function، سميناها
similarity أو distance function، لأنّ الـ... الـ...
لما أنا بدي أوصف rows، أو بدي أوصف أرقام قربها أو
بعضها من بعضها، أو تشابهها من بعضها، معناه أنّ أنا
جالس بأتكلم على نقاط. طبعًا لما أنا برسم الـ object
بتكون موجودة عندي في الـ space أو مرسومة عندي، حتماً
النقطتين المتقاربتين، المسافة اللي بينهم دليل على
تشابه العناصر الموجودة بينهم. طبعًا شوية شوية
هتصير الأمور بالنسبة لنا أفضل. لو أنا قلت لك في الـ
space هذا، على سبيل المثال، أو قلت لك في الـ space
هذا، قلت أنّ في نقطتين، هذه نقطة هنا ونقطة
هنا ونقطة هنا.
من أكثر نقطتين متشابهتين، أو بلاش، أقرب نقطتين لبعض
حتماً
النقطتين اللي بينهم الـ distance أصغر ما يمكن. طيب
لو أنا جدًّا قلت إنّ في عندي نقطة هنا (غير اللون بس)، لو
قلت إنّ في عندي نقطة هنا.
النقطة هذه أقرب لمين؟ لو أنا قلت لك هذه النقطة
تشبه مين؟ تشبه مين؟ ما فيش شبه. هذه نقطة موجودة في
الـ space، معناته أنا هروح أحسب مسافتها ومسافتها
والمسافة الأقصر هي بتمثل... هي بتكون أقرب لمين
للنقطة الموجودة عندها. طبعًا إحنا كلّنا بنعرف سابقًا
زي ما قلنا، الـ Manhattan والـ distance الموجودة عندنا. لو
أنا افترضت إنّ في عندي نقطتين، الـ X والـ Y، كانت 2
points، والـ 2 points هدول أنا بدي أحسب الـ distance
بينهم. لما أتكلم عن الـ Euclidean، أنا بأتكلم عن الجذر
التربيعي لمجموع مربعات الفروق ما بين مكونات
النقطتين اللي موجودة عندي.
وطبعًا كذلك الآن، مع الـ... بينما الـ Manhattan distance
هي عبارة عن مجموع القيم المطلقة للفروق ما بين
مكونات النقاط اللي موجودة عندنا.
وطبعًا، هي قلنا إحنا سابقًا إنّ أنا لما بأتكلم على
Manhattan، بأتكلم على الـ Euclidean، معناته بأتكلم على الخط
المستقيم اللي باللون الأخضر هذا، اللي هو بتطبيق
نظرية في الـ course، بين أي نقطتين. ولما بأتكلم على
الـ Manhattan ثاني، معناته بأتكلم على الأضلاع الموجودة
عندها. شكلي لما أخدت العناصر
ما عدّلتش الرسمة بتاعتي كده.
صح.
الآن لو أنا بدأت آخذ نظرة في gif file، الـ gif picture
اللي موجودة قدامي اللحظة، أنا بأتكلم على عشرة
iterations. أنا بدأت من iteration رقم واحد، اثنين،
ثلاثة، أربعة، ولاحظوا معايا إنّ المربعات هذه هي الـ
centers أو الـ centroids للـ clusters. أنا بأقول أجمع الـ
data لأربع مجموعات، والـ data هذه كلّها مختلطة مع
بعضها. بدأت الآن، بناء على الـ centers، الألوان تتوجه
مع بعض مع كل iteration. وهذا فعليًا اللي بيسويه الـ k-
means، إنّه بياخد random center في الأول، وبعدها بيحسب
الـ distance بين الـ centers هذه وكل النقاط اللي
موجودة، وكل نقطة بتصنف مع الـ center بناء على
shortest distance أو الـ similarity function اللي
إحنا بنعرفها. كصورة ثابتة، هي الـ data set، روحت قلت له
أجمع لي إيّاهم لمجموعات، فراح أخذ ثلاث مجموعات طبعًا
هنا، اللي هي أخذت المثلثات، هتمثل three different
centers. أيّهم، حتى لو كان، لأنّ الـ selection الأولى للـ
centers الأولية by random، حتى لو كانوا كلّهم
موجودين مع بعض، ما فيش غير إنّه بيشتغل في الـ... لو اجوا
كلّهم في نفس الـ center، ما عندي مشكلة، لأنّه بعد ذلك
سيقوم باختيار الـ average أو الـ mean تبعتهم. فقال
ليّ، هذه الـ data. افترض في الـ initialization زي ما
قلنا، هي بياخد الـ random centers، three centers، حسب
المطلوب by random، وراح يبدأ يخصص المجموعات، فراح يبدأ
يحسب.
اللي قلنا أنّنا هنعمل initialization، حدّد الـ three
centroids أو الـ three centers by random، وبعد هيك
بدأ يخصص النقاط بناء على الـ distance. طبعًا يا جماعة،
الخير، لما أنا بدي آجي أتكلم، النقطة high، أو النقطة
high distance هنا، وهأحسبها مع هنا، وهأحسبها مع
هنا، وهأصنفها لأقرب center، لأقصر مسافة. وبالتالي،
الأحمر هنا، صارت هذه كل النقاط، طبعًا هذه النقاط هي
أقرب للأخضر، وهذه للأزرق. فضلًا في الـ iteration
الثانية. الآن في الخطوة التالية، هنسوي، هيتحدد
الأحمر كله، الأزرق. فرح يحسب المتوسط لكل النقاط
اللي باللون الأخضر، المتوسط لكل النقاط اللي بالأحمر،
المتوسط لكل النقاط اللي بالأزرق الداكن. بينحسب
يعني، بيحسب الـ mean لكل الـ cluster بشكل مستقلّ،
والمتوسط هذا هو، بياخده centroid للـ next
iteration. recompute الـ center، هي حسب الـ center من
جديد. وراح إيش؟ بدأ reassigning، بدأ يروح يعمل الـ
center ثاني، وبعدها بيحسب، بعد ما يخلص بيحسب الـ
center كمان مرة، وبروح بخصص النقاط، وبحسب الـ
أربعة ل .. أربعة
ل .. أربعة ل .. أربعة ل .. أربعة ل .. أربعة ل ..
أربعة ل .. أربعة ل .. أربعة ل .. أربعة ل .. أربعة
ل .. أربعة ل .. أربعة ل .. أربعة ل .. أربعة ل ..
أربعة ل .. أربعة ل .. أربعة ل .. أربعة ل .. أربعة
ل .. أربعة ل .. أربعة ل .. أربعة ل .. أربعة ل ..
أربعة ل .. أربعة ل .. أربعة ل .. أربعة ل .. أربعة
ل .. أربعة ل .. أربعة ل .. أربعة ل .. أربعة ل ..
أربعة ل .. أربعة ل ..
أربعة
لبأوقف و ببطل الشغل لما فعليا الـ cluster أو الـ
center بعد هيك تثبت لماذا؟ إذا ثبتت الـ cluster أو الـ
الـ center اللي موجودة عندي هنا معناته أنا ما فيش
عندي تليير بعد هيك بنجوسينت صار فيه ثبات و هيك صار
في عندي كل نقطة موجودة في الـ cluster الحقيقي اللي
موجود عندك وبعد هيك ستكون كل iteration على الفاضي
لماذا؟ لأن الـ Center لم يتغير بمعنى التوزيع كما
هو و هذه هي آخر توزيع أحصل عليها طيب، تعالى نطبق
نفس المثال لكن مع more dimensions في الـ 2D بقول أنا
فيه عندي data set مكونة من تمام نقاط اللي بتجسمهم
لـ three clusters باعتماد على الـ manhattan distance
هذه النقاط اللي موجودة عندها طيب،
by random؟ لازم أختار center أخذنا اتنين و عشرة و
أخذنا خمسة و ثمانية و أخذنا واحد و اتنين بينفع
الثلاثه تكون ورا بعض بينفع random الكلام random
جماعة الخير و بدك تشتغل و تشتغل الـ distance زي ما
قلنا هي بتقعد تتكلم و تقول أنت ما تستخدم الـ manhattan
الـ manhattan distance، المعرفة=المجموع .. المجموع القيم
المطلقة للفرقات بين عناصر النقاط اللي موجودة عندي
أسهل حاجة هيك أن أنا أروح أنشئ جدول بالشكل هذا هي
الـ data point اللي عندي و هي الـ initial centers
centers C1 وC2 وC3 طيب الآن بدي أروح أحسب الـ distance
صفر ناقص اثنين، ناقص اثنين، صفر زائد عشرة ناقص عشرة، صفر صفر
اثنين ناقص خمسة، ثلاثة زائد عشرة ناقص اثنين، عشرة ناقص
ثمانية، اثنين يعني مجموع خمسة، اثنين ناقص واحد، واحد
زائد عشرة ناقص اثنين، ثمانية
الآن مباشرة بقدر أقرر أن هذا أقصر distance موجودة
اللي هي الصفر معناته هذا أقرب ما يكون من الـ
cluster الرقم واحد من الـ center الأول فهو ينتمي لـ
الـ cluster الأول، نرجع الكرة مرة ثانية، اثنين ناقص
اثنين، صفر، خمسة ناقص عشرة، خمسة هي خمسة الآن اثنين
ناقص خمسة، ثلاثة، خمسة ناقص ثمانية، ثلاثة معناته ستة
2 -1 1 5-2 3 1 3 4 يعني الـ distance الأقصر هي عبارة
عن الأربعة فهذا أقرب ما يكون للـ cluster رقم
ثلاثة، مع كذلك هنا 8-2 6 4-10 6 طبعاً ليش أربعة ناقص
عشرة ستة لما نتكلم بالـ absolute value من هاتين
distance، ما تنسوا الـ distance الثانية سبعة، الـ
distance الثالثة تسعة، معناته أنا أقصر مسافة
تسعة، معناته في الـ cluster الثاني، خمسة صفر، لاحظوا
لأن الـ data set أو الـ centers أخذتها معي فلازم
تطلع معي صفر بشكل أو بآخر لأ في أي حسب الـ
center اللي موجود عندها، فلما حسبنا، تمام تمام، حسبنا
كل الـ distances، وزعنا الثمانية عناصر على الـ classes
اللي موجودة، يعني a1 في c1 من الـ cluster الأول، a2 و
a7 في الـ cluster الثالث، a3 و a4 و a5 و 6 و 8 في الـ
cluster الثاني، تمام، هذه التوزيع اللي عندي بناءً على
الـ clusters اللي موجودة عندها، إيش المطلوب مني الآن؟
المطلوب مني الآن أحسب الـ mean لكل cluster
يعني متوسط النقاط اللي في اللون الأسود في الـ
cluster الأول، هيهم بروح بجمع النقاط اللي بتاخد
واحد اللي في الـ cluster الأول و بحسب المتوسط
تبعها، ما فيش غير النقطة، معناته المتوسط تبعها مثل
ما هو، هذا الـ center ما تغيرش، اللي باللون الأزرق، هيهم
اثنين زائد اثنين زائد واحد، ثلاثة يعني واحد ونصف، خمسة، سبعة و
اثنين عفواً، سبعة يعني ثلاثة ونصف، هذا الـ center
الثالث، الـ center الثاني هيكون عبارة عن ثمانية
زائد خمسة، زائد سبعة، هي عشرين، وهي ستة، ستة و
عشرين هي ثلاثين، ثلاثين على واحد، اثنين، ثلاثة، أربعة
خمسة يعني ستة وثلاثين على خمسة، ستة و ايه في ، اندي هان
اثنا عشر، سبعة عشر، اثنين وعشرون، اثنا عشر
سبعة عشر، واحد وعشرون، ثلاثون برضه ستة وستة معناته
الـ new centers تبعتي أنا هتكون بعد الحسبة تبعتي
اثنين وعشرة، بالمتوسطات 6 6 1.5 3.5
centers لاحظوا أنا ما زلت ما تكلم من الـ first
iteration اللي موجودة عندي، الآن هاخد الـ new
centers هدول و أروح فيهم على الـ next iteration أو
الـ second iteration، هاي حطيت الـ centers اللي جديدة
اللي موجودة عندي هنا و بديت أحسب المسافة من جديد
بديت أحسب المسافة من جديد، وبنفس الكلام الآن بحسب
على الـ centers الجديدة مع كل row اللي موجود عندي
هنا و بأخذ، لأ، مع نهاية العملية بروح بحسب الـ centers
بحسب الـ mean للـ centers اللي موجودة، هيصير في عندي
واحد و واحد
الآن صار في عندي واحد و واحد، هي اثنين، وأربعة، ستة
على اثنين، ثلاثة، عشرة أو تسعة، تسعة عشر، ثمانية و عفواً
تسعة ونصف، هذا الـ center الجديدة اللي هشتغل عليها
وبالتالي أنا هروح في iteration ثالثة لأن الـ
centers مختلفة تماماً عن الـ centers اللي موجودة
هترجع تعمل نفس الحسبة بنفس الكيفية لحد ما تثبت معك
للـ clusters اللي موجود عندك هنا، طبعاً في كل الـ
slide هذه تكتبها على ورقة أو تطبق عليها، وتطبقها، و
تجرب الـ center الثاني والثالث والرابع والـ
iteration، طبعاً متى بده يوقف؟ بده يوقف لما فعلياً يبطل
الـ center عندي يتغير، تمام، okay، طبعاً لأنه في مشكلة
أحياناً بالـ mean بتظهر معي لو كان في عندي الـ data
مش معمولة pre-processing صح، يعني في عندي outlier
زي هي، دي الآن لو أنا جيت قلت لك المتوسط الحسابي
اللي هدول، واحد وثلاثة وخمسة وسبعة وتسعة
هتقول لي okay، خمسة، لكن لو أنا قلت لك بدل التسعة
عندي ألف وتسعة، هيكون المتوسط الحسابي جدّيش؟ متسع و
خمسة، معناته الـ center تبعه هيكون بعيد جداً، الـ center
تبعي بعيد جداً، معناته يبعد عن نقطة الـ convergence
ممكن فعلياً يدينا نتيجة خطأ، أنت تخيّل أن الـ data
set عبارة عن عشر مجموعات
عن مجموعات
هذه النقطة هي الـ 250، لما تكون هذه الـ center
فتأخذ هذه العناصر معها
لأنها الأقرب، لما تختار المتوسط سيصبح هنا وهنا و
هنا وهنا وهنا وهنا وهنا وهنا وهنا وهنا و
هنا وهنا وهنا وهنا وهنا وهنا وهنا و
هنا وهنا وهنا وهنا وهنا وهنا وهنا وهنا و
هنا وهنا وهنا وهنا و
هنا وهنا، الـ median زي ما احنا بنعرف سابقاً، ونفس
الخطوات السابقة بتظل عندها لكن بدل ما أحسب زي ما
قلت لك المتوسط أو المتوسط بحسب أو باخد القيمة الوسطية
اللي موجودة عندها أو الوسطية الحسابية، الـ mean
advantage تبع الـ median زي ما قلنا أنه
لا يتأثر بالـ extreme value أو بالـ outlier value
اللي موجودة هنا، السؤال اللي بيطرح نفسه الآن، هل كل
شغلنا سابقاً كان مع أرقام، ماذا لو كانت الـ data
اللي عندي عبارة عن binary، 0 و 1، 0 و 1، ده الـ data binary
يعني الآن عندي قيم 0 و 1، 0 و 1، معناته ممكن تكون في عند
القيم متشابهة ما بين الـ clusters، عشان هيك جالك لما
تكون الـ data binary اللي عندي أو الـ variable
اللي عندي كلها binary، ما أنفعش أروح أطبق عليها الـ
Euclidean أو الـ manhattan، لأ بيصير في عندي similarity
function أخرى لازم أتعامل معاها، وطبعاً هنا فعلياً
أنا بصير أبدأ أدوّر على الـ dissimilarity، احنا سابقاً
ذكرنا أن في عندي الـ Euclidean والـ Jacquard والـ
Sparsman والـ Hoffman code إلى آخره، لكن خليني
أتكلم احنا على الـ binary data، بصير أحسب الـ
dissimilarity، عدم التشابه، يعني أنا بعد ما أدوّر لكل
مكان، عدم التشابه، تمام، معناته التشابه عندها
صغير، وبالتالي أنا نفس الفكرة أن أنا بدوّر على الـ
smaller value دائماً عشان اتكلم عن أنه في شبه أو
ما فيش شبه، لكن زي ما قلنا أن أنا بتكلم على عدم
التشابه بشكل عام، لما بكون في عندي الـ data set أو
الـ point تبعتي فيها عبارة عن value من صفر لواحد، الـ
dissimilarity تبعتنا عبارة عن non-negative number
لما بيكون close to zero، معناته نقطتين قريبين جداً من
بعض أو متشابهات، والعكس كل ما زاد الرقم كل ما كبر
الرقم، معناته الرقمين هدول مختلفين عن بعض، يعني
هنلاحظ أني بقييس الاختلاف، الآن هنلاحظ أني بقييس
الاختلاف، كنت بقييس التشابه، والآن بدي أقييس
الاختلاف، اللي الآن من الـ matrix اللي ذكرناها
سابقاً اللي هي الـ Jaccard، بدك تفترض أنه أنا
فعلياً عندي data set مكونة من الـ object الأول
والـ object الثاني، عشان أنا آخد قيم الـ value الـ
binary value اللي موجودة، الآن بدأت أوزّع 0 و 1، الـ I و
الـ J، الـ I والـ J، A و B و C و D هذه العناصر اللي
بتمثل المصفوفة اللي عندي، لاحظوا أنا جمعت الـ B والـ
C
عشان نفهم الصورة صح ونشوف بالمثال يتضح المقال زي
ما بقول المثل، تعالى نروح نشتغل hand ونشوف إيش
العناصر اللي موجودة عندها، بيجي بقول، افترض أن هي
في عندي أنا الـ binary data، بدي أعملها partitioning
clusters، هذه بتمثل patient records، الـ records أو
الموجودين عندها، ما بين الـ positive والـ yes طبعاً
بتكلم على اسم الشخص، مش هدخل معايا حتماً في الحسبة
dissimilarity معناته أعلى تشابه، كلما كبرت ال
dissimilarity معناته الاختلاف بينهم كبير جداً
معناته أنا أكثر اتنين متشابهين أو أقرب اتنين لبعض
اللي هي من، جاك و ماري حسب الـ Jacquard computation
أو الـ Jacquard metric function اللي احنا بنتكلم
عليها، لإيه الدلالة؟ لاحظوا سابقاً كنت
أتكلم عن الـ distance أو الـ similarity distance أو
الـ distance function كنت أتَكلم عن الـ shortest
distance، بس الآن أتَكلم عن الـ shortest
dissimilarity طبعاً، و السيميلارتي لما أنا بدي الـ...
الـ...
...الـ... الآن هذه أكثر تشابه أو أقل اختلاف
بين Jack و Mary، لو أنا بدي أتَكلم عن التشابه، خذ واحد
ناقص، معناته كل ما بدي أزيد التشابه عنده، ما بدي
أصير فيه، وبالتالي بيصير فيني عند جاك وماري أكثر
اتنين متشابهين، المحتمل أنهم ياخدوا نفس المرض بناءً
على الـ data set يكون عندهم نفس المرض، لأن هذول أكثر
اتنين متقاربين في المحوصات وفي الأعراض اللي موجودة
عندنا، بينما جيم وماري أكثر اتنين مختلفين، وبالتالي
لا نعتقد أو ما فيش اعتقاد أنهم يكونوا من نفس المرض
أو منهم نفس المشكلة المرضية اللي عندهم، من اللي لو
بدنا نتكلم على المزايا وعيوب الـ K-Means، المزايا
simple، سهل أن أنا أفهمه، الـ item يتخصص بشكل تلقائي
لـ cluster، الـ disadvantages لازم تَتصنف، لازم تَتصنف
لازم
تَتصنف، لازم تَتصنف، لازم تَتصنف
الـ sensitive to outlier زي ما شفنا أن الـ
outlier بتغير الـ center، sensitive to initial seed
اللي هي الـ random center اللي في الأول، لو كانت
قريبة عندي، لو كانت في نص الـ... لو كانت هي الـ
center ممكن أوصل من أول iteration أو الثانية، لكن
لو كانت بعيدة، معناته هيأخد منه وقت في الـ
convergence لما يوصل لنهاية الحل، طبعاً صعبة، غير
مناسبة للي بيشوف الـ cluster من الـ hyper ellipsoid
أو الـ hyper shapers اللي راح يكون، لو ما كانتش الـ data
أو الـ data متواجدة بأشكال صعبة، مش هيشتغل عليها
طبعاً هنا بنتكلم أش... طبعاً الشغلة الأخيرة اللي هي
علاقة بالـ failure، فعلياً مش نقصيه، طب هو فعلاً بيفشل
تماماً، اللي
بيفشل إذا أنا فعلياً ما أديتوش رقم الـ cluster الحقيقي
أو المناسب للـ data set اللي موجود عندها، كذلك بيفشل
الـ...
أن كل cluster أو التعرف تبقى على الـ center لما
يكون عندك الـ center، يعني أنك تتكلم عن دائرة أو
مربع، طيب لو كان في عندك ghost أو curve أو أي shape
مختلف، إيش الـ center بدنا نفهمه؟ مش هيظبط، لأن لو
قلت لك في عندك شكل هلال، إيش الـ center تبعته؟ مش
هتظبط، لو أنا جيت قلت لك أن في عندي منحنى، إيش الـ
center تبع المنحنى؟ مش هتظبط، لكن ممكن أفهمها في
مثلث، أفهمها في دائرة، أفهمها في مستطيل، مستطيل أو
مربع، ممكن أفهمها في أشكال اللي موجودة عندك، تعالى
شوف هنا الآن، لما أنا روحت قلت له الـ... الـ... الـ...
لما تكون الـ data اللي عندها لها different
densities أو
كتابة مختلفة، الـ chemistry بيفشل، ليش؟ لأنه بيعتمد
على المسافة، فالآن هذا فعلياً الـ data، هذا الـ cluster
الحقيقي، هذا التوزيع، لكن لو أنا أجيت وقلت لك هذه
النقطة، هتصنفها مع أي cluster؟ لو أنا افترضت أن الـ
center هنا
و الـ center هنا، و الـ center هنا، فممكن
النقطة high تكون أقرب من هنا، فالنقطة
high هي أقرب لهذه، وبالتالي
لما يكون في عندي different densities، معناته أن في
عندي مشكلة مع الكيميا، كذلك عندما يكون لدي non
spherical cluster، تخيل أنه سيجلب لي cluster عندي، و
هاي الـ centers، أشتغل على three centers، هذول أريهم
كيف
بده يجيب لي إياها، أو عندما يكون لدي الـ complex shape
بالشكل هذا، سيقول هاي center عندي هنا، وهي center
هنا، أو هذا الـ distance صحيح، أو هنا، هل هذه النقطة
هي الأقرب لها؟ فهو الـ shape تبع الـ complex، فهذه
الحلقات كلها بيفشل فيها الـ K-means، طبعاً احنا فعلياً
في عندنا algorithm ثاني زي الـ DB scan، وهذا الـ
algorithm فعال جداً في التعامل مع الـ... ما بطلبش مني
عدد الـ K، وبيشتغل، وبحاول يتعرف على الـ complex
shape، لأنه بيعتمد على الـ density وبحاول يجد لها
يتعرف على الـ clusters بناءً على الـ density اللي
موجودة، لكن تبقى زي ما قلنا، هل الـ evaluation أو
التقييم تبعي تبع أداء الـ cluster صحيح أم لا بناءً
على أداء الـ clusters ومعرفة عدد الـ clusters
الحقيقية للـ data اللي موجودة، نشوفكم على خير إن شاء
الله تعالى، في المحاضرة هذه اتعرفنا على الـ K-means
وشفنا كيف نحسبه، واتعرفنا على مزاياه وعيوبه
التسجيل اللي جاي إن شاء الله تعالى، هنتقل للـ
Hierarchical Clustering، السلام عليكم ورحمة الله