المطبخ
26 يونيو 2019، 17:30 مساءً.
أينما ننظر نجد العديد من المقالات والتدوينات وصفات الطبخ وحتى الكلمات المتقاطعة، كل يوم نقرأ العديد من الأخبار ونشاهد البرامج الحوارية ونستمع لخطبة الجمعة كل أسبوع ونقوم بعد السيارات المارة من أمام المكتب بدلًا من العمل. كل هذا لديه جانب آخر، زاوية أخرى للنظر، حتى وإن كانت خطبة الجمعة طويلة، أو الكلمات المتقاطعة مملة أو صعبة، نحتاج أن ننظر إليها بشكل آخر، ك مجموعة بيانات، ونحللها بناءً على ذلك، ونستنتج منها معلومات كنا قد غفلنا عنها كما رأينا في مقال خطبة الجمعة وكما فعل سول بوانسون باكتشافه لعمليات السرقة في لعبة الكلمات المتقاطعة عبر تحليل أكثر من 80 ألف لعبة!
- مصدر البيانات: مطبخ سيدتي
- موضوع التحليل: وصفات الطبخ
- الأدوات المستخدمة للتحليل: Python(pandas, scikit-learn, mlxtend) ، JavaScript(plotlyjs)
- معالجة البيانات: تم اعتماد 5981 وصفة طبخ للتحليل، 42% منها أطباق رئيسية، 30% مقبلات و 28% حلويات ممثلة توزيع المطبخ.
Planche à découper
وكما يتصفح الشيف الوصفات، ويقرأ مكوناتها وطريقة التحضير، يقوم الكود بجلب جميع صفحات الوصفات، واستخراج البيانات (Data Scraping) من وقت التقديم ونوع المطبخ والطبق إلى الأصناف المستخدمة في كل وصفة وخطواتها. وفصلها بحيث تصبح جاهزة للتحليل.
ينتهي الحال بالصفحات ذات المحتوى المناسب للعرض كجداول بيانات مناسبة للتحليل والقياس بعد عدة مراحل من التنظيف والتجهيز، كتوحيد وحدات القياس من أكواب ولترات وحفنات إلى جرام حسب المكوّن، ليتسنى لنا وقت التحليل معاملة المكوّنات بشكل عادل، واستخراج القيم المكنونة في مسميات الأصناف كدجاجتين وثلث البصلة وهكذا.
مصفوفة الدقة
في روما وعلى مائدة القيصر تحديدا وثق التاريخ أول وجبة مكونة من ثلاثة أصناف (مقبلات - طبق رئيسي - حلويات) حتى وصل الفرنسيون لاحقا إلى ستة وسبعة أصناف ولكن مالذي يجعل الطبق مقبلات وليس طبقا رئيسيا على سبيل المثال؟ هل هو الترتيب والتسلسل فالطبق المقدم أولا هو من المقبلات مهما كان محتواه؟ أم هي المكونات ولكن بعض الأطباق الآسيوية الرئيسية حالية الطعم وهذا قد يوقعنا ببعض الحرج, ربما هي الكمية؟ لا نعلم ولكن سنحاول توقع تصنيف الطبق الموجود بالموقع بناء على المكونات والكمية
الطبخة | بصل | ثوم | سكر | صدر دجاج | ... | الصنف |
---|---|---|---|---|---|---|
سلطة سيزر | 20 | 5 | 0 | 250 | ... | مقبلات |
مكبوس دجاج | 20 | 15 | 0 | 500 | ... | وجبة رئيسية |
تبولة لبنانية | 1 | 0 | 0 | 0 | ... | مقبلات |
الأرز بالحليب | 0 | 0 | 25 | 0 | ... | حلويات |
... |
قمنا بمعالجة البيانات للوصول إلى هذه الصيغة حيث يمثل كل عمود أحد المكونات وكمية الجرامات المطلوبة أما الصنف فتم اعتماد ما هو مصنف بالموقع. قمنا ببناء نموذج غابة عشوائية (Random Forest) وتطبيق آلية شبكة البحث (Grid Search) لإيجاد مدخلات الضبط (Hyperparameters) الأنسب لتصنيف الطبخات بدقة عالية. تم اختبار النموذج على 1058 طبخة صنف منها 773 طبخة بشكل صحيح بدقة 73%
توضح لنا المصفوفة قدرة النموذج على تمييز الحلويات بشكل واضح بناء على المكونات والكميات حيث تنبأ ب284 من أصل 290 صنف حلويات بشكل صحيح ولكن يجد صعوبة في التمييز بين المقبلات والأطباق الرئيسية
ملاحظة: تم اختبار عدد آخر من النماذج وكانت الدقة تتراوح بين 55% - 70%
التنقيب عن البيانات
على مر السنين يتردد على مسامعنا جمل مثل "لا تكثر من أ ترى ما حطيت إلا ملعقتين من ب" وغيرها مما يشير إلى علاقة مجهولة بين العناصر لمن لا يطبخ دفعتنا لاستكشافها. ولإيجاد هذه العلاقات قمنا باستخدام خوارزمية Apriori وقواعد العلاقات (Association Rules)
الطبخة | بصل | ثوم | سكر | صدر دجاج | ... | الصنف |
---|---|---|---|---|---|---|
سلطة سيزر | 1 | 1 | 0 | 1 | ... | مقبلات |
مكبوس دجاج | 1 | 1 | 0 | 1 | ... | وجبة رئيسية |
تبولة لبنانية | 1 | 0 | 0 | 0 | ... | مقبلات |
الأرز بالحليب | 0 | 0 | 1 | 0 | ... | حلويات |
... |
في دراسة العلاقات نحن لا نكترث للكميات المكونة للوصفة وإنما هل تحتوي الطبخة على هذا العنصر أم لا؟ عندها نقوم بإحصاء بايزي (Bayesian) شرطي للعناصر بمعنى أننا نسأل أسئلة مثل في حال وجود البصل (الشرط) في طبخة ما فما احتمالية وجود الملح كذلك؟ وقبل اعتماد نتائج الخوارزمية نقوم بمراعاة مدخلين أساسيين هما:
- الدعم : يمثل نسبة تواجد العنصر في جميع الطبخات (مثال: البصل يتواجد في 31% من الطبخات المحللة)
- معدل الارتباط (lift): يمثل نسبة تواجد عنصر مع عنصر آخر/نسبة تواجده بغياب العنصر الآخر
ضبط الدعم يعالج إشكالية العناصر ذات الحضور الضعيف فلا يصح مثلا القول بأن هناك علاقة بين الزبدة والتمر إذا كان التمر استخدم في طبخة واحدة فقط فالعينة أقل مما يجب لإطلاق هذا الحكم, وضبط معدل الارتباط يعالج إشكالية العناصر ذات الحضور الطاغي ففي حال تواجد عنصرين في أغلب الطبخات ستكون نسبة تواجدهما سوية عالية ولا يعني بالضرورة ارتباطهما ببعض لذلك نقوم بالتحقق من العلاقة في حال غياب العنصر الآخر هل تتأثر نسبة الحضور أم لا.
قمنا بضبط الدعم ب8% من الطبخات (أكثر من 400 طبخة لكل عنصر) ومعدل الارتباط ب>1 (تواجد العنصرين سوية أعلى من تواجدهما مستقلين)
تم إيجاد 57 علاقة بين العناصر وهذه عينة من النتائج حيث نجد مثلا أنه إذا احتوت الطبخة على فلفل أسود وثوم ففي 92% من الحالات تواجد الملح كذلك
تمثيل المثلث
خلال تصفحنا اليومي لمدونات البيانات وحساباتها من الساعة الأولى لكل يوم عمل، تمر علينا العديد من الأفكار والرسوم البيانية بعضها يرافقك لساعات والبعض الآخر لأيام ونادرًا ما يرافقك محتوى لحد الهوس كمثلث قيبس أو المثلث البياني.
المثلث البياني هو طريقة لاستعراض توزيع مجموعة من العناصر على ثلاث متغيرات بشرط أن تكون المعادلة لكل عنصر:
المتغير الأول + المتغير الثاني + المتغير الثالث = ثابت
المميز في هذا الرسم هو كمية المعلومات الضخمة التي بإمكانك إيصالها للمتلقي بسرعة كبيرة ورسم واحد، فموقع عنصر موجود في هذا الرسم هو عبارة عن مخطط دائري (pie chart) مما يعني أن 300 عنصر ممثلة بهذا الرسم تغنيك عن 300 مخطط دائري، إضافةً إلى سهولة قراءة وتفسير وبديهية المثلث فعندما ترى العنصر مائلًا إلى زاوية على حساب أخرى تدرك مباشرة تسيّد هذا المتغير على المتغيرات الأخرى متيحًا لك إمكانية المقارنة البصرية دون اللجوء إلى قراءة الأرقام لكل عنصر.
قمنا بحساب مساهمة كل مكون لأصناف الوجبات، ثم تلوين الخضار والفواكه باللون الأخضر وباقي المكونات باللون الأحمر لإضافة بعد آخر للتمثيل.
مكون | مقبلات | طبق رئيسي | حلويات |
---|---|---|---|
حليب (جرام) | 8105جم | 15919جم | 44880جم |
حليب (نسبة مئوية) | 12% | 23% | 65% |