بسم الله الرحمن الرحيم والصلاة والسلام على الرسول الكريم
أهلا و أهلا بكم في التسجيل الأخير أو في
المقطع الأخير من موضوع الـ Association role. كنا
نتكلم في المحاضرة السابقة على الـ FP Growth وقبلها
أو في التسجيل السابق، عفواً، الـ FP Growth وشوفنا
فعلاً ال scalability والـ a priori algorithm سابقاً
وتركته أقول مثل هذا تحلوه لوحدكم عشان تتدربوا عليه
الآن، اللي هنتكلم فيه جزئية أن أنا فعلياً موضوع الـ
mining له different kinds of association rules. الـ
association
rules اللي عدى عبارة عن level واحد. فهل في مجال أن
أنا أتكلم على multilevel association rules بمعنى
آخر if then else then بالشكل هذا، involve concept
of different levels of abstraction. هل هذا ممكن؟
ممكن أو لا في الـ multidimensional association
rules involve more than one dimension. أنا شغال بـ
one dimension دائماً، اللي هي الـ ... الـ ... الـ ... الـ ...
الـ ... الـ ... الـ ... الـ ... الـ ... الـ ... الـ ... الـ
الـ ... الـ ... الـ ... الـ ... الـ ... الـ ...
الـ ... الـ ... الـ ... الـ ... الـ ... الـ ... الـ ... الـ
الـ ... الـ ... الـ ... الـ ... الـ ... هذه عبارة عن
مسائل مفتوحة في موضوع الـ Association Rules ومازال
الناس يعملون/عمالون بمحاولة العمل عليها. هل الـ quantitative
هل الـ numeric values، الـ attributes، احنا سابقاً شفنا
أن الـ item موجود، نفسه اشتراه وما اشتراهوش، yes و no
صح، حوّلناهم، ولا بنحول في بداية العملية وبنحولهم لـ
binary. طيب الآن هذا الـ value كان في عندي different
values، الـ numeric values، الـ quantitative. كيف ممكن
أنا أتعامل مع الـ association rules؟ كذلك من الشغلات
المهمة بالنسبة لنا في الموضوع، الـ measurement. احنا
تعرفنا على الـ support والـ confidence، وهذول
كانوا هم الأساس. طيب شو بده يصير لو أنا كان في عندي
large support و large confidence، لو أنا كان هذول
كبار جداً، يعني هو رح يصير في عندي small number
من الـ association rules، بينموذجيني. يعني أن أنا في
عندي علاقة عكسية بين الـ support والـ
confidence وعدد الـ association rules. وبالتالي، كل ما
يزيد عدد الـ association rules بيقل العدد اللي موجود
عندهم الـ support، small. يعني أنا أتمنى، يعني ايش
أفضل الـ threshold أو the best threshold ممكن
أنا أطبقه في الـ finding أو في عملية البحث على الـ
association rules اللي موجودة عندي. كذلك أن أنا
ممكن يصير في موضوع الـ confidence والـ support بعض
الـ misleading أو بعض سوء الفهم. خلينا نشوف الـ
contingency table اللي موجود عندي هنا. عملوا
استطلاع على ٥٠٠ واحد، حاولوا... بيلعبوا... بيلعبوا
كرة سلة وبيشربوا... بين لاعبين كرة السلة و
بيشربوا حليب ولا ما بيشربوا. أو أخذوا ٥٠٠ واحد
واحد واشتغلوا عليه. فكان من الخمسمائة دول أن في
٢٠٠٠ بيقولوا أن كل لاعبين السلة لازم يشربوا الحليب
بينما ١٧٥٠ بيقولوا لأ، مش ضروري
اللي بيشربوا الحليب هولاء ما يكونوا بيلعبوا سلة. كذلك
في ١٠٠٠ قالوا لأ، شرب الحليب مش مرتبط باللعب
كرة السلة، و٢٥٠ قالوا لا بيشربوا حليب ولا
بيلعبوا سلة. يعني هو كأنه الاستطلاع بين رأيك أنت
بتشرب حليب وبتلعب كرة سلة، وتحاول أن تجمع الاثنين
مع بعض، يعني drinking milk و playing basketball هذول
binary tables أو binary attributes كانوا موجودين
عندي، هيهم playing و drinking، playing basketball والـ
values اللي موجودة عندها yes و no، والـ
العكس صحيح، موجود في الاثنين. تمام، وهكذا هي
الاستطلاع. فكانت الـ contingency table تبع الاستطلاع
هي من الـ contingency table اللي موجودة عندها. لما
أنا جاي أقول الـ ٢٠٠٠، تمام. النسبة ٤٠٪ لعب كرة السلة
يؤدي إلى شرب الحليب. الـ
Confidence
فعلياً ٢٠٠٠ على ٣٠٠٠، صحيح، لأن هؤلاء فئة الناس اللي
بتلعب السلة. فعدد مرتبط على الـ probability ٢٠٠٠
على عدد اللي بيلعبوا سلة، ثلاثة آلاف. الـ high
confidence أو الـ support تبع الأول على الـ support
تبع الـ association rule على الـ support تبع الأول
من الـ association rule. ٢٠٠٠ على ٣٠٠٠، سبعة
وسبعين في المائة. هذه الـ data is misleading، لأن الـ
over all عندي percentage بين الـ students أو بين
الناس اللي شاركوا في الاستطلاع، بيتكلموا عن شرب
الحليب هم حوالي خمسة وسبعين في المائة، تمام؟
وهذا الكلام أكثر من ستة وستين في المائة. طيب، تعالوا
نشوفها لو أنا جيت جبت أو أخذت الـ playing basketball
ونطلع
عشرة في المائة، لأن عشرة على خمسة آلاف وعشرة على
ثلاثة وثلاثين
لكن الـ support تبعها، الـ confidence والـ support
تبعها قليلة، وبالتالي أنا مش هاخد الـ rule هذا، لأن
هو فعلياً higher support و higher confidence بينما
هو misleading. وبالتالي موضوع الـ support والـ
confidence لحالهم هو غير كافٍ بالنسبة لنا في موضوع
الـ measuring تبع الـ Association Rules، لأنه كما
رأينا بنفسنا، يمكن أن يكون هناك misleading. ماهو الحل
اللي نحن نتكلم عنه؟ هل يمكن أن يكون هناك شيء آخر؟ هل
يمكن أن يكون هناك framework يشكل إضافة عندنا؟
الـ Correlation ممكن تستخدمها كمقياس، ممكن
تستخدمها كمقياس، تعمل تعمل تعمل تعمل تعمل تعمل
تعمل تعمل تعمل تعمل تعمل تعمل تعمل تعمل تعمل
أنا ممكن أضيف الـ Correlation عشان يصير في عندي
element ثالث مع الـ support والـ confidence عشان
أنا أشوف العلاقة. وبالتالي الـ Correlation مهم ليس
فقط بسبب الـ support والـ confidence، بل فقط بسبب الـ
Correlation بين الـ item set، العلاقة ما بين الـ item
set. احنا متفقين أن الـ A والـ B تقاطع بينهم من
البداية في نعم، والتقاطع بينهم في okay. هذا كلام
صحيح، يعني independent attributes. لكن هل في ممكن
يكون في Correlation بينهم واحنا مش شايفينه، أو الـ
Correlation هذا مش، أو لا ينتمي أو لا يمثل بجموعة من
الـ Item Sets أو من الـ Items اللي موجودين في الـ
Item Set. فممكن أنا أضيفه. كذلك، ممكن أنا أعتمد
أستخدم الـ Chi-Square، تمام، اللي لما اتكلمنا عليه
في الـ Correlation، أستخدم الـ Chi-Square لما
أكون في الـ Data اللي عندي هي categorial أو
nominal، أو أعتمد على شغل بنسميه احنا الـ lift
analysis أو الـ lift correlation وهو عبارة عن
Correlation. سهلة الفكرة فيه، بكل بساطة أنه أنا
المفروض أن الـ item set، ظهورها الـ A والـ B
independent، والـ occurrence تبعتهم غير مرتبطة في
بعضها. وبالتالي، الـ probability تبع الـ A اتحاد الـ B
تساوي الـ probability للـ A في الـ probability للـ B.
otherwise، الـ A والـ B are dependent. يمكن أن يكون
بينهم dependency، والـ correlation كدليل على الـ
dependency اللي موجودة عندهم. فبكل بساطة ممكن أنا
احنا اتفقنا كمان مرة لجماعة، الخيار أنه أنا بدي
أضيف الـ correlation. الـ correlation هذه إما بتكون Chi
Square، تمام، أو بتكون اللي هي الـ lift، أو بتكون الـ
lift measurement. الـ lift بقول لي، لو كان في عندي
association rule A و B، A plus B as defined as
الـ lift بعرف لي إياها، أنها تساوي الـ probability للاتحادهم
على الـ probability حاصل ضربهم. وهذه تساوي الـ
probability للـ B difference الـ A على الـ
probability للـ B. الكلام أسهل بعيداً عن الـ
probability. الـ lift تساوي الـ confidence للـ A والـ B
على الـ support تبع الـ B. سابقاً الـ confidence هي
كانت الـ support تبع الـ A والـ B. الـ confidence
اللي كانت الـ support للـ A تبع الـ B على الـ
support تبع الـ A. الآن ستصبح المسألة كلها، يتضاف لها
الـ support تبع الـ B وهكذا سأكون حققت الـ
probability اللي موجودة عندها. وبالتالي هي عبارة عن
الـ Ratio of confidence to expected confidence
وهكذا أنا أتكلم أن هاتي عندي مقياس ثالث ممكن يكون
يضيف لي تحسين على موضوع الـ selection للـ rules
والأصل أنه أنا كل ما بيجي lift المفروض أن الـ lift
عشان أقدر أفهمها صح. إذا كانت الـ lift قيمتها أكبر
من واحد معناته positively correlated، معناته إذا
ظهر الأول هيظهر الثاني. طبعاً هذه إشارة جيدة.
Negatively correlated، أقل من واحد، معناته إذا الـ...
discouraged occurrence... معناته ظهور الأول لن
يظهر الثاني. وإذا كانت واحد معناته هذول الاثنين
independent ومافيش correlation ما بينهم. وبالتالي الـ...
الآن لو أنا سألت مين أفضل بالنسبة لي؟ مين يدعي
support أكثر، مين يدعي موثوقية أكثر في الـ confidence
المفروض لما تكون الـ... الـ... الـ lift عندي أكبر من
واحد، أروح لما تكون العلاقة independent، أقول
بالعكس، اللي لما تكون الـ lift أقل من واحد، معناته
في عندي مشكلة حقيقية في الـ association rule اللي
ظهر عندي، لأنه قيمته، المفروض لما يظهر واحد يختفي
الثاني. طيب ليش ظهروا الاثنين مع بعض في الـ
association rule هذا؟ معناته في عندي مشكلة
وبالتالي الـ rule هذا لازم أنا أتخلص منه. هيك ممكن
احنا خلصنا محتويات الـ chapter، إن شاء الله تعالى
خلينا نروح نشوف المثال اللي قمت بعمله مسبقاً في
الـ PyCharm
طيب، جماعة الخير، خلينا نكمل في الفيديو نشوف الـ
example
اللي موجود عندنا. أنا الآن بروح جوجل، أعمل import للـ
pandas، وعملياً بدي أبني data set، transaction من six
rows، من ست صفوف، وبدي أعمل import للعنصر من طريق الـ
machine learning extend، بدي processing import
transaction encoder، وهذا الـ transaction encoder
أنا هستخدمه من أجل أنه يحول الـ data set اللي
عندي، الـ data set هذه،
بالطبع طبعت الهاتف الخاص بالهاتف الخاص بالهاتف
الخاص بالهاتف الخاص بالهاتف الخاص بالهاتف الخاص
بالهاتف الخاص بالهاتف الخاص بالهاتف الخاص بالهاتف
الخاص بالهاتف الخاص بالهاتف الخاص بالهاتف الخاص
بالهاتف الخاص بالهاتف الخاص بالهاتف الخاص بالهاتف
الخاص بالهاتف الخاص بالهاتف الخاص بالهاتف الخاص
بالهاتف الخاص بالهاتف الخاص بالهاتف الخاص بالهاتف
طبعاً أنا طبعتها ثلاث مرات في ثلاث جمال قباضة
الجملة الأولى كانت بالـ array أو اللي إحنا سميناها
بـ binary 2D array هي راح تطبع الـ array اللي موجودة
عندي من ست صفوف true
false
الجملة الثانية جملة الطباعة كانت بتطبع الـ item set
اللي عندي و الـ support تبعتها، فراح جاب لي هاي الـ item
set، وطبعاً لما أنا قلت له استخدم أسماء الـ
attributes، فهي راح جاب لي الـ eggs وجاب ليها هان لو
أنا قلت له نوم مش حاطين عندي هاي الـ minimum support
الـ 6 من 10 اللي موجودة عندك، هان جاب لي هنا ستة
عناصر فعلياً مختلفة، أو عفواً ست frequent item sets
with minimum support ستة من عشرة، أنا قصدت أن
أجربها، ما بتطلع مثلها الآخر، فالجملة الأخيرة لما قلت
له هات لي الـ association rule، فراح قال لي الـ
association rule هي الـ antecedent أو الـ consequent
طبعاً في الأول الـ antecedent implies الـ consequent
هو الـ antecedent support، وطبعاً في معلومات هنا
خفية لأن شاشة العرض أعتقد أنها غير كافية للتعامل
مع الأنصار الموجودة عندها، لكن في الآخر قال لي هي
الـ left، وفي عند الـ average، طبعاً الـ lift واحد يعني
الـ attributes اللي عندي independent فعلياً، هم ما بيوجدش
يوجد علاقة، وبالتالي أنا ممكن أكتفي بالـ support والـ
confidence اللي موجودة عندنا، طيب لو أنا بدي أروح
طبعاً خليني بس نجرب هنا زي ما قلنا هاي هنا خمسة أو
بلاش أربعة من عشرة، هذه هي ترشيلتي الخاصة بها
عندما قلت له
خلي الـ confidence خمسة من عشرة، فقال لي عندي ثلاثة
وعشرين rules association، والـ support تبعتهم هيها
العناصر الموجودة هنا
بس ليش ما يعرضهاش؟ مش عارف الصحيح، بس في الآخر الـ
data موجودة عليها، طيب بالمثال الثاني لما أنا بدأت
أستخدم الـ app الـ fp growth، ولش مجرد بدك تستخدم
بكتب اسمه python fp growth، هي نفس الـ data set، قلت
له الـ frequent pattern تبعتي، الـ minimum support
تبعتي equal 3، وهنا بيقول الـ 7 من 10 مش 6 من 10
عفواً الحساب زي ما أنا... طبعاً هنا التجريب هيرجع
للمثال اللي موجود هنا طبعاً
هنا بتكلم على الابريوري، وإن كان هنا الـ FP growth
defined frequent pattern، الـ data الـ data set
مباشرة، لاحظوا أنا جزئية التحويل مش مسئوليتي أصلاً
لأن بشتغل على الـ data set مباشرة، الاثنين مجرد كان
السبعة مباشرة، طبعاً أسهل في الـ coding
الـ FP Growth and Generate Association Rules، فقلت
له أنا هاي الـ better أو هاي الـ association
التابعة لي تمام، الـ better التابعة هي الـ milk طبعاً
اتفقنا أن الـ better هي عبارة عن العناصر اللي أنا
عاملها، بجيبها طبعاً، هو بدأ مع عنصر وعنصرين الآخرين
لما راح جاب الـ association rule، وكيف بدأ أقرأ الـ
rules، هي الـ rule الأول، طبعاً هي عبارة عن جيسون في
الآخر، النتيجة تبع لي الـ rule الأول هي
الملك، يعني كيندي
بيز واليوجرت، وهذا الـ confidence تبعها خمسة و
سبعين في المئة، الثانية الـ support تبعها مئة في
المئة، إلى آخرهم من العناصر، الـ confidence عفواً من
العناصر الموجودة هنا، هذه كانت جامعة الخير...
انتهينا من موضوع الـ... الـ association rule... هرفق
لكم ملفين الـ coding هنا... عشان تجربوا في موضوع...
لو بقيت تجرب... شغلة عندك... وتشوف الـ result اللي
موجود... الله يعطيكم العافية... والسلام عليكم
ورحمة الله