ماشي الحال، باسم الله الرحمن الرحيم، اليوم إن شاء
الله، احنا بنكمل مواضيع الـ data mining، موضوع
جديد. اليوم احنا كان آخر محاضرة حكينا في اللي هو
linear regression، على أساس أنه واحد من الـ
statistical methods اللي ممكن تساعد في الـ data
visualization وفي التنبؤ، يعني بمعنى أن احنا نتنبأ
بقيمة أي new data item بناءً على واحد من الأحداث
التي اتخذته. اليوم إن شاء الله سنحكي في موضوع الـ
association rules وتطبيقه على مسألة market basket
analysis. وهذا الموضوع جاء من lecture 17. سنذهب
عليها على طول ونشوف
example association rules. نبتدأ من اللي هو
slide رقم 28. بدي أنتقل على طول على السريع على هذا
الـ example عشان نتعرف على المسألة، وبعدين نشوف الـ
algorithm أو الطريقة أو الـ method اللي بتستخدم في
التعامل مع هذه المسألة، مسألة الـ association rule
يقصد بها أنه لو في عندي أنا شيء زي هيك عبارة عن كل
واحد... كل item من هدول عبارة عن... كل سطر من
هدول عبارة عن transaction. الـ transaction زيه...
زي فاتورة. أنت لما بتروح تشتري ب... الفاتورة بتشتري
مجموعة مشتريات. الفاتورة بتنص على إيش العناصر اللي
فيها الفاتورة. فهنا... هذا عبارة عن groceries، يعني
بقالة. بيف، ملك، صاص، استاجتي، كده. كل فاتورة
بتحتوي على مجموعة الحاجات اللي اشترى الزبون. احنا
الآن من هذه المعلومات، الجدول اللي تبعنا فيه بس سبع
samples، لكن السجل تبع الـ system تبع السوبر ماركت
الصغير، حيث أن فيه آلاف أو عشرات الآلاف أو مئات
الآلاف من... بالمئات. المهم أنه احنا بنبسط الموضوع
عشان الفكرة توضح. الهدف المطلوب أنه بناءً على هذه الـ
data التراكمية أو الـ historical data، نحاول نستخلص
rules اللي تقول لي أنه لو الزبون اشترى السلع
الفلانية، إيش غالباً أيضاً هيشتري معها كمان؟ okay. هذا
الأمر. لو تركتك أن تتطلع على الـ data هذه، ممكن أن
أنت تستخلص rule بسيط جداً، أو استخلاص بسيط جداً، وهو
أن تطلع مثلاً على ال... خد... خدهم واحدة واحدة، شوف
وين في... وين في سلعتين بيجوا مع بعض، بيجوا مع بعض
بتكرروا مع بعض. لو أنا لقيت سلعتين بتكرروا مع بعض
معناه ذلك، بقدر أستنتج أنه إذا زبون اشترى واحدة
منهما من الاثنين، فغالباً هيشتري الثانية. أنا بحكي عن
زبون جديد. يعني إذا أنا لقيت فيه سلعتين بتكرروا مع
بعض، فما أقدر أستنتج أنه هدف إيش بيفيد؟ عادةً في الـ
supermarket، ما أنت عارف لما بيجي يصفّ الحاجات على
الرفوف، بيصفّ الحاجات اللي عادة ما بتشترى مع بعض،
بيصفّهم جانب بعض، أولاً عشان يرى حاجة ثانية، عشان
يغريك ويذكّرك. صح؟ آه. يعني مثلاً خد عندك هنا، خد الـ sauce
والـ spaghetti. أولاً... أولاً القضية مش محتاجة ده
كرسي طناعي ولا محتاجة data mining، لأن احنا عارفين
الـ spaghetti والصوص دائماً بيجوا مع بعض. يعني لو حد
بيعمل... بيـ spaghetti، ليه؟ ماكرونة اللي بيعمل... اللي
بيعمل ماكرونة بالجبن، ححط عليها إيش؟ الصوص اللي هي
الصلصة. صح؟ فهذه شغلة مش محتاجة أتعب عشان نستشفها أو
نستخلصها. يعني صاحب السوبر ماركت ما منه لعاله، ححط
المعكرونة، و قريب منها ححط مرتبانة الصلصة،
مظبوط؟ بس الفكرة أن هذا الأمر له تطبيقات أخرى
كتيرة، غير حكاية اللي هو الـ shopping. يعني ممكن تبقى
هذه عبارة عن أسهم شركات، والناس بتشتري أسهم وتبيع
أسهم. فممكن اللي بيستخدم، بدل... بدل ما نحكي عن سلع
بقالة، نحكي عن أسهم شركات، ونشوف إذا واحد اشترى
سهم في شركة فلانية، فغالباً نتوقع أنه هيشتري في شركة
أخرى، بناءً على الـ historical data اللي زي هذه اللي
بتكون موجودة. وأمثلة أخرى كثيرة، أو تطبيقات أخرى كثيرة.
بس المهم الآن، احنا بنشوف كيف يمكننا استخلاص rules من
association rules. إيش هي association rules؟
association يعني مصاحبة.
يعني أن الـ item هذا، عادة ما بيصحبه الـ
item الآخر، أو مجموعة الـ items الأخرى. هنا عندنا هي
الـ spaghetti بالصوص مكررين كذا مع بعض. مع بعض. هاي
الصوص، الـ spaghetti. صح؟ وفي هنا وين كمان؟ هاي الصوص
جاي لحالها. sauce لحالها. الحالة الآن، أنا بقى الواحد
يمكن يكون عنده spaghetti في المطبخ من قبل. الهدف
صار بناءً على هذا الـ data اللي موجودة، أنه نستخلص
rules. شيء زي كأنه إذا اشترى هذا، فحتماً أو نستطيع نتوقع
نشتري spaghetti. ولكن هي confidence تبعها أن أنا مش
مضمون يجيب 100%. ليش صحيح؟ لأن هاي مضمون مثلاً اشترى
source. هاي أنا اشتريت source، و أنا اشتريت source
ثانية. صح؟ الـ 80% هاي فكّروا من أين جاءت؟ جاءت لأنهم
الخمسة مضمون اشترى فيهم source. هاي واحدة، هاي اثنين،
هاي ثلاثة، هاي أربعة، هاي خمسة. أربعة منهم اشترى
معها. الأربعة من الخمسة هي الـ 80%.
فاحنا بناءً على الـ statistical information هذه، يعني
هذه عملية إحصائية. اللي احنا أحصينا قد إيش كم مرة
اشترى صوص، وقد إيش كم مرة معهم اشترى سباغيتي، لجل أنهم
أربعة من الخمسة، يبقى 80%. فاحنا اتشكلت
الـ rule بناءً على هذا. إذا كان صوص، فسباغيتي.
confidence. يعني احنا متأكدين من هذا الاستنتاج
بنسبة 80%. okay. في شيء ثاني كده، الـ confidence، في
اللي هو الرول المكتوبة، اللي كاتب معاها اللي هو الـ
support. الـ support اللي هو باختصار، هذه الرول
إيش المعطيات اللي بتدعمها؟ إيش المعطيات اللي
بتدعمها؟ إن هاي واحد، هاي أربع مرات. أربع مرات عندنا
اشترى صوص ومعه سباغيتي، اللي هي هذه. صح؟ و هذه، و هذه
و هذه. صح؟ أربع... أربع records بتدعم هذه الحقيقة.
الأربع هذول من الـ total. أربعة على سبعة، هما السبعة
و50%. يعني احنا قاعدين بنقول ثقتنا
بهذه الـ rule 80%، وبتدعمها، أو احنا ما
استخلصناها بناءً على حقائق 57% support لهذا الـ rule.
الآن عاوزين احنا الأمر هذا يتم بشكل algorithm، يعني
نعطيها الـ data set هذا، وهي تستخلص لنا منه rules. الـ
algorithm عشان تستخلص rules فيه إشكالية كبيرة، وهي
أنه لما نكون في عندي أنا... أولاً خلينا نراجع بس الـ
text هذا. الـ table هذا suggests that أن الـ sauce and
spaghetti are likely to be purchased together, and
thus we can write a simple association rule: if a
customer purchases sauce, then the customer also
purchases spaghetti. وصغناها بهذا الشكل. تمام؟ وهاي
زي ما حكينا، الـ support and confidence are used for
selecting the valid association. الآن بنحكي عن الـ
valid association rules. الآن بس قبل ما ننتقل على بعض
الاصطلاحات في الأول، أن أنا في عندي
الأسطر
تبع الجدول ده. ليش اتفقنا أن اسمها transactions؟ كل
transaction يحتوي على مجموعة من الـ items. افترض أن
أنا عندي item
set. إيش
يعني item set؟ يعني هي كل الـ items اللي موجودة في
الـ supermarket مثلاً. وفي عندي طبعاً transactions
اللي هي كل الـ transactions اللي فعلاً وقعت أو حدثت
كذا في السوبر ماركت هذا. الآن الـ rule، واحدة، الـ
association rule، واحدة، ممكن نصيغها على أساس أنها
عبارة عن: إذا X، فـ Y. X و Y هدول إيش؟ مجموعات item sets.
الواحد منهم، هدول item set، وهذا برضه item set. طيب
احنا أول كنت بنقول sauce، فهي spaghetti. طيب
هذا مجموعة، وهذا مجموعة. أين هما؟ هذا مجموعة، وهذا
مجموعة. بس الـ cardinality، عدد عناصر المجموعة،
واحد. طب احنا ليش بنقول مجموعة؟ إذا كان احنا الـ
rules اللي بتحكي عنها هي أنّه إذا اشترى العنصر
الفلاني أو السلع الفلانية، فهيشتري... لأ، احنا أيضاً
معنيين بأنّه لو اشترى كذا وكذا، إيش
ممكن يشتري؟ ماشي. يعني صياغتنا للقول general، بمعنى
أن احنا مش معنيين بسلعة واحدة في الشرط، و سلعة واحدة
في الاستنتاج. لأ، ممكن يكون أكثر من سلعة اشترى
وبالتالي، القول بتقولي أنه أيضاً هيشتري كذا. فعدد
العناصر في الشرط، وعدد العناصر في conclusion أو الـ
consequent، مش limited to only one item. عشان هي كده
بنسمي هذا item set، وبنسمي هذا item set. إيش معنى
ذلك؟ معنى ذلك لو أنا عندي الـ item set الكبير يحتوي
على الثلاثة عناصر. هذا، و لا بلاش
الـ item set الكبير. واحد من الـ transactions يحتوي
على ثلاثة عناصر، هدول اللي هم الـ bread، والصوص،
والسباجيتي. كم item set ممكن؟ كم subset خلينا نقول
كم subset من هذا الـ set؟ مش هذا مجموعة، هي ثلاثة
عناصر. هي one subset، الـ bread لحاله، الصوص لحاله،
السباجيتي لحاله. بعدين الـ bread مع الصوص، هذا إيش
subset. البريد والساوس والسباجيتي. البريد والساوس و
السباجيتي. البريد والسباجيتي. البريد والساوس والسباجيتي.
البريد
والسباجيتي. البريد والساوس والسباجيتي. البريد و
السباجيتي. البريد والساوس والسباجيتي. البريد و
السباجيتي. البريد و
السباجيتي. البريد والسباجيتي. البريد والسباجيتي. البريد و
السباجيتي. إذا اشترى bread، ممكن يشتري صوص و
سباجيتي. وبنسبة كذا. هل لو اشترى أي واحد من هدول الـ
subsets، ممكن أستخلص أنه هيشتري أي واحد آخر من الـ
other subsets؟ هذا هو الهدف العام، أن احنا بيكون في
عندنا احنا بيكون في عندنا الـ items كلها، وإيش بتولد
subsets من هذه الـ items. عايزين نشوف علاقة أي واحد
من هذه الـ subsets بأي subsets آخر. صح؟ يعني أنا هنا
أنا هنا بالنظر، استخلصت rule واحدة. طيب، هل يمنع أنه
نقدر نستخلص rule آخر؟ هل بيمنع أنه نقول والله bread
وملك. إذا اشترى bread، فهيشتري milk. مافي مانع. بنشوف
الـ algorithm هتعطينا هذا rule ولا مش هتعطينا. الـ
algorithm ممكن تعطينا إياه كـ rule، بس الـ
confidence تبعها إيش هيكون؟ ممكن هيكون منخفض. تعالوا
نتطلع على الـ confidence تبع هذا rule. إذا اشترى
bread
فهيشتري
milk. تقدر تحسب الـ confidence تبعها قد إيش؟ كيف بدنا
نحسبه؟ كيف حسبناها قبل؟ آه بدنا نشوف كم مرة اجوا
الاثنين مع بعض. الـ bread هنا ما جاء، هنا ما جاء،
واحدة منهم بس اللى جاى فيها milk، هذه حسبة ال
confidence، okay، الـ .. الآن احنا لو بدنا نبقى نحسب
لـ .. في نفس المثال نحسب لـ الـ other، لو بدنا نتخمن
other rules على مثلًا spaghetti
sauce، آه احنا شوفنا صوص spaghetti مظبوط، ما كانتش كان
يطلع معانا 80% confidence و 57% support، لو العكس،
لو جد أكل سفاجيتتي صوص، عدد المرّ .. يعني إيش
احتماليه لو اشترى سفاجيتتي أن يشتري صوص؟ طبعًا هذه و
.. و عكسها لا يساوي بعض، صح؟ آه؟ سفاجيتتي اشترى
أربع مرات سفاجيتتي، و في كل الأربع مرات كان شاري
صوص، صح ولا لا؟ يرجع 100% confidence لكن الـ support
هو هو لأن هما أربع مرات من السبعة، الـ beef و الـ
milk، احنا كنا نحكي بريد و ميك، الـ beef و الميك في
كل المرات اللي
اشتروا فيها الـ beef اشتروا أيضًا ميك، الـ confidence
لكن الـ support اتنين من سبعة، لأن هذول هم المرتين
المرات اللي اشتغل فيها الـ beef و لا .. على
المرات اللي اشتغل فيها الـ beef بس، هذول من
الاجمالي .. من .. من .. بقى بيطلع تسعة و عشرين و
ثمانية و عشرين، الـ support مرة أخرى، احنا الآن كله
هنا توصيف للمسألة بس ما حكينا في قليّل التعامل
معاها، واستخراج الـ rules هذه بشكل algorithm يعني
احنا قبل ما نحكي في الـ algorithm، بس شغل بسيط وهي
أن لو أنا عندي عدد الـ items، الـ items مش الـ item
sets، عدد الـ items، يعني milk bread كده يساوي M، فأنا
ممكن يطلع معايا rules، rules بعدد ثلاثة أس M، بس
يعني لو أنا عندي بصرة شديدة زي في الـ example اللي
فات، كم عندنا ثمانية items كلهم، الـ items هدول اللي
في الـ table، لو عديتهم، الـ beef و الـ milk، لو عديتهم هم
بس ثمانية، الـ ثمانية هدول، الـ ثمانية هدول بيرتب عليهم
255 rule، أكيد حيكون فيه rules الـ support
تبعها منخفضة، و الـ confidence تبعها منخفضة، بس الـ
algorithm بدها تيجي تفحص الكل مظبوط، هدول ثمانية
هدول ثمانية، هدول ثمانية، هدول ثمانية، هدول ثمانية،
هدول ثمانية، هدول ثمانية، هدول
ثمانية،
هدول، يعني بيحصل فيه نوع من الـ pruning إذا بتذكروا
في الـ minimax pruning أو الـ alpha beta pruning في
الـ minimax تمام، فاحنا الآن الـ algorithm اللي هنطلع
عليها اللي هي a priori algorithm اللي
هتشغل على two phases أو stages
أولًا تعمل الـ item sets ثم تعمل الـ rules، الـ rules
هي عبارة عن item set و item set، نعمل الـ item sets
ثم نشكل منها rules، الـ item sets الآن احنا معنين
بالـ item sets اللي اللي تكون frequent، يعني إيش
frequent يعني هي أصلًا الـ item sets هذه متكررة كثير
يعني مثلًا اتّول لما بدينا احنا بالصوص و الـ
spaghetti، هذا الـ item set، هذا الزوج من العناصر
متكرر كثير في الـ .. لو واحد ثاني مش متكرر كثير
يعني مثلًا زي اللي هو الـ .. الـ .. الـ beef، الـ beef
هو نفس الـ beef مش موجود في كل هذا إلا مرتين، فبنبلغ
لما أنا أكل بيف معالج شيز، بيف معالج شيز مش هذا
item set، أكل مرة موجود مرة واحدة فقط، صح؟ فأنا في
احتياج لقياس للـ frequency تبع أي item set، لسه قبل
ما أحكي عن الـ rules و الـ confidence تبعها، بدي أحكم
أو أحكم على الـ item sets على أساس الـ frequency، إيش
يعني frequency؟ يعني مدى تكرارها، frequency يعني في
frequency، احنا نفهمها على أساس تذبذب، صح؟ بس هنا
معناه الآخر اللي هو جدّيش تتكرر في الـ data set اللي
عندنا، فبنفهم، ما هو مفهوم الـ frequency نحتاج
نفهم مفهوم الـ frequent يعني
عندما نقول frequent item set، يعني item set
بيتكرر كثير، الـ item set هذا مرة أخرى بقول قد يكون
فيه عنصر واحد أو قد يكون فيه أكثر، الآن لو أنا عندي
data items بعدد M، كم item set ممكن يتشكل من هذول
الـ M، two to the M minus واحد، يعني لو أنا عندي كده
الـ items اللي كانوا عندنا كانوا ثمانية، اتنين أقصى
ثمانية ناقص واحد، كده كم item set ممكن يطلع معانا؟
256 - 1 = 255
اثنين أس أربعة ناقص واحد يساوي 15
15 item set، الآن الـ item sets هذول أنا ممكن أطلع
عليهم على شكل اللي هو بيسميها الـ lattice، هذه إيش؟
يعني هي عندي بالأصل الـ item sets اللي one item
هذا الـ level يحتوي على الـ item، أنا عندي كل الكل الـ
items اللي عندي، بس أربعة ABCD، بس أربعة، لا ثمانية
ولا سبعة، ولا غير، على فرض أن اللي عندي بس أربعة
فعندي أنا بعض الـ item sets هيبقى فيها single item
زي هيك الـ A لحاله، الـ B لحاله، الـ C لحاله، الـ D لحاله،
وفي عندي item sets فيها عنصرين، و item sets فيها
ثلاثة عناصر، وفي الآخر يكون فيه هذه item set واحد
وحيد في الأربع عناصر، خلي بالك أن هدول هذا set
مجموعة، مش ordered list، يعني a,b,c,d هي نفسها c,d,a
,b، آه، مش إيه، قلنا a,b,c,d هي نفسها d,c يعني أي
ترتيبة هي نفسها، صح؟ الآن هدول قدهم؟ هدول هم بيطلع
15 مش هم لنا أربعة items، هل هذا يظهر 15؟ 1,2,3,4,5,6
,7,8,9,10,11,12,13,14,15
,16
إلى 15
(الاعداد المتبقية ليست جزءاً من النص الأصلي)
الآن هذا الـ item set، كل واحد من هذول يفرض أن الـ
algorithm تبعتي أول ما تيجي تفرض مختلف
الـ item set المحتملة، وبعدين تيجي تشوف الـ
frequency تبع كل واحد، الـ frequency تبع كل واحد
بمعنى أن تبدأ تقول من الـ A لحاله، الـ A لحاله مثلًا
الـ bread لحاله، الـ milk لحاله،
جدّيش الـ frequency تبعته؟ يعني جدّيش موجود عندي في
كم transaction؟ okay، لأن إذا الـ frequency تبعته
أكبر من، أكبر من الـ support اللي أنا بدّيه، يبقى
الكويس، إذا أجل يبقى هو مقبول، واللي بتفرع منه أيضًا
مقبول، لأن اللي بتفرع منه، يعني إذا هذه لحالة مقبولة،
فما بالك هذه مع واحد ثاني، بتبقى أكثر، صح؟ يبقى أنا
الآن لو في عندي frequent item set، لو عندي
infrequent item set زي هذا مثلًا، يبقى هو وأي item
set آخر هذا بيظهر بداخله، إذا هذا infrequent يبقى
حتمًا هدول كلهم infrequent، بأستبعدهم، يعني إيش؟
يعني pruning، يعني بـ .. أختصر شوية الـ electricity
ولا بحسب الـ frequency، يعني بأجي أنا هنا حسبت الـ
frequency تبع هذا، مجبور الـ frequency، مجبور، مجبور
لأ، هذا مش مجبور، الـ frequency أقل من، أقل من الـ إيش؟
أقل من الـ support اللي أنا بدّيه، يبقى هذا مش مجبور،
هو كـ item set بيطلع ضمن الحسبة، و بيطلع ضمن الحسبة
أي item set آخر يحتويها، الـ D هذه موجودة هنا، موجودة
هنا، okay، الآن هذا الـ A، هذا الـ A إيش ممكن ييجي
في item sets أخرى؟ هو نفسه بيجي مع الـ B، بيجي مع الـ
C، بيجي مع الـ D، صح؟ ما فيش غير هيك، هم الـ A و الـ B و
الـ C و الـ D، مظبوط؟ طيب الآن حسبت لهذا الـ frequency
بتوعته، مقبولة، هذا مقبولة، هذا مش مقبولة، لأن هو واللي
شايف؟
هذا مش مقبول، من هنا هذا، هذول اتنين شطبنا عليهم
لأنهم جايين من مين؟ من AD، هذا شطب عليه لأنه جاء من
مين؟ من BD، و برضه من CD، شايف هذا الـ .. و هذا نفسه
بـ مع الـ D، طبعًا الآن هذول يبقى هيشطبوا، هذا الـ algorithm
المستخدمة عندنا آلية لاختصار الشغل، لتقليل الـ
computation، أنهي الـ computation اللي وفرناها أن
أنا أحسب الـ frequency تبع هدول، أنا بمجرّد ما شفت
هدول، وشفت أنهم بيحتوي على واحد الـ frequency، على
items، الـ frequency ده معاه منخفضة، استبعدتهم تلقائيًا
بدون ما أروح أغلب حالي وأعمل عملية إحصاء، جدّيش
هدول موجودين في الـ table، يبقى شفت عليه
computation ولا لأ، صح؟ okay، يبقى الآن احنا أول
إنجاز اللي هو استخلصنا، أولًا created and filtered الـ
item sets اللي frequent، يعني اللي above الـ minimum
support
in the first stage
الـ algorithm يجد كل المجموعات المستخدمة، المستخدمة،
(تكرار كلمة "المستخدمة" تم حذفه)
المستخْدَمة، نشكل منها rules، بدل ما كنا نشكل rules
من كل الـ item sets اللي معانا، الـ 15 أو الـ 255، الآن
اختزلنا الرقم هذا إلى best frequent، يعني هنا الـ 15
هيطلع منهم بس 1,2,3,4,5,6,7، بس frequent، بدل ..
أقول .. أطلع rules من 255 أو من 15 item sets، لأ،
الآن بطلع rules من 7 فقط، آه، هوا بكثير ولا لأ؟ فخطوة
الـ stage الأولى هي تنجز ليها عملية تقليل الـ item
sets إلى بس الـ frequent، in the first stage، إيش
قلنا الـ algorithm finds frequent item sets، it
generates the rules لـ high confidence، high
confidence، يعني أن الـ confidence تبعتها أعلى من الـ
minimum confidence، فهذا المثال أو هذا الجدول، لو
أضعت عليه، أول شيء السبعة هدول، واحد، اتنين، تلاتة،
أربعة، خمسة، ستة، ثمانية، هم الثمانية items الأصليين،
هدول item sets، يعني هتطلع بين curly braces، الـ
braces هذه، يعني هو set بس يحتوي على عنصر واحد، هذا
إيش الـ support تبعه؟ الـ support تبعه كيف حسبناه؟ كلّنا
جدّيش متكرر من الم
كلها دول مزدوجة، احسب الـ support تبعهم، بيطلع معاه
21 ميض، اللي أقل من هذا بيطلع معاه من الـ 21 ميض
بيطلع معاه من هذول، الآن بيكون الأساس أو الـ seed
لثلاثيات، للاطم سات الثلاثية، الآن ثلاثي، رباعي، خمسي
لحد ما أكثر، يعني هنا نشوف الواحد و عشرين طلعولي
السبعة، هدول بعد هيك، السبعة دول طلعولي أربعة، وبعد
هيك الأربعة طلعولي، لحد هيك بيبطل يطلع معايا item
sets, okay، الآن بعد هيك هي الثلاثية، الآن هذا فلاني
بكرره، بكرره زي ما قلت، لحدين ما يبطل معايا يطلع
معايا more item sales، بعد هيك بيجي دور اللي هو الـ
rules، okay، بنكمل المحاضرة الجاية، بنحكي فيه آخر
نقطة، اللي هي كيف تـ generate الـ rules من الـ item
sales اللي بتطلع معانا في الآخر، قضية بسيطة جدا