Jekyll2026-03-12T23:37:21+00:00https://alioh.github.io/feed.xmlعلي العوهليمحاولة لإثراء المحتوى العربيالإنحياز والتباين2022-09-09T00:00:00+00:002022-09-09T00:00:00+00:00https://alioh.github.io/Bias-and-Varianceالإنحياز والتباين أحد أهم المصطلحات في النمذجة الإحصائية، كذلك في تعلم الآلة. ولكن فهم هذه المصطلحات في مجتمعات تعلم الآلة غير واضح جداً، ذلك لأن كثير من المقالات تحاول التقليص من مفهومها “ الإنحياز = فرط التعميم، التباين = فرط التخصيص، أو بعرض الرسم البياني “ . هذه المصطلحات مناسبة عند الحاجة لوصف أداء نموذج بشكل سريع “هذا النموذج لدية إنحياز مرتفع وتباين منخفض“، أرى أن هذه المقالات تخفي المقايضة التي لا تظهر بين الانحياز والتباين. اتمنى أن يوضح هذا المقال للقارئ توضيحاً أكثر للإنحياز والتباين في النماذج الإحصائية.

النمذجة الإحصائية

ظهر الإنحياز والتباين من مجال النمذجة الإحصائية. النمذجة الإحصائية هو المجال الذي يحاول وضع نموذج في بيانات مُجَمعة لهدف:

  • التنبؤ.
  • الفهم.

مثال: بيانات منازل بوستن الشهيرة هي بيانات تم جمعها بواسطة خدمة التعداد السكاني في الولايات المتحدة في عام 1996. تحتوي على عدة متغيرات مثل: معدل الجريمة للفرد، عدد الغرف لكل مسكن، نسبة الشركات غير شركات التجزئة، والسعر.

إذا أردنا بناء نموذج لسعر المنازل، سنضع كل المتغيرات الأخرى كمتغيرات للنموذج وسعر المنزل هو المخرج الذي سيتم توقعه. إذا كان لدينا \(p\) كعدد المتغيرات \(X_{1},X_{2}, \ldots , X_{p}\) والمخرج هو \(Y\)، فيمكننا الإفتراض أن نموذج \(Y\) بإستخدام \(X\) يمكن تعريفة كالتالي:

$$Y= f(X_{1},X_{2}, \ldots , X_{p}) + \epsilon $$

في هذه المعادلة، لاحظ أن الدالة \(f(X)\) ثابتة، أيضاً هناك \(\epsilon\) في المعادلة. هذة الإشارة تعني الخطأ. وهو الفرق بين القيمه التي توقعها النموذج والقيمه الحقيقه ويمكن أن يمثل اشياءً أخرى مثل الضوضاء و العشوائية. المهم هنا هو أن \(\epsilon\) لا تعتمد على \(X\) ولديها متوسط يساوي صفر.

إذا أردنا البدء ببناء نموذج لهذة البيانات، لن نستطيع الوصول لجميع نقاط البيانات لدينا كونها لا تمثل كامل المجتمع (جميع نقاط البيانات يمكن تسميتها “المجتمع”). ولكن، لدينا فقط عينة محدودة من نقاط البيانات (تسمى “عينة”). هنا، لدينا عينة من 50 نقطة.

لضبط النموذج على البيانات، من الأفضل البدء بشكل بسيط، ثم الإنتقال للمسائل المعقدة. هنا إستخدمنا نموذج متعددة الحدود فيه \(n\) هي أعلى قوة، البداية من \(n=1\) (انحدار خطي) ثم الزيادة في قيمة \(n\) حتى 10. جميع النماذج تُضبط للتقليل من الخطأ التربيعي المتوسط.

ما هو التباين؟

لتعريف التباين ببساطة، ليست كُل العينات لديها نفس الصفات. عندما يكون لدينا عينتين مُختلفتين، فإننا سنبني نماذج مُختلفه قليلاً عن بعضها.

تم إختيار خمسين عينة مختلفة من نفس مجتمع البيانات. تم ضبط كُل واحدة بإستخدام نموذج متعدد الحدود للدرجة الثالثة.

هنا نقول أننا غيرنا في مدخلات النموذج. في الرسوم البيانية السابقة، كل النماذج متعددة الحدود من الدرجة الثالثة \(X^3\). كل نموذج دُرب على عينات مختلفة من مجتمع البيانات.

لنتخيل أننا أعدنا هذه العملية 100 مرة. بهذا الشكل ستكون النتيجة:

هدف بناء النموذج هو التنبؤ. عندما نريد التنبؤ ب \(Y\) بإستخدام النماذج لقيمة \(X\) جديدة، سينتج لنا التالي:

قيم متغيره لما تم التنبؤ به \(Y\) (النقاط باللون الأزرق) بإستخدام النماذج المختلفة. الخط الرصاصي المتقطع هي القيمة \(X\) التي إستخدمناها كمدخل للنموذج.

بعض النماذج تتنبؤ بشكل مختلف جداً، ولكن بعضها يتنبؤ بشكل متسق وثابت. نقوم بتحديد إتساق وثبات النموذج بإستخدام التباين. إحصائياً، التباين للنموذج هو متوسط الانحراف التربيعي لجميع التنبؤات. كما ذُكر في مقدمة في التعلم الإحصائي:

بشكل عام، الأساليب الإحصائية الأكثر مرونة لديها تباين عالي.

ما هو الإنحياز؟

بعد ان بنينا أكثر من نموذج تنبؤ، نريد أيضاً معرفة المتوسط، أو القيمة المتوقعة من النموذج. هذا المتوسط يطلق عليه القيمة المتوقعة للتنبؤات. الإنحياز هو مدى اختلاف القيمة المتوقعة لكل التنبؤات عن القيم الحقيقية.

الإنحياز هو المسافة بين القيم الحقيقية (المثلث البنفسجي) والقيم المتوقعة (الخط الأزرق). التباين هو مدى عرض النتائج المتوقعة (باللون الأحمر).

الرسم البياني السابق يظهر طريقة قياس الإنحياز والتباين وكيف يتم إستخدام كُلِ منهما لوصف النماذج التي تكون فارطة بالتخصيص أو التعميم.

  • في نموذج الإنحدار الخطي ( \(n=1\) )، المتوسط لنموذج التنبؤ مختلف جداً عن القيمة الحقيقة لـ \(Y\). ايضاً تباين النموذج عالي. لذا يمكننا القول أن نموذج الإنحدار الخطي لدية إنحياز عالي و تباين عالي.
  • في النموذج \(n=7\)، متوسط التنبؤ قريب جداً من القيمة الحقيقة لـ \(Y\). ولكن، تباين النموذج عالي. هنا يمكننا القول أن النموذج لدية إنحياز منخفض و تباين عالي.
  • في النماذج \(n=2\) و \(n=3\)، الإنحياز والتباين منخفضان. الهدف في النماذج الإحصائية هي الوصول إلى نماذج لديها إنحياز وتباين منخفضة.

المقايضة بين الإنحياز والتباين

كيف نعرف مدى صحة نتائج النموذج؟ يمكننا قياس الخطأ بين القيمة المتوقعة والقيمة الحقيقة، ثم جمعها وحساب متوسطها. بذلك، نصل إلى إنحياز نموذج التنبؤ. ولكن، سيؤثر ذلك بشكل عكسي، فإذا كان الإنحياز يساوي 0، ذلك يعني أن النموذج يتنبؤ بكل شئ بشكل صحيح (بدون تباين) أو أن النموذج يتنبؤ بشكل خاطئ لكل القيم (تباين عالي). بدلاً من ذلك، نقوم بجمع إما القيمة المطلقة أو القيمة التربيعية للخطأ. القيمة التربيعية للخطأ هي الأفضل في كثير من الحالات كونها اسهل بالتنفيذ والوصول إلى النتائج. نطلق على ذلك متوسط الخطأ التربيعي (MSE):

\[MSE = \frac{\sum_{n} ( \hat f_{x_0} - f_{x_0} )^2}{n}\]

إذا درست الإحصاء، فستعلم أن هذة المعادلة يطلق عليها القيمة المتوقعة لتربيع الخطأ. لدى القيمة المتوقعة بعض الخصائص التي يمكن استخدامها للوصول إلى متوسط الخطأ التربيعي. يمكن الوصول لشرح لها في ويكيبيديا أو هذا المقال.

\(MSE = var(\hat f_{x_0}) + (E[\hat f_{x_0}] - f_{x_0})^2 + var (\epsilon^2)\) \(= var(\hat f_{x_0}) + bias(\hat f_{x_0})^2 + var (\epsilon^2)\)

المصطلح \(var (\epsilon^2)\) يقصد به الخطأ الغير قابل للإختزال. يحدد القيمة الدنيا للخطأ التربيعي المتوسط للنموذج.

كتمرين رياضي، هل يمكنك حساب الخطأ الغير قابل للإختزال بمعرفتك بأن قيمة الخطأ بين \([-10, 10]\)؟

من الواضح أن قيمة متوسط الخطأ التربيعي تعتمد على مجموع و إنحياز نموذج التنبؤ. إذا قمنا برسم متوسط الخطأ التربيعي، التباين والإنحياز مع بعضها البعض للنماذج وقمنا بزيادة تعقيدها كل مره، سيظهر لنا رسم بياني على شكل حرف \(U\) للخطأ التربيعي المتوسط. إختيار النموذج المثالي يعتمد على إختيار القيم المناسبة للإنحياز والتباين.

هذا ما يطلق عليه — مقايضة الإنحياز والتباين. في مثالنا، يكون متوسط الخطأ التربيعي في قيمتة الدنيا عندما تكون \(n=3\). يمكننا القول أن متعددة الحدود من الدرجة الثالثة هي أفضل نموذج يشابهة المجتمع الحقيقي للبيانات.

سؤال: ماذا سيحدث للإنحياز والتباين عند زيادة بيانات التدريب؟

بشكل بديهي، عند زيادة عدد بيانات عينة التدريب، فأن نتائج النموذج ستكون أكثر دقة. لذا، سيكون تباين النموذج أقل عند زيادة عدد بيانات التدريب. ولكن على العكس، الإنحياز سيبقى كما هو. يعود ذلك إلى أن الإنحياز يتجه نحو المتوسط أياً كان عدد بيانات عينة التدريب. في الواقع، إذا كانت بيانات التدريب قليله جداً، فأنها ستأثر على إنحياز النموذج لأن الزيادة في عدد البيانات سيجعل نتائج التنبؤ أفضل.

سؤال: ماذا سيحدث للإنحياز والتباين عند إضافة قيمة غير متغيرة للنموذج؟

بكل بساطة، يقيس التباين مدى توسع تنبؤات النموذج. عند إضافة قيمة ثابتة، فأن التوزيع سيبقى مثل ما هو وتبقى قيمة التباين كما هي. على عكس ذلك، الإنحياز سيتغير إلى إتجاه القيمة الغير متغيرة.

مثال: عند إضافة قيمة غير متغيره 5 (اللون الأحمر)، صفر (اللون الأزرق)، -5 (اللون الأخضر). المصدر

الإستعمالات

حتى الآن، اتمنى أن تكون وصلت لك فكرة الإنحياز والتباين. بالأخص، سبب إستخدامها الدائم لوصف أداء النماذج. قد تتسائل ما إذا كانا فقط كلمات لوصف اداء النماذج دون أهمية نظرية أو عملية. هنا، سأشرح لك تطبيق الإنحياز والتباين على التحقق المتقاطع “Cross-Validation”.

التحقق المتقاطع

يعتبر التحقق المتقاطع أحد أشهر الطرق لتقييم أداء النموذج، في العادة، لتقييم أداء النموذج، نقوم بتقسيم البيانات إلى بيانات تدريب وإختبار، نعدل من مدخلات النموذج بإستخادم بيانات التدريب ثم نقيم النتائج بناءًا على بيانات الإختبار. لكن، إذا كان حجم البيانات لدينا قليل، يمكنك تدريب النموذج أكثر من مره بتوزيع البيانات إلى مجموعات صغيرة. ويكون التقييم النهائي للنموذج بناءًا على جميع التقييمات السابقة التي تمت على مجموعات بيانات الإختبار. عند النظر إلى طريقة استخراج العينات، يمكنك معرفة علاقة ذلك مع تباين النموذج. هدفنا هو إيجاد النموذج ذو أقل قيمة لمتوسط الخطأ التربيعي على بيانات تدريب إختبار جديدة، لذا هل سيساعدنا التحقق المتقاطع على فعل ذلك؟

أولاً، لنأخذ طريقة إختبار النموذج بإستخدام مجموعة اختبار واحدة (LOOCV)، في هذة الطريقة، بيانات الإختبار عبارة عن مجموعة واحد فقط، وبيانات التدريب هي باقي البيانات. يتم تدريب النموذج بشكل متكرر بعدد \(n-1\) مره، في المعادلة \(n\) هي عدد البيانات. التقييم النهائي للنموذج هو متوسط جميع بيانات التدريب.

بشكل مباشر، يمكنك ملاحظة فوائد طريقة LOOCV عكس الطريقة البسيطة لتقسيم البيانات إلى بيانات تدريب واختبار بدون تحقق متقاطع. إذا كانت عينة البيانات جيدة، فأن اخذ العينات بشكل متكرر من بيانات التدريب سيكون نتائجة مشابه لأخذ العينات من مجتمع البيانات الحقيقي. ولكن الفرق الملاحظ هو أنه عند تطبيق LOOCV، جميع عينات التدريب ستتداخل على بعضها البعض. هذا التداخل سيسبب تباين عالي للنموذج.

للتقليل من التباين، هناك طريقة أخرى يمكن إستخدامها يطلق عليها التحقق المتقاطع بإستخدام K-Flod. فيها، يتم تقسيم العينة إلى عدد متساوي \(k\). فيها بيانات الإختبار مجموعة واحدة والباقي بيانات تدريب. يتم تدريب النموذج بعدد \(k\) مره، في كل مره يتم تغير مجموعة بيانات الإختبار.

المصدر

بالمقارنة مع LOOCV، طريقة K-Flod بإمكانها إيجاد نماذج بتباين منخفض، ولكن بإنحياز مرتفع.

نتيجة متوسط الخطأ التربيعي بإستخدام التحقق المتقاطع LOOCV و K-Fold على بيانات الإختبار.

مدى فائدة إستخدام التحقق المتقاطع لإختيار أفضل النماذج؟ هنا، سنحاول اختيار أفضل قوة لمتعددة الحدود بإستخدام التحقق المتقاطع K-Fold ( \(K=10\) ). نتائج LOOCV كانت أفضل عند القوة 6 بينما كانت أفضل قوة لـ K-Fold عند الرقم 3. إذا أردنا أن لا يكون نموذجنا فارط بالتخصيص على بيانات التدريب، فسنختار النموذج الأبسط عند \(n=3\).

النتيجة

أتمنى أن المقال ساعدك على فهم المزيد عن ما وراء فكرة الإنحياز والتباين. من الآن وصاعداً، عند التفكير بإنحياز وتباين النموذج، يمكنك مباشرة البدء بتطبيق المبادئ الأولى والأساسية لإختيار القيم المناسبة للنموذج.

يمكنك التجربة والتعديل على الرسوم البيانية الموجودة في هذا المقال هنا.

جميع الصور والبيانات المستخدمة (عدا أن تم ذكر مصدر لها) انشأت بواسطة الكاتب.

مراجع

James, Gareth, et al. An introduction to statistical learning. Vol. 112. New York: springer, 2013.


المصدر

]]>
قاعدة بيانات مقالات جريدة الرياض عن كوفيد 192021-07-27T00:00:00+00:002021-07-27T00:00:00+00:00https://alioh.github.io/AlRiyadh-Newspaper-Covid-Datasetيسعدني أنا والدكتورة نجوى الغامدي أن نشارككم قاعدة بيانات للإستخدام في الاغراض البحثية تتضمن المقالات المنشورة في جريدة الرياض السعودية والتي تشمل على كلمات لها علاقة في كوفيد-19 منذ البداية حتى 1 فبراير 2021. ومن الخطط ان يتم تحديث هذة البيانات بين فترة وأخرى.

عن البيانات

البيانات هي جزء من بحث علمي تم تقديمة لعدد من المؤتمرات. تحتوي على جميع المقالات من صحيفة الرياض التي كُتبت وفيها الكلمات التالية:

  • كورونا
  • كوفيد-19
  • كوفيد المستجد
  • حظر التجول
  • منع التجول

الهدف من البيانات

نهدف في هذة البيانات إفادة المحللين ومن يرغب بدراسة اللغة العربية واستخدامها في المقالات الصحفية.

فائدة البيانات

  • تعتبر البيانات هي أول واكبر قاعدة بيانات لمقالات صحفية وأخبار محلية أو دولية لها علاقة بكوفيد-19.
  • يمكن الإستفادة من البيانات لرسم مخططات زمنية ودراسة السلوك.
  • يمكن الإستفادة منها بتدريب وضبط نماذج اللغات في التعلم العميق.

مصدر البيانات

تم جمع البيانات من الموقع الرسمي لجريدة الرياض السعودية بعد الموافقة منهم.

حجم البيانات

كل كلمة يختلف عدد المقالات فيها:

الكلمة عدد المقالات
كورونا 21961
كوفيد-19 1266
كوفيد المستجد 3044
حظر التجول 1087
منع التجول 1255

العدد الأجمالي للمقالات بعد حذف المقالات المتكررة في حال كانت المقالة تحتوي على أكثر من كلمة من التي في الجدول السابق هو: 24084 سطر

قاموس البيانات

الجدول التالي يشرح كل عامود، نوع البيانات فيه ومثال عليها:

العامود الوصف النوع مثال
ID * الرقم المميز للمقالة رقم 1867288
Category في أي قسم في الصحيفة تم إضافة هذا المقال نص مقالات اليوم / أخبار المناطق
Source مصدر الخبر، ممكن ان يكون مصدر رسمي للأخبار او كاتب المقالة نص الرياض - واس or خالد بن علي المطرفي
Date التاريخ تاريخ 2020-03-27
Time وقت نشر المقالة، في حال كان بدون نص او Null يعني أنة لم يتم إضافتة نص 12:05:51
Title عنوان المقالة نص أمير الجوف يشدّد على تطبيق الإجراءات الاحترازيه
Subtitle العنوان الفرعي للمقالة، لا يوجد في جمع المقالات نص رأس اجتماع غرفة العمليات المشتركة
Text نص المقالة نص شدّد صاحب السمو الملكي الأمير فيصل بن نواف بن عبدالعزيز...
Image * اذا كانت المقالة تحتوي على صورة واحدة، سيكون رابطها هنا نص /media/thumb/af/1d/1000_5b1f4e7dc6.jpg
Caption اذا كانت المقالة تحتوي على صورة واحدة، سيكون عنوانها هنا نص اليابان تخزن المزيد من النفط السعودي محققة انتعاشاً للطلب
Images * اذا كانت المقالة تحتوي على أكثر من صورة، ستكون روابطها هنا مصفوفة ['/media/thumb/08/d7/1000_a4964ed6ad.jpg', '/media/thumb/04/14/1000_127ad97cda.jpg']
Captions اذا كانت المقالة تحتوي على أكثر من صورة، ستكون عناوينها هنا مصفوفة ['مواعيد إلكترونية لاستقبال المراجعين', 'تطبيق مواعيد الدخول في المحاكم']
URL رابط المقالة نص http://www.alriyadh.com/1867288
Terms المصطلحات التي تم إستخدامها في المقالة من المصطلحات الخمسة مصفوفة ['كورونا', 'حظر التجول']
FullText تجميع للأعمدة الثلاثة Title و Subtitle و Text نص أمير الجوف يشدّد على تطبيق الإجراءات الاحترازية\\n ورصد المخالفات رأس اجتماع ... في تحقيقها ولله الحمد
FullTextCleaned العامود FullText بعد تنظيفة ( حذف النصوص الأنجليزية، الأرقام، ورموز الانتقال لسطر جديد) نص أمير الجوف يشدّد على تطبيق الإجراءات الاحترازية ورصد المخالفات رأس اجتماع ... في تحقيقها ولله الحمد
FullTextWords العامود FullTextCleaned بعد تقسيم الكلمات فيه إلى مصفوفة وكل كلمة على حدة مصفوفة ['أمير', 'الجوف', 'يشدّد', 'على', 'تطبيق', 'الإجراءات', ... 'الحمد']
WordsCounts رقم لعدد الكلمات في النص بعد التنظيف رقم 201

* لعرض محتوى هذة الأعمدة، قم بإضافتها بعد الرابط alriyadh.com/

تحليل استكشافي للبيانات

للمقالات التي تم نشرها بعد يوليو 2019.

عدد المقالات يومياً

عدد المقالات حسب الأيام

عدد المقالات حسب التصنيف

المقالات نشرت في أكثر من تصنيف وهي كالتالي:

التصنيف عربي التصنيف انجليزي عدد المقالات
الأخبار المصورة News in Photos 29
مقالات اليوم Today’s Articles 1112
متابعات Follow-ups 845
المنوعات Miscellaneous 295
المحليات Local News 5178
دنيا الرياضة Sport World 2347
الدولية International 5339
الاقتصاد Economy 2658
الأولـــى First Page 192
الأخــيــرة Last Page 674
الرأي Opinions 522
كلمة الرياض Riyadh Message 80
طــب Medicine 8
أخبار المناطق Regions News 859
خزامى الصحارى Deserts lavender 24
سينما Cinema 3
صورة اليوم Today’s Photo 10
فن Art 101
قول على قول Words on Words 7
محطات متحركة Moving Stations 3
فيديو الرياض Riyadh Video 1
ثقافة اليوم Today’s Culture 235
تقارير دولية World Reports 4
تقارير رسومية Graphical Reports 14
الأخبار الهامة Important News 3
المجتمع الدولي The International Community 1
أدب الجمعة Friday Literature 1
الكاريكاتير Caricature 1
تحقيقات وتقارير Investigations and reports 2
ثقافة السبت Saturday Education 2
اخر الثقافة Latest news on culture 19
آخر الأخبار Latest News 1
نجوم الأمس الرياضي Yesterdays Sports Starts 1

يمكن عرض جميع الرسوم البيانية بشكل تفاعلي في صفحة المشروع

تحميل البيانات

يمكن تحميل البيانات من صفحة المشروع في قيت هب أو الرابط المباشر

الترخيص والاستشهاد

الترخيص

يمكن تحميل البيانات بشكل مجاني تحت ترخيص Creative Commons Attribution 3.0 International license

الاستشهاد

عند استخدام البيانات يرجى الاستشهاد بالمصدر كالتالي:
Najwa Alghamdi and Ali Alohali, Saudi journalism in the age of COVID (2021).Submitted to Data in Brief.

شكر خاص لجريدة الرياض على سماحهم لنا بنشر هذة البيانات

]]>
كتاب “مبادئ وتقنيات علم البيانات”2021-03-23T00:00:00+00:002021-03-23T00:00:00+00:00https://alioh.github.io/ds100arالسلام عليكم، أردت كتابة بعض المعلومات البسيطة والنقاط التي استفدت منها من مشروع ترجمة كتاب مبادئ وتقنيات علم البيانات.

سبب الترجمة

لا أخفيكم الفائدة الكبيرة عندما عملت على ترجمة فصل من كتاب خوارزميات أساسية في تعلم الآلة، ولو أن المشروع لم يظهر للعلن ولم يتم نشرة باسمي واسم الزملاء عبدالعزيز الطويان و نهى الغامدي إلا أني تعلمت الكثير من المحتوى وكانت بداية للمشروع الأخير مبادئ وتقنيات علم البيانات. أهم نقطة تعلمتها قبل البدء في الترجمة، هي أخذ الموافقة من الكاتب 😅. سواء كانت الترجمة بتصرف وتعديل أو بدون، أرى أن الكاتب الرئيسي يحتاج تبليغ كونك استفدت واعتمدت على محتواة بشكل كبير. الحمد لله. أخذت الموافقة من سام لو أحد الكتاب الرئيسيين للكتاب ومنها أنطلق المشروع في 29/7/2020 كان أول رفع في قيت هب. سبب آخر لا اتوقع أني احتاج لذكرة هو هدف كل شئ أكتبة وهي أثراء المحتوى العربي ولو بمعلومات بسيطة وسهل الوصول لها بلغات أخرى. لا أزال أرى المحتوى العربي فقير في مواضيع كبيرة لكن بأذن الله نسعى جميعاً لتغير ذلك.

الفائدة الشخصية

في التعليم، أرى نفسي شخص سمعي، أركز أكثر عند سماع الشرح أو مشاهدته صوت وصورة. التحدي كان القراءة والقراءة أكثر من مرة. لذا أكبر فائدة لي شخصياً كانت أني ألزمت نفسي بالقراءة، والقراءة أكثر من مرة للمحتوى كي يظهر بشكل واضح ومرتب ومفهوم. بهذه الطريقة أجبرت نفسي على القراءة والإفادة والاستفادة (3 عصافير بحجر؟). وأصبح الآن مرجع لي للعودة له بأي وقت. تماماً بنفس شكل المواضيع السابقة مثل مدخل للقوائم المالية، ملخص كورس تفسير البيانات، ملخص كورس علم البيانات و تعلم الآلة للجميع.

محتوى الكتاب

يغطي الكتاب مفاهيم كثيرة، لكن يحتاج القارئ أن يتقن ولو بشكل بسيط لغة بايثون كونه ما يتحدث ولا يشرح طريقة البرمجة. يبدأ أول بمعلومات تاريخية عن الإحصاء وعلاقته بالبيانات، ثم يتكلم عن دورة حياة البيانات وطريقة التعامل معها باستخدام بايثون وبانداز. بعدها يتكلم عن تنظيف البيانات وتصويرها والتحليل الإستكشافي للبيانات. يتحدث بعد ذلك عن مواضيع ممكن تفيد أي شخص (ليس فقط في مجال علم وتحليل البيانات) مثل التعامل مع النصوص باستخدام التعابير النمطية RegEx وطريقة التعامل مع قواعد البيانات ببايثون واستخدام SQL. ينتقل بعدها بالتركيز على علم البيانات والنماذج والتوقعات، النزول الاشتقاقي وطريقة تحسين النتائج، الاحتمالات والتعميم، هندسة الخصائص والنماذج الخطية والتصنيف. الكتاب أيضاً يحتوي على الكثير من العمليات الرياضية والحسابية، فهمها مهم لكن لا ليس إجباري ولن يعيقك عن فهم الأفكار وتطبيقها.

خطوات مستقبلية

المحتوى يتحدث كل فترة، وبالأصح قبل شهر صدرت نسخة جديدة أعاد فيها الكُتاب ترتيب الكتاب، تخلصوا من بعض المحتوى وأضافوا آخر. التزمت بالمحتوى القديم عندما بدأت فيه، وبإذن الله لي عودة له في حال انتهوا من الكتاب بنسخته الجديدة لتعديل المحتوى الحالي ليطابق مع المحتوى الجديد.

التعاون

أحب أشكر مجموعة أشخاص وهم بعض من كانو يطلعون على نسخة أولية من الفصول ويقيمونها ويدققون عليها. لهم شكر خاص كونهم تعاونوا معي على إخراجه بشكله النهائي.

ولمن يواجه مشكلة أو خطأ يحتاج تصحيح أو تعديل، لا يتردد بالتواصل معي بأي وسيلة من وسائل التواصل الموجودة في المدونة أو عبر قيت هب.

شكراً

]]>
المشاريع المفضلة في Github2020-12-24T00:00:00+00:002020-12-24T00:00:00+00:00https://alioh.github.io/github-favoritesفي هذه المقالة سأشارككم بعض من المشاريع البرمجية ومفضلتي في Github. موقع Github باختصار هو طريقة لتخزين، مشاركة، وحفظ المشاريع البرمجية والتحكم بالإصدارات باستخدام Git.

إذا كنت مبرمجاً، محلل بيانات، أو مطور مواقع ولا تستخدم Github لمشاركة مشاريعك، فالأفضل لك البدء بذلك كونه من المصادر التي يبحث عنها أصحاب الشركات لمراجعة مشاريع المتقدمين لديهم. يمكنك أيضا من خلاله المشاركة في المشاريع مفتوحة المصدر مهما كانت خبرتك. إضافة إلى أنها طريقة مناسبة للتحكم بإصدارات كودك البرمجي والرجوع لأي نسخه قديمه دون الحاجة لحفظ أكثر من نسخه في جهازك. يمكنك البدء بتعلم Git و GitHub من هنا.

في هذه المقالة سأشارككم بعض من المشاريع من مفضلتي في Github مع إضافة بعض المعلومات البسيطة عنها. بعض هذه المشاريع عبارة عن برامج مفتوحة المصدر، صفحات تعليمية، أو مصادر للقراءة وكلها لديها صفحاتها في Github، يمكنك فيها مشاهدة جميع الأكواد البرمجية والتعلم منها. هذه المشاريع هي بعض من أكثر من 850 مشروع في مفضلتي لذا قد يتم إضافة المزيد في مقالات قادمة إن شاء الله.

البيانات وواجهات برمجة التطبيقات APIs

بيانات منوعة مختلفة المجالات.

  • Public APIs: قائمة بواجهات برمجة التطبيقات APIs مجانية.
  • Awesome Public Datasets: بيانات عامة ومتنوعة لكثير من المجالات مثل الاقتصاد، الزراعة، الأحياء، الصحة وغيرها الكثير.
  • Medical Data: بيانات طبية متنوعة من صور ونصوص إضافة لبحوث علمية طُبقت عليها
  • COVID-19: بما أن كوفيد-19 هو الشاغل الأكثر عالمياً، هذه الصفحة تحتوي على بيانات الحالات وتحدث يومياً.




الأدوات، التطبيقات والمواقع

تطبيقات مفتوحة المصدر، مكتبات أو أدوات لتعلم الآلة.

  • Carbon: إذا كنت تشارك اكوادك البرمجية مع أشخاص آخرين، فهذه الأداة تظهر الكود بشكل أنيق ويمكنك التحكم بالألوان والخلفية والخط. مثال.
  • TQDM: مكتبة لبايثون توفر شريط لمتابعة حالة الكود البرمجي مع توقع لوقت نهايته. مثال.
  • Photon: يطلق عليه بالإنجليزية Crawler وهي وسيلة لدخول المواقع وسحب الملفات، الصور، الروابط، وغيرها.
  • Notable: تطبيق لكتابة الملاحظات يستخدم المارك داون.
  • MoviePy: مكتبة لتعديل ملفات الفيديو في بايثون. مثال.
  • Pandas Profiling: لعرض معلومات كاملة عن داتا فريم في مكتبة بانداز المعروفة في تحليل البيانات. كل ما عليك هو إضافة المكتبة ثم إنشاء التقرير وتظهر النتيجة. مثال هنا، مثال للتصدير إلى ملف HTML هنا.
  • Stanza: مكتبة لتحليل معالجة اللغات الطبيعية NLP في بايثون.
  • PyTorch Tutorial: دروس مكتبة PyTorch المتخصصة في تعلم الآلة في بايثون.
  • Percollate: طريقة التحميل الصفحات أو المقالات كملفات PDF، Epub أو HTML بشكل أنيق ومرتب.
  • Awesome Dataviz: قائمة طويلة بكثير من المكاتب للرسوم البيانية في لغات برمجية مختلفة.
  • Orange: تحليل البيانات وإنشاء نماذج تعلم الآلة دون برمجة. (يمكن تحميل Orange مباشرة من داخل برنامج Anaconda).
  • OttoML: مشابه بشكل كبير لتطبيق Orange ولكن كموقع ألكتروني ومتخصص في تعلم الآلة واقتراح النماذج المناسبة.
  • First Contributions: لتعلم كيف تبدأ في المشاركة بالمشاريع مفتوحة المصدر.
  • Websites a Programmer should visit: إذا كنت مبرمج أو في المجال التقني، هذه قائمة مواقع ينصح بزيارتها.
  • Just Pandas Thing: اختصارات ومعلومات لتسهيل عملك مع مكتبة بانداز لتحليل البيانات في بايثون.
  • Awesome Arabic: مشاريع عربية بلغات برمجية مختلفة.
  • Shakkala: نموذج مفتوح المصدر لتشكيل النصوص العربية.
  • ARBML: نماذج عربية متنوعة في تعلم الآلة مفتوحة المصدر.
  • CAMeL: مكتبة لتحليل ومعالجة اللغات الطبيعية NLP في بايثون ومتخصصة باللغة العربية.

الكتب، البحوث والدورات

دورات تعلم مفاهيم أساسية لعدة مجالات، كُتب منشورة مجاناً، صفحات مواد من الجامعات وبحوث علمية متنوعة.

  • CS-229: مادة تعلم الآلة من ستانفورد. أيضاً يمكن في نفس الصفحة زيارة مادة CS 221 الذكاء الاصطناعي ومادة CS 230 التعلم العميق. تتميز المادة بوجود رسوم بيانية واضحة وشرح سلس. إضافة لوجود ترجمة عربية.
  • Free Programming Books: كُتب مجانية لتعلم البرمجة بعدة لغات.
  • Python Data Science Handbook: أحد أفضل الكتب للبدء بعلم البيانات في بايثون.
  • Learning: قائمة لمراجع كبيرة بعدة مواضيع في علم البيانات.
  • Handson ML: مشاريع في جوبتر لتعلم أساسيات تعلم الآلة والتعلم العميق باستخدام Scikit-learn و TensorFlow.
  • Machine Learning Course: دورة في تعلم الآلة.
  • Basics: دورة أخرى في تعلم الآلة.
  • Bad Data Guide: المشاكل التي قد تواجهك في عملك مع البيانات واقتراحات حلول لحلها.
  • Virgilio: كتاب في علم البيانات.
  • The Missing Semester of Your CS Education: ما لم تتعلمه في مادة علوم الحاسب، يتحدث عن عدة مفاهيم لا يتم تدريسها في الجامعات.
  • Data Science Cheatsheets: ملاحظات في علم البيانات لعدة مواضيع.
  • Deep Learning Book: كتاب في التعلم العميق.
  • Tensorflow Without a PHD: دورة لتعلم مكتبة Tensorflow.
  • D2L.AI: كتاب في التعلم العميق.
  • Pytorch Deep Learning: مادة من NYU في التعلم العميق.
  • Udacity Deep Leaning: مادة من Udacity في التعلم العميق.
  • Deep Learning Papers: كتب وبحوث تساعدك للبدء في التعلم العميق.
  • Megalodon: مصادر لأدوات ومراجع في تعلم الآلة والتعلم العميق.
  • Homemade Machine Learning: امثله عملية في بايثون لخوارزميات تعلم الآلة والشبكات العصبيه باستخدام امثله عملية.
  • NLP Tutorial: دورة عبارة عن دروس وبحوث وتطبيقات في معالجة اللغات الطبيعية NLP.
  • NLP Library: بحوث وأوراق علمية في معالجة اللغات الطبيعية NLP.
  • The NLP Pandect: مرجع لأدوات، دروس، بحوث علمية وغيرها من المراجع في ما يخص معالجة اللغات الطبيعية NLP.
  • 100 Must Read NLP Papers: قائمة ب 100 بحث علمي عن معالجة اللغات الطبيعية NLP ينصح بقراءتها.
  • PDFs: مكتبة ضخمة لمواضيع وادوات مختلفة مثل البحوث العلمية، شرح الأدوات، الكتيبات التعليميه وغيرها.




مصادر تعلم لغات برمجة

مصادر تعلم لغات برمجة أخرى غير بايثون.

  • R for Data Science: كتابة تعلم R لعلم البيانات.
  • Advanced R: مستوى متقدم في تعلم لغة R.
  • PHP Apprentice: أساسيات PHP.
  • PHP The Right Way: دروس متنوعة للبدء بتعلم PHP.
  • JS The Right Way: دروس متنوعة للبدء بتعلم Javascript.
  • Javascripting: أداه في سطر الأوامر لتعلم Javascript.
  • JS Books: كتب مختلفة ومتنوعة لتعلم Javascript.
  • You Don’t Know JS: النسخة الأولى للكتاب، الكتاب لتعلم لغة Javascript.
  • The Odin Project: دورات متنوعة في تقنيات الويب ولغاتها مثل Ruby on Rails، Nodejs، Javascript، HTML وقواعد البيانات.

الاستعداد للمقابلات الوظيفية

مصادر متنوعة تجهزك للاستعداد لمقابلتك الوظيفية القادمة.

  • 30 Seconds of Interviews: قائمة متنوعة من الأسئلة في المقابلات الوظيفية والأجوبة المناسبة لها.
  • Interview: قائمة متنوعة من المواضيع للاستعداد للمقابلات الوظيفية.
  • Machine Learning Interview: الاستعداد لمقابلة وظيفية في مجال تعلم الآلة.




الطريق لتعلم X

خطوات تعلم مجال معين من الصفر.

  • Data Scientist Roadmap: الطريق لتعلم علم البيانات.
  • Web-Dev For Beginners: للبدء في مجال تطوير المواقع.
  • Web-Dev Roadmap: الطريق للبدء بمجال تطوير المواقع.
  • Become a Full Stack Web Developer: مصادر ومعلومات لتصبح مطور مواقع.
  • Deep Learning Roadmap: طريقك للتعلم العميق. يقدم لك بحوث، دورات، بيانات وكتب والمزيد للبدء في هذا المجال.
  • freeCodeCamp: متخصص بعدة مجالات مثل تطوير المواقع، تحليل وتصوير البيانات، تعلم الآلة وأمن المعلومات وغيرها.
  • Game Developer Roadmap: طريقك لتصبح مطور ألعاب.

التعلم بالتطبيق

مصادر أخرى تقدم دورات لمواضيع مختلفة عن طريق تطبيقات عملية.

  • Machine Learning Project Walkthrough: تطبيقات عملية لتعلم الآلة على بيانات حقيقة.
  • Build Your Own X: تطبيقات عملية لبناء كثير من البرامج في مجالات مختلفة ولغات متنوعة.
  • Enlight: تطبيقات متنوعة لعدد كبير من اللغات البرمجية ويساعدك على بناء مشاريع عملية.
  • Project Based Learning: تعلم لغات مختلفة عن طريق بناء المشاريع.
  • Project Learn: تطبيقات عملية متنوعة بعدة لغات ومكتبات لتطوير الويب، تطوير تطبيقات الهواتف، تعلم الآلة والذكاء الاصطناعي والألعاب.

علوم الحاسب

تعلم علوم الحاسب من عدة مصادر، تقدم هذه الصفحات جدول مرتب لك لمواد علمية من عدة جامعات تساعدك على الحصول على ما يساوي شهادة في علوم الحاسب

أخرى

  • RealWorld: الفكرة هي تصميم موقع مشابه ل Medium.com بعدة لغات برمجة ومكاتب مختلفة، يمكنك تصفح هذه البرامج والتعلم منها.
  • Awesome Python Applications: برامج مفتوحة المصدر تم تطويرها باستخدام بايثون في عدة مجالات.

هذه بعض من مفضلتي في Github. تواصل معي على تويتر وأقترح لي مشاريعك أو صفحاتك المفضلة!

]]>
مدخل للقوائم المالية2020-04-22T00:00:00+00:002020-04-22T00:00:00+00:00https://alioh.github.io/performance-managementمن فترة اتابع وأقرأ عدة مقالات عن المحاسبة، المالية، وأسواق الأسهم وكيفية بناء نماذج تعلم آلة لتوقع مستقبل سعر شركة، وكيفية إيجاد الشركات الجيدة عن غيرها وتقييم الشركات حسب قوائمها المالية.

قبل ان أبدأ بالتطبيق مثلاً على السوق السعودي، من الأفضل أن افهم لغة سوق المال، قرأت وأخذت أكثر من مادة بعدة مواقع عن المالية والمحاسبة وحبيت أشاركها معكم، إذا كان هدفك فهم السوق فممكن تكون هذي بداية مناسبة قبل الدخول والقراءة أكثر بالتفاصيل من المتخصصين في هذا المجال. وهدف آخر ان تكون مرجع لي أو لأي شخص أراد مراجعة بعض المصطلحات المالية.

المقالة تحدث بين فترة وفترة لإضافة محتوى، مؤشرات، او معلومات جديده.

مقدمة

المحاسبة: توثيق وتسجيل وتصنيف العمليات المالية لإعداد القوائم المالية، المحاسب يعد القوائم المالية كمدخلات للمدير المالي لمساعدته على اتخاذ القرارات المالية.
الإدارة المالية: قراءة وتفصيل وتحليل القوائم المالية بهدف اتخاذ قرارات مالية. أنواع القرارات المالية:

  • تشغيلية.
  • تمويلية.
  • استثمارية.

أنواع الإدارات المالية:

  • التي تخص القرارات التشغيلية.
  • التي تخص المجالات التمويلية.
  • التي تخص النشاط الاستثماري.

الدورة المحاسبية

النظام المحاسبي: جميع العمليات الحسابية التي يتم توثيقها تندرج تحت الأصول الخمسة، وهي:

  • الأصول بتفاصيلها.
  • الالتزامات ( لمطلوبات).
  • حقوق الملكية.
  • الإيرادات.
  • المصروفات.

الدورة المحاسبية: تبدأ عند توثيق العملية المالية وتسجل في مُستند مالي إلى أن تنتهي على شكل قوائم مالية.

القوائم المالية - Financial Statements:

  • قائمة الدخل - Income statement:
    • إيرادات Revenues.
    • مصروفات Expenses.
      إيرادات - مصروفات = صافي الدخل ( ربح / خسارة )
  • قائمة المركز المالي (الميزانية ) - Balance sheet:
    • الأصول Assets.
    • الالتزامات Liabilities.
    • حقوق الملكية Equity.

القوائم المالية - Financial Statements

القوائم المالية: تُعد كل شهر. وهي:

  • قائمة الدخل - Income statement: تقيس ربحية المنشأة من خلال معرفة الفرق بين الإيرادات المصروفات.
  • قائمة المركز المالي (الميزانية) - Balance sheet: تبين حجم الأصول والالتزامات وحقوق الملكية.
  • قائمة التدفقات النقدية - Statement of cash flows: توضح حجم الأموال الداخلة والخارجة من المنشأة ورصيدها المتبقي.

قائمة الدخل - Income statement:

  1. الإيرادات - Revenues: الأرباح من المبيعات، ويُخصم منها:
    • تكلفة الإيرادات - Cost of goods sold: ما كلف المنشأة لبيع المنتج، ومن الممكن أن تكون مصاريف عمالة أو مصاريف إنتاج أو اي شئ دفع لبيع المنتج.
  2. المصروفات - Expenses: مصاريف تشغيلية مثل إيجار، رواتب، صيانه، هلاك، كهرباء… الخ.
  3. صافي الدخل - Profit or loss: الإيرادات - المصروفات. ( بعد الزكاة = خصم 2.5%، الزكاة تحسب في حال تحقيق ارباح).

مثال لقائمة الدخل (أضغط على الصورة للتكبير):

قائمة المركز المالي - Balance sheet: يجب أن تتساوى أوجه صرف الأموال مع مصادر الأموال. الأصول = الالتزامات + حقوق الملاك.

  1. الأصول - Assets: أوجه صرف أموال الشركة.
    • المتداولة - Current: النقدية، حساب البنك، المخزون، أوراق القبض، المدينون، أوراق المؤسسة.
    • الثابتة - Non-current: الأراضي، المباني، السيارات، الأثاث، الأجهزة والمعدات.
    • الغير ملموسة - Intangible: العلامة التجارية، الشهرة، الاسم التجارية، التراخيص، دراسة الجدوى.
  2. الالتزامات - Liabilities: من مصادر الأموال، مثل القروض.
    • قصيرة الأمد - Current: الالتزامات المتوقع دفعها خلال سنة.
    • طويلة الأمد - Non-current: الالتزامات المتوقع دفعها بعد أكثر من سنة.
  3. حقوق الملاك - Equity: من مصادر الأموال، وهي مساهماتهم في الشركة.

مثال لقائمة مالية (أضغط على الصورة للتكبير):

قائمة التدفقات النقدية - Statement of cash flows: تقيس مصادر الأموال سواء دخولها أو خروجها من ثلاث أوجه:

  1. النشاط التشغيلي - Operating: الأموال التي تزيد إيرادات المنشأة (الإيرادات). الأموال التي تقلل إيرادات المنشأة (المصروفات). الأموال التي يتم جمعها خلال سنة. لا تشملها الإستهلاك وإطفاء الخسائر.
  2. النشاط التمويلي - Financing: القروض، وأقساط دفعها.
  3. النشاط الاستثماري - Investing: المبالغ من بيع أصول المنشأة أو شراء أصول جديده.

مثال لقائمة التدفقات النقدية (أضغط على الصورة للتكبير):

التقييم والتحليل المالي

التقييم المالي: تقييم قوائم الشركة (الدخل، الميزانية، التدفقات النقدية)، طُرق التقييم المالي:

  • تحليل نقطة التعادل: النقطة التي تتعادل فيها الإيرادات مع المصروفات. تحقيق هدف مالي يعادل مبلغ المصروفات أو أعلى.
  • فترة الاسترداد: الفترة التي سيتم فيها استرداد رأس المال المُستثمر في الشركة.

التحليل المالي: تحليل القوائم، سواء شهرية او سنوية، وطُرق التحليل هي:

  • التحليل العامودي أو الرأسي: مقارنة بند مع بنود أخرى. مثلاً مصروفات الرواتب مقارنه بمجموع المصروفات. تتم المقارنة لمعرفة الاحتياجات المالية للشركة.
  • التحليل الأفقي: مقارنة بند مع نفس البند في فترة سابقة. مثلاً مصروفات الصيانة لشهر فبراير مع مصروفات الصيانة لشهر يناير. توضح أسباب التغييرات المالية في الشركة.
  • تحليل النسب المالية: مؤشرات مالية ثابتة تقيس أداء الشركة من عدة جوانب، سأركز هنا على الشركات في سوق الأسهم، وللإختصار راح استخدم الرموز التالية:
المعنى الرمز   المعنى الرمز
كل ما أرتفع الرقم كان أفضل 🔼   كل ما انخفض الرقم كان أفضل 🔽

المؤشر التعريف العملية الحسابية
(إضغط على الصورة للتكبير)
الرمز
Gross Margin
الربح الإجمالي
%
نسبة نجاح المنشأة في تحقيق أرباح مقابل نفقاتها لإنشاء المنتجات 🔼
Profit Margin
صافي الدخل
%
نسبة الربح بعد خصم تكاليف الإنتاج 🔼
Return per share
العائد على السهم
قياس ربح كل سهم في المنشأة 🔼
Return on assets
العائد على الأصول
%
مقارنة أرباح المنشأة مع كل وحدة من الأصول 🔼
Return on equity
العائد على حقوق المساهمين
%
قدرة المنشأة على تحويل الأموال المستثمرة فيها إلى أرباح 🔼
Price–earnings ratio
مكرر الأرباح
متى يمكن إعادة الأموال المستثمرة في المنشأة 🔽
من 1-15
Liabilities to total assests
المطلوبات إلى الموجودات
قدرة المنشأة على تسديد التزاماتها 🔽
Debt-to-equity ratio
المطلوبات إلى حقوق المساهمين
نسبة الإلتزامات (ديون-ذمم) مقابل حقوق المساهمين 🔽 أقل من 1
Debt to total assests
القروض إلى الموجودات
حجم القروض مقارنة بما لدى المنشأة 🔽
Book value
القيمة الدفترية
قيمة المنشأة حسب الورق 🔽
Price to book (P/B) value
مضاعف القيمة الدفترية
يقيس سعر سهم المنشأة مقارنه بقيمتها الدفترية 🔽
من 1-3
Dividend Yield
العائد على الأرباح الموزعة
نسبة الربح الموزع مقارنة بالسعر الحالي 🔼

تحديث 23/10/2020: مقاله ممتازه عن الشركات والنسب الماليه في أرقام

سيتم إضافة المزيد لاحقاً


القرارات المالية: اتخاذ قرار بناء على التحليل والتقييم المالي، تحدد المخاطر والتحديات القادمة للمنشأة. أنواعها:

  • تشغيلية - Operating.
  • تمويله - Financing.
  • استثمارية - Investing.

التخطيط المالي

التخطيط المالي: استعراض القوائم المالية، فهم ما حدث ووضع خطط مالية مُستقبلية لكُل قائمة. يسعى المدير المالي في التخطيط لمعرفة التالي:

  • حجم الأموال التي تحتاجها المنشأة.
  • حجم المصروفات المستقبلية.
  • حجم الإيرادات التي ستتحقق.
  • حجم الأصول المطلوب توفرها.
  • حجم الالتزامات المتوقعة.
  • حجم السيولة المطلوب توفرها.

موازنة قائمة الدخل (قائمة الدخل التقديرية): الفرق بينها وبين قائمة الدخل المُعدة من قبل المُحاسب، ان قائمة الدخل المُعَدة من المُحاسب هي لفترة سابقة لأرقام حقيقية، أما التقديرية هي لأرقام تقديرية ومتوقعة للفترة القادمة.

موازنة المركز المالي (الميزانية التقديرية): وضع ارقام تقديرية للأصول، الالتزامات وحقوق الملكية.

التدفقات النقدية المستقبلية: حجم السيولة المتوقع توفرها في المنشأة بناءًا على أنشطتها.

مراجع:

]]>
ملخص كورس تفسير البيانات2020-04-10T00:00:00+00:002020-04-10T00:00:00+00:00https://alioh.github.io/QI104السلام عليكم، ست أشهر تقريباً من آخر مقال نشرته هنا، ضغط عمل وأشياء أخرى، لكن في أشياء مخطط لها وشغال عليها وراح تنشر قريب ان شاء الله، في فترة الحجر الحالية حاولت استفيد من وقتي.

أخذت كورس من معهد تحسين الرعاية الصحية، عن أدوات التحليل بالأخص Run Chart, Control Chart, Histograms, Pareto Charts و Scatter Plots.
عنوان الكورس: (QI 104: Interpreting Data: Run Charts, Control Charts, and Other Measurement Tools) ورابط الكورس هنا اذا وصلت لصفحة خاطئة ابحث بأسم المادة في قوقل

طبعاً كامل المادة بالأنجليزي ودونت ملاحظاتي ايضاً بالأنجليزي فلذا خصصت لها صفحة منفصلة على الرابط التالي: https://alioh.github.io/IHI-QI104

]]>
خوارزميات أساسية في تعلم الآلة2019-10-25T00:00:00+00:002019-10-25T00:00:00+00:00https://alioh.github.io/100MLBook-Chapter3هذا المنشور هو ترجمة (حرفية) للفصل الثالث “لكتاب المائة صفحة في تعليم الآلة” من تأليف أندري بوركوف.

الفصل الثالث: خوارزميات أساسية

في هذا الفصل، سنشرح خمس خوارزميات ليست فقط هي الأكثر شهره ولكن أيضاً إما تكون هي الأكثر فاعليه أو تستخدم كجزء من أجزاء خوارزميات أخرى.

الإنحدار الخطي

يعتبر الإنحدار الخطي من أشهر خوارزميات الإنحدار والذي يتشكل فيه النموذج بشكل خطي بناءاً على الخصائص المدخله فيه.

مشكلة

لدينا مجموعه من الأمثله المصنفة \(\{(x_{i},y_{i})\}_{i=1}^{n}\)، هنا \(N\) هو حجم المجموعة، \(x_{i}\) هي أبعاد متجه الخواص للمثال \(i=1 ... N\)، \(y_{i}\) هو رقم صحيح والهدف \((y_{i} \in R)\) وكل خاصية \(x_{i} ^{(j)}, j = 1 ... D\) هي رقم صحيح أيضاً.

نريد أن نبني نموذج \(f_{w,b} (x)\) بشكل خطي من الخصائص المعطاه في المثال \(x\):

$$f_{w,b} (x) = wx + b$$ المعادلة (1)

فيها \(w\) عبارة عن متجه \(D\)-الأبعاد من المدخلات، \(b\) هي رقم صحيح و \(wx\) هي ضرب نقطي. الرمز \(f_{w,b}\) يعني ان النموذج \(f\) لديه مدخلين: \(w\) و \(b\). سنستخدم النوذج لنتوقع \(y\) المجهولة للمعطى \(x\) كالتالي: \(y = f_{w,b} (x)\). نموذجين يعطون مدخلين اثنين \((w,b)\) سيخرجون على الأرجح توقعين اثنين إذا تمت تجربتهما على نفس المثال. نريد إيجاد النتائج الأمثل \((w*,b*)\). بالتأكيد، النتائج الأفضل للمدخلات ستُعرف النموذج الذي يُنتج أكثر التوقعات دقة.
كما تلاحظ شكل النموذج الخطي في المعادلة (1) مشابة بشكل كبير لشكل نموذج متجهات الدعم SVM. الفرق الوحيد في الإشارة. يتشابهة النموذجان بشكل كبير. ولكن، أبعاد الخط العازل في متجهات الدعم SVM يتحكم بإتخاذ القرار: يستخدم للفصل بين مجموعتين. وبهذا، يجب أن يكون أبعد ما يكون بين كل مجموعة والأخرى. في الجانب الآخر، أبعاد الخط العازل في الإنحدار الخطي يتم إختيارة ليكون أقرب ما يكون لكل بيانات التدريب.
يمكنك مشاهدة أهمية النقطة السابقة في الرسم البياني التالي. يُعرض خط الإنحدار (اللون الأزرق الفاتح) للبيانات (النقط الزرقاء) بشكل أحادي الأبعاد. يمكننا إستخدام الخط لتوقع نتائج \(y_{new}\) للبيانات الغير مصنفة المدخله \(x_{new}\) التي لم تستخدم في بناء النموذج. اذا كان المثال متجهة ذات \(D\)-الأبعاد، الفارق الوحيد سيكون ان نموذج الإنحدار لن يكون خطاً ولكن سطح مستوي (لمتجة الخواص ثنائية الأبعاد) أو لفائض بعدي \(D > 2\).

مثال لإنحدار خطي صورة 1: إنحدار خطي لمثالث أحادي الأبعاد

يتبين الآن أهمية أن يبقى إنحدار الخط الفاصل أقرب قدر الإمكان إلى بيانات التدريب: إذا كان الخط الازرق بعيد عن النقاط الزرقاء، فأن التوقع \(y_{new}\) سيكون غالباً خاطئ.

الحل

لإيجاد الحل المطلوب، خطوة التحسين في الإنحدار الخطي والتي تهدف لإيجاد القيم المثلى لـ \(w^*\) و \(b^*\) تحاول التقليل من التالي:

$$\displaystyle \min_{w,b} \frac{1}{N} \displaystyle \sum_{i=1...N} (f_{x,b}(x_{i}) - y_{i})^2$$ المعادلة (2)

التعبير \((f(x_{i}) - y_{i})^2\) يطلق عليه دالة الخسارة. تقيس الدالة الأمثلة \(i\) التي أخطأت تصنيفها. هذا النوع من دالة الخسارة يطلق عليه دالة الخسارة المربعه Squared Error Loss. جميع الخوارزميات التي تعتمد على النماذج لديها دوال خسارة وما نفعلة لإيجاد النموذج الأفضل هو تقليل متوسط الخسارة ويطلق عليه أيضاً الخطر التجريبي Empirical Risk. متوسط الخسارة للنموذج هو متوسط جميع الأخطاء التي وُجِدت بعد تطبيق النموذج على بيانات التدريب.
لماذا الخسارة في الإنحدار الخطي دالة مُربعه؟ لماذا لا نجد القيمة المطلقة للفرق بين الأهداف الصحيحه \(y_{i}\) وقيمة التوقع \(f(x_{i})\) وإستخدامها لإيجاد الأخطاء؟ يمكننا ذلك. ويمكننا أيضاً إستخدام التكعيب بدلاً من التربيع.
الآن قد يتضح عدد القرارات التي تبدون عشوائية التي إتخذنائها عند تصميمنا لخوارزمية تعلم الآلة: قررنا إستخدام مزيج من الخصائص الخطية لتوقع النتائج. ولكن يمكن ان نستخدم التربيع او دالة متعددة الحدود لتجميع قيم الخصائص. يمكننا أيضاً إستخدام أي دالة خسارة أخرى نراها مناسبة: الفرق المطلق بين \(f(x_{i})\) و \(y_{i}\)، أو تكعيب الفرق بينهما; الخسارة الثنائية Binary Loss (1 عندما \(f(x_{i})\) و \(y_{i}\) مختلفين و 0 عندما يكونا متشابهين) قد تكون خيار آخر، صحيح؟

إذا إتخذنا قرارات أخرى لطريقة تشكيل النموذج، طريقة تشكيل دالة الخسارة، وإختيار الخوارزمية التي ستقلل متوسط الخسارة لإيجاد القيم المناسبة للمدخلات، سنكون وقتها قد إخترعنا خوارمزية تعلم آلة مختلفة. يبدو ذلك سهلاً أليس كذلك؟ ولكن لا تستعجل في إختراع خوارزمية جديدة. كونها مختلفة لا يعني أنها ستعمل جيداً في التجارب.

يخترع الأشخاص خوارزميات تعلم جديده لسببين:
- الخوارزمية الجديده تحل مشكلة عمليه أفضل من أي خوارزمية أخرى موجودة.
- الخوارزمية الجديده لديها ضمانات نظرية أفضل عن جودة النموذج التي تنشأة.

المبرر العملي لإختيار نموذج خطي هو سهولته. لماذا نستخدم نموذج مُعقد عندما يمكننا إستخدام السهل؟ سبب آخر هو ان النموذج الخطي نادراً ما يتعرض لفرط التخصيص. فرط التخصيص Overfitting هي خاصية في النموذج تجعلة يتوقع بشكل صحيح جداً للأمثلة المستخدمة وقت التدريب ولكن دائماً ما يخطئ عندما تقدم لهم بيانات ليست موجودة ولم تمر على الخوارزمية في وقت التدريب.

مثال فرط التخصيص صورة 2: فرط التخصيص

يظهر مثال في الصورة 2 عن فرط التخصيص. البيانات التي أستخدمت لبناء خط الإنحدار باللون الأحمر هي نفسها التي أستخدمت في الصورة 1، الفرق الوحيد هنا هي انها إنحدار أحادي Polynomial Regression بدرجة 10. يتوقع الإنحدار بشكل صحيح لكل البيانات المُدربه، ولكن سيفشل بشكل واضح مع بيانات جديده غير مُدرب عليها. سنتكلم أكثر عن فرط التخصيص وكيفية تفادية في الفصل الخامس.
والآن نعرف لماذا الإنحدار الخطي مفيد: لأنه لا يتفرط بالتخصيص بشكل كبير. ولكن ماذا عن الخسارة التربيعية؟ لماذا قررنا أنها ستكون تربيعية؟ في 1705، عالم الرياضيات الفرنسي أدريان ماري ليجاندر، أول من نشر فكرة جمع التربيع لقياس أداء النموذج قال أن تربيع الخطأ قبل جمعة خطوة مناسبة. لماذا قال ذلك؟ القيمة المطلقة غير مناسبة، لأن ليس لديها مشتق مستمر، مما يجعل الداله غير عملية. الدوال الغير عملية تجلب لنا صعوبات عند إستخدام الجبر الخطي لإيجاد أقرب شكل للحل لمشكلة تحسين للنموذج. الشكل الأقرب لإيجاد الدالة الأمثل هي التعبيرات الجبرية البسيطة وغالباً ما يفضل إستخدام طرق التحسين العددية المعقدة، مثل نزول إشتقاقي Gradient Descent.

الأخطاء التربيعية أيضاً مفيدة لأنها تضخم الفرق بين النتائج الصحيحة والتوقعات بناءاً على الفرق. من الممكن أيضاً رفعها إلى 3 أو 4، ولكن مشتقاتها ستكون معقدة للعمل بها.
أخيراً، لماذا نهتم بمشتقة متوسط الخسارة؟ تذكر أن في علم الجبر إذا استطعت إيجاد مشتقة الدالة في المعادلة (2)، يمكننا حينها مساواة الإشتقاق إلى صفر وإيجاد الحل للمعادلات التي ستعطينا القيم الأمثل لـ \(w^*\) و \(b^*\). يمكنك تجربة ذلك بنفسك بدقائق معدودة.

الإنحدار اللوجستي

أول شئ أقولة عن الإنحدار اللوجستي انه ليس إنحدار، بل خوارزمية تصنيف. الإسم جاء من الإحصاء وذلك بسبب ان العمليات الحسابية للإنحدار اللوجستي مشابهة بشكل كبير لتلك في الإنحدار الخطي.

سنشرح الإنحدار اللوجستي في مثال تصنيف ثنائي. ولكن يمكن إستخدامة لأي حجم من أحجام التصنيف.

مشكلة

في الإنحدار اللوجستي، لا نزال نريد النموذج \(y_{i}\) كدالة خطية \(x_{i}\)، ولكن بـ\(y_{i}\) ثنائية لن يكون ذلك سهلاً. المزيج الخطي للخصائص مثل \(wx_{i}+b\) هو دالة تمتد من سالف مالا نهاية إلى موجب مالا نهاية، ولكن \(y_{i}\) نتيجتها محصوره بقيمتين.

في غياب أجهزة الكمبيوتر، مُجبراً على عمل العمليات الحسابية يدوياً، العلماء في الماضي أرادو إيجاد نموذج تصنيف خطي بأي طريقة. وجدو أنه إذا عرفنا تصنيف سالب بـ0 والموجب بـ1، سنحتاج فقط لإيجاد دالة مستمرة بسيطة مجالها المقابل هو (0،1). في تلك الحالة، إذا كانت النتيجة من النموذج لمدخل \(x\) قريبة إلى 0، فأننا نعطية تصنيف سالب لـ\(x\)، وغير ذلك سيعطى تصنيف موجب. أحدى الدوال القادرة على ذلك هي الدالة اللوجستية البسيطة Standard Logistic Function (وتعرف أيضاً بـ دالة سيجمويد Sigmoid Function).

$$f(x) = \frac{1}{1+e^{-x}}$$

هنا \(e\) هي قاعدة اللوغاريثم الطبيعية (تعرف أيضاً بعدد أويلر أو دالة \(exp\) في برنامج الإكسل ولغات برمجية أخرى). رسمها البياني كالتالي:

مثال دالة لوجستية صورة 3: دالة لوجستية

بالنظر على الدالة اللوجستية البسيطة في الرسم البياني، نرى كيف أنها مناسبة للتصنيف الذي نرغب به: إذا حسنا القيم \(x\) و \(b\) بالطريقة الصحيحة، يمكننا قراءة نتائج \(f(x)\) أنها إحتمالية ان تكون \(y_{i}\) موجبة. على سبيل المثال، إذا كانت أعلى أو مساوية لـ0.5 نقول ان تصنيف \(x\) موجب، وغير ذلك سالب. مع التجارب، إختيار قيمة الفصل، 0.5، يمكن أن يتغير حسب المشكلة. سنعود لذلك في الفصل الخامس عنما نتحدث عن تقيم أداء النموذج. إذاً، معادلة نموذج الإنحدار اللوجستي ستبدو كالتالي:

$$f_{w,b}(x) = \frac{1}{1+e^{-(wx+b)}}$$ المعادلة (3)

يمكن رؤية \(wx+b\) التي سبق ان رأيناها في الإنحدار الخطي. الآن، كيف نجد القيم النموذج المناسبة لـ \(w^*\) و \(b^*\)؟ في الإنحدار الخطي، نقوم بتقليل الخطر التجريبي والذي عُرف بمتوسط دالة الخسارة.

الحل

في الإنحدار اللوجستي، بدلاً من إستخدام الخسارة التربيعية ومحاولة إيجاد التقليل من الخطر التجريبي، نحاول تكبير دالة الإحتمالية Likelihood Function، دالة الإحتمالية في الإحصاء توجد لنا إحتمالية ظهور النتائج بناءاً على النموذج.

على سبيل المثال، ليكن لدينا أمثلة مصنفة \((x_{i},y_{i})\) في بيانات التدريب. لنقل أيضاً أننا وجدنا (توقعنا) بعض القيم \(\hat{x}\) و \(\hat{b}\) من مدخلاتنا. إذا قمنا بتجربة النموذج \(f_{\hat{x},\hat{b}}\) على \(x_{i}\) بإستخدام المعادلة (3) سينتج لنا قيمة \(0 < p < 1\). إذا كانت \(y_{i}\) موجبة، إحتمالية ان تكون \(y_{i}\) موجبة بناءاً على نموذجنا، معطاة من القيمة \(p\). بنفس النهج، أذا كانت \(y_{i}\) سالبة، إحتمالية ان تكون سالبة \(1-p\).

معيار التحسين في الإنحدار اللوجستي يسمى الإحتمالية الكبرى Maximum Likelihood. بدلاً من تقليل متوسط الخسارة، كما في الإنحدار الخطي، الآن نزيد من الإحتمالية في بيانات التدريب بنموذجنا:

$$\displaystyle \max_{w,b} L_{w,b}$$

وفيه

$$L_{w,b} = \displaystyle \prod_{i= 1...N} f_{w,b}(x)^{y_{i}}(1-f_{w,b}(x))^{i-y_{i}}$$ المعادلة (4)

و \(f_{w,b}(x)^{y_{i}}(1-f_{w,b}(x))^{i-y_{i}}\) هي عملية رياضية تعني “ \(f_{w,b}(x)\) عندما \(y_{i} = 1\) و \((1-f_{w,b}(x))\) عندما تكون غير ذلك”.
قد تلاحظ اننا استخدمنا علامة الضرب \(\prod\) في الدالة بدلاً من علامة الجمع \(\sum\) والتي أستُخدمت في الإنحدار الخطي. ذلك لأن إحتمالية التصنيف \(N\) للأمثلة \(N\) هي نتيجة ضرب الإحتمالية في كل القيم (بفرض أن كل القيم مستقلة عن بعضها البعض). يمكن موازات ذلك مع حاصل ضرب نتائج الإحتمالات في مصفوفة من الإختبارات المستقلة في نظرية الإحتمالات.
بسبب دالة \(exp\) المستخدمة في النموذج، عملياً، من الأفضل تكبير لوغارثمية الإحتمال بدلاً من الإحتمال. لوغارثمية الإحتمال تعرف كالتالي:

$$LogL_{w,b} = ln(L(_{w,b}(x))=\displaystyle \sum_{i= 1...N}^Ny_{i} ln f_{w,b}(x) + (1-y_{i})ln(1-f_{w,b}(x))$$

الحل لمشكلة التحسين الجديده سيكون مشابه للأصلية لأن الوغارثم هي دالة متخصصه بالزيادة. الجزء الأخير يعني حينما نقوم بزيادة اللوغاريثم لأحدى الدوال، فأننا نزيد الدالة نفسها أيضاً.
على عكس ذلك في الإنحدار الخطي، لا يوجد حل لمشكلة التحسين السابقة. إحدى الإجراءات التحسينية الشائعة في تلك الحالات هو النزول الإشتقاقي. سنتحدث عنه في الفصل القادم.

تعلم شجرة القرار

شجرة القرار هي رسم بياني دوري يستخدم لإتخاذ القرارات. في كل فرع من الرسم البياني، خاصية معين \(j\) من متجهة الخواص يتم فحصها. إذا كانت القيمة أقل من قيمة الفصل، فإنها تتجهة للفرع الأيسر، وعكس ذلك، ستتجه للفرع الأيمن. عند الوصول إلى آخر فرع في الشجرة، يتم إتخاذ القرار على المثال المدخل.

كما هو مذكور في عنوان الجزء الحالي، تتعلم شجلة القرار من البيانات المدخلة لها.

مشكلة

كما في السابق، لدينا مجموعة من البيانات المُصنفة; التصنيف على شكل مصفوفة {0,1}. نريد بناء شجرة قرار تمكنا من توقع تصنيف القيمة المعطاة.

الحل

توجد الكثير من الأشكال لدالة لخوارزمية شجرة القرار. في هذا الكتاب، سنستخدم واحدة فقط، يطلق عليها ID3. معيار التحسين في هذه الحالة هو متوسط لوغارثمية الإحتمال:

$$\displaystyle \frac{1}{N}=\displaystyle \sum_{i= 1}^Ny_{i} ln f_{ID3}(x) + (1-y_{i})ln(1-f_{ID3}(x))$$ المعادلة (5)

هنا \(f_{ID3}\) هي شجرة القرار.
حتى الآن، تبدو الدالة مشابهه بشكل كبير للإنحدار اللوجستي. ولكن عكس ذلك، خوارزمية التعلم في الإنحدار الخطي تبني نموذج محدود Parametric Model \(f_{w*,b*}\) عن طريق البحث عن الحل المثالي لمعيار التحسين، خوارزمية ID3 تحسن بشكل تقريبي عن طريق بناء نموذج غير محدود Non-parametric Model \(f_{ID3}(x)=Pr(y_i=1|x)\).

مثال شجرة القرار صورة 4: رسم بياني لخوارزمية شجرة القرار. المجموعة S تحتوي على 12 مثال مُصنف. الجزء (أ) في البداية، تحتوي فيه الشجرة على الفرع الأول فقط; وتتوقع نفس التوقع لجميع المدخلات. في الجزء (ب) شجرة القرار بعد أول عملية فصل; تختبر ما إذا كان الخاصية 3 أقل من 18.3، وبناءاً على النتيجة، يتم التوقع بإحدى الفرعين.

خوارزمية التعلم ID3 تعمل كالتالي. لنجعل S مصفوفة لبيانات مُصنفة. في البداية، شجرة القرار لديها فرع واحد يحتوي على كامل البيانات: \(S={(x_i,y_i)}_{i=1}^{N}\). تبدأ بنموذج ثابت تماماً \(f_{ID3}^{S}\):

$$f_{ID3}^{S}\displaystyle \frac{1}{|S|}=\displaystyle \sum_{(x,y) \in S}y$$ المعادلة (6)

فيه \(|S|\) تعني حجم المصفوفة S. التوقع من النموذج بالأعلى، \(f_{ID3}^{S}(x)\)، سيكون نفسه لأي من المدخلات x. الرسم البياني لشجرة القرار المعنية هي الجزء (أ) في الصورة 4. ثم نبحث بجميع الخصائص \(j=1 ... D\) وجميع قيم الفصل \(t\)، ونقوم بفصل المصفوفة \(S\) إلى قسمين: \(S_-={(x,y)|(x,y) \in S, x^{(j)}<t}\) و \(S_+={(x,y)|(x,y) \in S, x^{(j)} \ge t}\).
المصفوفتين الجديدتين ستكون فرعين للشجرة، ونقيمها، لجميع الازواج المحتملة (j,t) وما إذا كان الفصل مناسب مع \(S_-\) و \(S_+\). أخيراً، نختار النتيجة الأفضل (j,t)، ونفصل \(S\) إلى \(S_-\) و \(S_+\)، لتكون فرعين جديدين، ونستمر بتكرار ذلك على \(S_-\) و \(S_+\) (أو التوقف إذا كان الفصل لا يكون نموذج أفضل). شجرة القرار بعد عملية فصل واحدة هي (ب) في الصورة 4.
والآن قد تتسائل عن ما تعنية الجملة “تقييم جودة التقسيم”. في ID3، مدى جودة التقسييم تقاس بإستخدام Entropy الإنتروبيا. الإنتروبيا لمصفوفة S:

$$H(S) = -f_{ID3}^{S}\log f_{ID3}^{S}-(1-f_{ID3}^{S})\log (1-f_{ID3}^{S})$$

عندما نقسم المصفوفة بناءاً على معيار معين j وقيمة فصل t، الإنتروبيا للفصل، \(H(S_-,S_+)\)، هي ببساطة مجموع النتائج الموزونه للإنتربيا:

$$H(S_-,S_+)=\displaystyle \frac{|S_-|}{|S|}H(S_-)+\displaystyle \frac{|S_+|}{|S|}H(S_+)$$ المعادلة (7)

إذاً، في ID3، في كل خطوة، وفي كل فرع، نوجد قيمة فصل تقلل الإنتروبيا بواسطة المعادلة 7 أو نتوقف في ذلك الفرع.
تتوقف الخوارزمية في فرع معين لأي من الأسباب التالية:

  • جميع الأمثلة في الفرع مصنفة بشكل صحيح بواسطة نموذج النتيجة الواحده (المعادلة 7).
  • لم نستطع إيجاد قيمة/صفة للفصل عليها.
  • الفصل يقلل الإنتروبيا إلى أقل من \(\epsilon\) (القيمة التي يجب إيجادها عن طريق التجارب),
  • الشجرة وصلت إلى الحد الأعلى من العمق \(d\) (أيضاً يجب إيجادها عن طريق التجارب).

لأن في ID3، القرار لفصل البيانات في كل عملية تكرار يتم مسبقاً (لا يعتمد على الفصل المستقبلي)، الخوارزمية لا تضمن الحل الأمثل. يمكن تحسين النموذج عن طريق بعض الأساليب مثل التراجع Backtracking عند البحث عن شجرة القرار الأمثل على حساب أخذ وقت أطول لبناء النموذج.

الفصل بناءاً على الإنتروبيا يعتبر منطقي: الإنتروبيا تصل إلى أقلها وهو 0 عندما تكون جميع الأمثل في \(S\) تحمل نفس التصنيف; وفي الجانب الآخر، الإنتروبيا تصل أعلاها وهو 1 عندما يكون نصف الأمثلة في \(S\) مصنفة بـ1، ويجعل ذلك ذلك الفرع غير مفيد في التصنيف. السؤال الباقي هو كيف يمكن لهذه الخوارزمية الوصول للحد الأقصى لمتوسط لوغارثمية الإحتمال. سنجيب عن ذلك لاحقاً.

آلة المتجهات الداعمة SVM

تحدثنا ببساطة عن SVM في المقدمة، لذا هذا الجزء سيملئ بعض الفراغات فقط. هناك سؤالين مهمين يجب علينا إجابتهم:

  • ما الحل إذا كان هناك ضوضاء وبيانات غير مرغوب فيها ولا يوجد خط فاصل يفصل البيانات الموجبة عن السالبة بشكل مناسب؟
  • إذا لم نستطع فصل البيانات بخط فاصل، ولكن يمكن فصلها بدالة متعددة الحدود أعلى؟
أمثلة آلة المتجهات الداعمة صعبة التفصيل صورة 5: حالات يصعب الفصل الخطي فيها. اليسار: وجود الضوضاء. اليمين: غير الخطية.

يمكنك مشاهدة ان في كلا المثالين في الصورة 5، في الصورة على اليسار، يمكن فصل البيانات بخط مستقيم لولا وجود البيانات غير المرغوب فيها (الشواذ أو بيانات مصنفة بشكل خاطئ). في اللصورة على اليمين، خط حد القرار على شكل دائرة وليس خط مستقيم.
تذكر أن في SVM، نريد أن نوفي الشروط التالية:
أ- \(wx_i -b \ge 1\) إذا \(y_i=+1\) ب- \(wx_i -b \le 1\) إذا \(y_i=-1\)

نريد أيضاً التقليل من \(w\) ليكون الخط الفاصل بعيد بنفس البعد عن أقرب قيمة من كل فئة من النتائج. التقليل من \(w\) مساوي للتقليل من \(\frac{1}{2}\|w\|^2\) وإستخدام هذا المصطلح يجعل من الممكن تطبيق تحسين برمجي تربيعي لاحقاً. إذاً مشكلة التحسين في SVM تبدو كالتالي:

$$\min \frac{1}{2}\|w\|^2 s.t. y_i(x_iw+b)-1 \ge0, i=1...N$$ المعادلة (8)

التعامل مع الضوضاء

لتوسيع SVM للحالات التي لا يمكن فصل البيانات فيها خطياً، نستخدم Hinge loss function دالة الخسارة المفصلية:

$$\max(0,1 -y_i(wx_i-b))$$

دالة الخسارة المفصلية تساوي صفر إذا كان الشرطين أ و ب صحيحين، بمعنى أصح، اذا كانت \(wx_i\) تقع في الجانب الصحيح من خط القرار. للبيانات في الجانب الخطأ من خط القرار، قيمة الدالة تتناسب مع المسافه من بين القيمة وخط القرار. ونحن حينها نريد أن نقللها

$$C\|w\|^2+\frac{1}{N} \displaystyle \sum_{i= 1}^N \max(0,1-y_i(wx_i-b))$$

فيها المتغير \(C\) يقرر قيمة التنازل بين زيادة حجم خط القرار وضمان أن كل \(x_i\) تقع في الجانب الصحيح من خط القرار. يتم إختيار قيمة \(C\) عادة مع التجارب، كما في خوارزمية ID3 ومتغيراتها \(\epsilon\) و \(d\). آليات المتجهات الداعمة التي تُحسن بدالة بالخسارة المفصلية يطلق عليها SVM ذات الهوامش اللينة، بينما الدالة الرئيسية يطلق عليها SVM ذات الهوامش القوية.
كما ترى، للقيم العالية من \(C\)، الشرط الثاني من دالة الخسارة سيكون غير مهم، لذا ستحاول خوارزمية آلة المتجهات الداعمة إيجاد أعلى هامش بواسطة تجاهل التصنيف الخاطئ. حين نقلل قيمة \(C\)، ستزيد علينا تكلفة التصنيفات الخاطئة، لذا تحاول الخوارزمية تقليل الأخطاء عن طريق التضحية بحجم الهامش. كما تحدثنا مسبقاً، زيادة الهامش افضل للتعميم. لذا، \(C\) تقوم بتنظيم التفضيل بين تصنيف بيانات التدريب شكل صحيح (تقليل الخطر التجريبي) وتصنيف البيانات المستقبلية بشكل صحيح (التعميم).

التعامل مع الغير خطية

يمكن لآلة المتجهات الداعمة التأقلم والعمل مع البيانات التي لا يمكن أن تفصل بخط فاصل في فضاءها الطبيعي. ولكن إذا أستطعنا أن نحول الفضاء الطبيعي لها إلى فضاء ذو أبعاد أعلى، نأمل بأن تكون الأمثلة تقبل الفصل خطياً بعد التحويل إلى هذا الفضاء عالي الأبعاد. في SVM، إستخدام دالة لتحولي الفضاء الطبيعي إلى فضاء عالي الأبعاد بشكل كامل خلال عملية تحسين دالة الخسارة يطلق عليها Kernel trick حيلة النواة.
يمكن مشاهدة شكل تأثير إستخدام حيلة النواة في الصورة 6. كما ترى، يمكن تحويل بيانات ثنائية الأبعاد لا يمكن فصلها بخط فاصل إلى بيانات ثلاثية الأبعاد يمكن فصلها بإستخدام طريقة معينة: \(\phi:\mathbf{x}\rightarrow\phi(\mathbf{x})\) فيها \(\phi(\mathbf{x})\) هي مصفوفة ذات ابعاد اعلى من \(\mathbf{x}\). على سبيل المثال، الرسم ثنائي الأبعاد (يسار) في الصورة 6، طريقة الرسم \(\phi\) للمثال \(\mathbf{x}=[q,p]\) التي تحول المثال إلى فضاء ثلاثي الأبعاد (يمين) ستبدو كالتالي: \(\phi([q,p])=(q^2,\sqrt{2qp},p^2)\) ، فيه \(q^2\) تعني \(q\) تربيع. يمكن أن نرى أن البيانات يمكن فصلها خطياً الآن.
ولكن، لا يمكن أن نعرف مسبقاً أن كانت طريقة \(\phi\) ستعمل على بياناتنا. إذا بدأنا أولاً بتحويل جميع المدخلات بإستخدام طريقة الرسم إلى مصفوفات ذات أبعاد أعلى وطبقنا SVM على البيانات، إن جربنا كل دوال الرسم الممكنه، ستكون العملية غير فعالة ولن نجد حلاً لمشكلة التصنيف لدينا.

آلة المتجهات الداعمة ثنائية وثلاثية الأبعاد صورة 6: اليسار: الرسمه الأصلية ثنائية الأبعاد التي لا يمكن فصلها خطياً. اليمين: نفس البيانات يمكن فصلها بعد تحويلها لفضاء ثلاثي الأبعاد.

لحسن الحظ، العلماء أكتشفو طريقة لإستخدام دوال النواة ( أو ببساطة النواة) للعمل بشكل سهل مع الفضاءات عالية الأبعاد إثناء عمل نموذج SVM بدون القيام بعملية التحويل. لمعرفة كيفية عمل دوال النواة، يجب علينا أولاً عرض كيفية عمل خوارزمية التحسين لآلة المتجهات الداعمة لإيجاد القيم المناسبة لكل من \(\|w\|\) و \(b\).
الطريقة التي تستخدم لعملية التحسين في المعادلة 8 هي طريقة مضاعفات لاغرانج. بدلاً من حل المشكلة الأساسية في المعادلة 8، من الأفضل حل مشكلة مشابهه تبدو كالتالي:

$$\displaystyle\max_{a_1...a_N}\displaystyle \sum_{i= 1}^N a_i-\frac{1}{2}\displaystyle \sum_{i= 1}^N\displaystyle \sum_{k= 1}^Ny_ia_i(\mathbf{x}_i\mathbf{x}_k)y_ka_k$$ تخضع إلى $$\displaystyle \sum_{i= 1}^Na_iy_i=0 و a_i\ge0, i=1 ...N$$

وفيه \(a_i\) هي مضاعفات لاغرانج. بهذه الطريقة، مشكلة التحسين تصبح مشكلة تحسين تربيعية محدبة، يمكن حلها بكفاءة عن طريق خوارزميات التربيع. الآن، ربما قد لاحظت في المعادلة العلوية، هناك مصطلح \(\mathbf{x}_i\mathbf{x}_k\)، وهنا هو المكان الوحيد الذي يستخدم فيه مصفوفة الخصائص. إذا اردنا ان نغير فضاء المصفوفة إلى فضاء أعلى، نحتاج لتغير \(\mathbf{x}_i\) إلى \(\phi(\mathbf{x}_i)\) و \(\mathbf{x}_j\) إلى \(\phi(\mathbf{x}_j)\) ثم ضرب كل من \(\phi(\mathbf{x}_i)\) و \(\phi(\mathbf{x}_j)\). سيكون فعل ذلك مكلفاً جداً.
على الجانب الآخر، نحن مهتمون بنتيجة عملية الضرب فقط، وهو رقم صحيح. لا نهتم بكيفية حصولنا على هذا الرقم ما دام الرقم صحيح. بإستخدام حيلة النواة يمكننا التخلص من تكلفة التغير لمصفوفة الخصائص الأصلية إلى مصفوفة ذات أبعاد أعلى وتجنب حساب نتيجة الضرب النقطي لهم. نُبدل ذلك بعملية بسيطة على مصفوفة الخصائص الأصلية التي تعطي نفس النتائج. على سبيل المثال، بدلاً من تحويل \((q_1,p_1)\) إلى \((q_1^2,\sqrt{2q_1p_1},p_1^2)\) و \((q_2,p_2)\) إلى \((q_2^2,\sqrt{2q_2p_2},p_2^2)\) وثم إيجاد نتيجة الضرب النقطي لـ \((q_1^2,\sqrt{2q_1p_1},p_1^2)\) و \((q_2^2,\sqrt{2q_2p_2},p_2^2)\) للحصول على \((q_1^2q_2^2+2q_1q_2p_1p_2+p_1^2p_2^2)\) يمكننا إيجاد نتيجة الضرب النقطي بين \((q_1,p_1)\) و \((q_2,p_2)\) لإيجاد \((q_1q_2+p_1p_2)\) ثم تربيعها للحصول على نفس النتيجة لـ \((q_1^2q_2^2+2q_1q_2p_1p_2+p_1^2p_2^2)\).
هذا كان مثال لحيلة النواة واستخدمنا النواة التربيعية \(k(\mathbf{x}_i,\mathbf{x}_k)=(\mathbf{x}_i\mathbf{x}_k)^2\).
يوجد عدد أكثر من دوال النواة، الأكثر إستخداماً هي RBF نواة:

$$k(\mathbf{x}, \mathbf{x'})=\exp\displaystyle \left(-\frac{\|\mathbf{x}- \mathbf{x'}\|^2}{2\sigma^2}\right)$$

وفيه \(\|\mathbf{x}- \mathbf{x'}\|^2\) هي Euclidean distance المسافة الإقليدية التربيعية بين مصفوفتين من الخصائص. المسافة الإقليدية ممثلة بالمعادلة التاليه:

$$d(\mathbf{x}_i, \mathbf{x}_k)={\sqrt {\left(x_i^{(1)}-x_k^{(1)}\right)^2+\left(x_i^{(2)}-x_k^{(2)}\right)^2+\cdots +\left(x_i^{(N)}-x_k^{(N)}\right)^2}} =\sqrt {\displaystyle \sum_{j= 1}^D \left(x_i^{(j)}-x_k^{(j)}\right)^2}$$

يمكن ملاحظة ان فضاء الخصائص لنواة RBF غير محدودة الأبعاد. بتغير المتغير \(\sigma\)، محلل البيانات يمكن أن يختار بين الحصول على خطوط قرار سلسة أو منحنية في الفضاء الأصلي.

خورازمية أقرب الجيران KNN

خوارزمية أقرب الجيران KNN هي خوارزمية غير حدودية. على عكس باقي الخوارزميات التي تتجاهل بيانات التدريب بعد بناء النموذج، الخوارزمية تبقي جميع بيانات التدريب في ذاكرتها. عندما تأتي قيمة جديدة، قيمة لم ترها من قبل، تقوم الخوارزمية بإيجاد \(k\) الأقرب إلى المثال في الفضاء متعدد الأبعاد \(D\) وتعيد أكثر التصنيفات تكراراً (في حال كانت المشكلة تصنيفية) أو المتوسط (إذا كانت المشكلة خطية).

قرب أقرب نقطتين تحدد بواسطة دالة خاصة للبُعد. على سبيل المثال، المسافة الإقليدية التي سبق ذكرها تستخدم غالباً في التدريب. إقتراح آخر لقياس البُعد Cosine Similarity جيب التماثل السلبي. جيب التماثل مُعرف كالتالي:

$$\cos(\mathbf{x}_i, \mathbf{x}_k)= \frac{\sum_{j= 1}^D x_{i}^{(j)}x_{k}^{(j)}}{\sqrt{\sum_{j= 1}^D\left(x_i^{(j)}\right)^2} \sqrt{\sum_{j= 1}^D\left(x_k^{(j)}\right)^2}}$$

هي مقياس لمدى تشابة الإتجاهات لمصفوفتين. إذا كانت الزاوية بين مصفوفتين تساوي 0 درجة، إذا كلا المصفوفتين تتجهان إلى نفس الطريق وجيب التماثل يساوي 1. اذا كانت المصوفتين متعامدتان، فأن جيب التماثل تساوي 0. للمصفوفات التي تشيران إلى عكس الإتجاه، جيب التماثل يكون فيها مساوي -1. إذا أردنا إستخدام جيب التماثل كمقياس للمسافه، فيجب علينا ضربة في -1. مقياسات أخرى شهيره لقياس المسافه هي مقياس تشيبيشيف، ماهالانوبيس، هامينق لقياس المسافة. إختيار مقياس المسافه، وكذلك قيمة \(k\)، يتحكم ويقررها المحلل قبل تشغيل الخوارزمية. إذاً هي متغيرات. مقياس المسافة يمكن تعلمه أيضاً من البيانات (وأيضاً يمكن توقعه). سنتحدث عن مزيد من ذلك في اجزاء لاحقة.
الآن تعلمنا كيف نبني خوارزمية النموذج وكيف تتم عملية التوقع. أحد الأسئلة المهمة هنا هو ما عمل دالة الخسارة؟ بدون غرابة، لم يتم دراسة اجابته في الكتب، رغم شهرة الخوارمزية منذ بداية الستينات. المحاولة الوحيدة لتحليل دالة الخسارة لخوارزمية KNN كان بواسطة لي و يانق في 2003.
للتبسيط، فإننا نوجد أستنتاجاتنا تحت أفتراضات التصنيف الثنائي (\(y\in\) {0,1}) مع جيب التماثل وتسوية Normalized خصائص المصفوفة. بهذه الإفتراضات، KNN تقوم بعملية تصنيف خطي مع مُعامل المصفوفة.

$$\mathbf{w}_\mathbf{x}=\displaystyle\sum_{(\mathbf{x'},\mathbf{y'})\in R_k(\mathbf{x})}\mathbf{x'}\mathbf{y'}$$ المعادلة (9)

فيها \(R_k(\mathbf{x})\) هي مصفوفة \(k\) لأقرب الجيران للقيمة المدخلة \(\mathbf{x}\). المعادلة العلوية تقول ان نأخذ مجموع كل قيم أقرب الجيران لأحد القيم المدخله \(\mathbf{x}\) عن طريق تجاهل تلك القيم المساوية لصفر. قرار التصنيف هنا يأخذ عن طريق تعريف قيمة فصل من الضرب النقطي \(\mathbf{w}_\mathbf{x}\mathbf{x}\) والذي، في حالة تسوية خصائص المصفوفات، مساوي لجيب التماثل بين \(\mathbf{w}_\mathbf{x}\) و \(\mathbf{x}\).
الآن، يتم تعريف دالة الخسارة كالتالي:

$$L=-\displaystyle\sum_{(\mathbf{x'},\mathbf{y'})\in R_k(\mathbf{x})}\mathbf{x'}\mathbf{y'}\mathbf{w}_\mathbf{x}+\frac{1}{2}\|\mathbf{w}\|^2$$

وجعل مشتقة الدرجة الأولى في الجانب الأيمن تساوي صفر يوجد لنا معامل المصفوفة في المعادلة رقم 9.


تم ترجمة هذا الجزء قبل إعلان المؤلف أن الكتاب تُرجم وسيتم نشرة للعربية من أحدى الجهات في دولة الإمارات.

شكراً لكل من عبدالعزيز الطويان و نهى الغامدي على تعاونهم في التدقيق والتصحيح والترجمة.

]]>
Data Science Nanodegree Capstone Project2019-07-12T00:00:00+00:002019-07-12T00:00:00+00:00https://alioh.github.io/DSND-Capstone-ProjectThis project (Capstone Project) is part of Udacity’s Data Scientist Nanodegree program

Starbucks Best Offers Predictor / Analysis

Copyright: monticello/123RF. e

Project Overview

In this project, I will try to find how Starbucks customers use the app, and how well is the current offers system. I will also see who should the app target in promotions. The data sets used in this project contains simulated data that mimics customer behavior on the Starbucks rewards mobile app. From it, we can understand the costumers' behavior and it might help us make better decisions. e

Problem Statement

The problem we have here is that we don't want to give any customer our offers. We want to give only those who we think will be able to complete the offer. Giving an offer to someone we know he/she probably will not be able to complete it is a waste of time and resources that can be given to someone who we know will complete it. I will approach this problem by first cleaning up the data, then doing some exploratory analysis and see who are my most valuable customers after that I will create a model to help us predicting feature customers and which type of offer should we give them. e

My goal for this project is predicting which kind of offers, Buy One Get One Free (BOGO), Discount or informational is better to give a current customer by only knowing his/her age, gender, income and the amount they are paying. e

Metrics

The metric I used this project is accuracy. Since we have a simple classification problem, I will use accuracy to evaluate my models. We want to see how well our model by seeing the number of correct predictions vs total number of predictions. For the different models I used in this project, I checked the accuracy my training and testing data sets and decided which to choose based on it. e

Analysis

Copyright: opengridscheduler e

Business understanding

My objective here is to find patterns and show when and where to give specific offer to a specific customer. Main users of this kind of applications are Starbucks employees and analysts. The plan in this project to have questions and answer them with data visualization. Tha data is provided by Starbucks contains simulated data that mimics customer behavior. e

Data Exploration / Understanding

In this project we were given 3 files. Before I start analyzing we have to explore and see what is the data we have. We need to check if it is clean or not, if each column have the right type that the data tell, for example if the data in column called price is saved as string, we need to convert it to number to help us in the analysis if we want to find the sum for example, having it as string will not return the total of that column. Similar thing goes to dates saved as strings. e

The data we have is provided by Starbucks. Here is a quick breakthrough of how the data looks like: e

  • portfolio.json - containing offer ids and meta data about each offer (duration, type, etc.)
  • profile.json - demographic data for each customer
  • transcript.json - records for transactions, offers received, offers viewed, and offers completed

Here is the schema and explanation of each variable in the files: e

portfolio.json - 10 rows, 6 columns. e

  • id (string) - offer id
  • offer_type (string) - type of offer ie BOGO, discount, informational
  • difficulty (int) - minimum required spend to complete an offer
  • reward (int) - reward given for completing an offer
  • duration (int) - time for offer to be open, in days
  • channels (list of strings)

profile.json - 17000 rows, 5 columns. e

  • age (int) - age of the customer
  • became_member_on (int) - date when customer created an app account
  • gender (str) - gender of the customer (note some entries contain 'O' for other rather than M or F)
  • id (str) - customer id
  • income (float) - customer's income

transcript.json - 306534 rows, 4 columns. e

  • event (str) - record description (ie transaction, offer received, offer viewed, etc.)
  • person (str) - customer id
  • time (int) - time in hours since start of test. The data begins at time t=0
  • value - (dict of strings) - either an offer id or transaction amount depending on the record

Data preparation / Wrangling

In this part I did a lot of changes to the three tables. Here are the changes I made: e

portfolio.json

channels column: this hold a list of the channels where the offer is delivered. and to fix it I one-hot-encoded it to look like this. e

profile.json

The gender and income column have NaN values. For gender, NaN were converted to NA. For income, NaN were replaced by the mean. e

transcript.json

Similar to what we saw before in portfolio channels column, here the value column holds dictionary of offer id, amount, offer_id and reward. To fix this I will do the same think I did before with channels, one-hot-encoding, and I will combine offer_id and offer id since both means the same thing. The final result looks like this. e

Analysis

A. Univariate Exploration

What are the most common values for each column in each data frame

For age, we can see that most of ages in our profile data frame falls in-between 40 and 80. We already notice one outlier which is 118. Our median is around 58 years old. e

The first bar chart tell us that we have a lot profile in the adult age group, ages between 21 and 64. e

What is the average income for Starbucks customers

For the income, most of their income are between 50k and 78k. The exact number for average income is 65404. e

What is the average age for Starbucks customers

From what we saw in the first question, our average age is around 58. e

What is the most and least common promotion

The offer ID 'fafdcd668e3743c1bb461111dcafc2a4' is the most common with number of completion equal to 5317. The least common offer is '4d5c57ea9a6940dd891ad53e9dbe8da0' with total of 3331 completion. e

The most common types of offers is BOGO and Discounts. e

Who are the most loyal customer - most transcripts

Here are a list of the most loyal customers (customers who spends a lot of money on offers/transactions). e

What are the most events we have in our transcripts

Transaction have the most amount of rows in the transcript data frame with around 140k, almost half of our data frames total. e

B. Multivariate Exploration

What is the most common promotion for children, teens, young adult, adult and elderly customers

NA = Transactions. We can see that most of our customers falls in the adult and elderly group age. And they prefer Buy One Get One and Discount offers than informational offers. e

From profiles, which get more income, males or females

The graph above shows that income median (the white dot) for females (around 70k) is higher than males (around 60k) we can also see that for females the income spreads from 40k to 100k. For males most of them around 40k to 70k which close to median. e

What is the gender distribution in the transcript data frame

Total number of males records 155690, and total number of female records is 113101. e

From the two graphs above we can see that males received offers more than females. Both genders seems to reflect on those offers similarly. Around half of offers received were viewed by both genders, but it seems that females would complete those offers more than males. The numbers are: e

For Females: e

Total transcripts is: 113101. e

Number of bogo offers: 27619, 43.34% of total. e

Number of discount offers: 26652, 41.83% of total. e

Number of informational offers: 9448, 14.83% of total. e

Number of offer completed: 15477, 56.37% of total offers received. e

Number of offer received: 27456, 43.09% of total. e

Number of offer viewed: 20786, 32.62% of total. e

Number of transaction: 49382, 43.66% of total. e

For Males: e

Total transcripts is: 155690. e

Number of bogo offers: 35301, 42.58% of total. e

Number of discount offers: 34739, 41.91% of total. e

Number of informational offers: 12856, 15.51% of total. e

Number of offer completed: 16466, 43.18% of total offers received. e

Number of offer received: 38129, 46.0% of total. e

Number of offer viewed: 28301, 34.14% of total. e

Number of transaction: 72794, 64.36% of total. e

The numbers above shows that males receive offers more than females by 9% and their transaction is 19% more too, which tells that they both more than females. Regarding offers, Males and Females received the same amount of BOGO and discount offers. e

Who takes long time to achieve each promotion goal and from which gender, age, income

The mean time it takes a customer to complete an offer is around 16 days (390 hours). e

Which type of promotions each gender likes - offer_type

We can see that both genders like bogo and discount offers and they have the same reaction to informational offers, they both seem to be not interested to it. e

From each offer received by customer, how many they completed

For Females: e

Number of offer completed: 15477, 56.37% of total offers received. e

Number of offer received: 27456, 43.09% of total. e

Number of offer viewed: 20786, 32.62% of total. e

Number of transaction: 49382, 43.66% of total. e

For Males: e

Number of offer completed: 16466, 43.18% of total offers received. e

Number of offer received: 38129, 46.0% of total. e

Number of offer viewed: 28301, 34.14% of total. e

Number of transaction: 72794, 64.36% of total. e

Females completed 56% of the offers they received, it is 13% more than males, but males made more transactions than females, 64% to 43%. e

Model

In this part, I tried to make a model that can identify which kind of offers we should give a customer. Because my model will guess the offer_type, I will only get those transcripts with offer id's. So I will ignore all transactions without offer id for now. e

Our features here are: e

  • Event. (Will be replaced from categorical to numerical)
  • Time. (normalized)
  • Offer_id. (Will be replaced from categorical to numerical)
  • Amount. (normalized)
  • Reward. (normalized)
  • Age_group. (Will be replaced from categorical to numerical)
  • Gender. (Will be replaced from categorical to numerical).
  • Income. (normalized)

And my target is offer_type. For my target, I will replace texts with numbers. Where BOGO = 1, discount = 2, informational = 3. e

Here is how the final data frame looks like before modeling: e

The shape of my features and labels was: e

  • Training Features Shape: (125685, 8)
  • Training Labels Shape: (125685,)
  • Testing Features Shape: (41896, 8)
  • Testing Labels Shape: (41896,)

Now for the modeling part, I tried six different models and this is the results: e

From the previous table, we can see that we scored 100% accuracy in the training and testing data sets on 4 models. To avoid over fitting I will choose Logistic Regression since it got good results 65% on training and 80% on testing data sets. Logistic Regression is better used here since we have few binomial outcomes (BOGO = 1, discount = 2, informational = 3). It is good here because we have good amount of data to work with. e

Conclusion

In this project, I tried to analyze and make model to predict the best offer to give a Starbucks customer. First I explored the data and see what I have to change before start the analysis. Then I did some exploratory analysis on the data after cleaning. From that analysis I found out that most favorite type of offers are Buy One Get One (BOGO) offers and Discount offers. I digged deep to see who and what type of customers we have and noticed that Females tend to complete offers more than males with 56% completion of the offers they received. Where Males completed only 43.18% from the offers they received. But our current data shows that we gave Males more offers since they have more transactions than Females with total number of 72794 transactions, where females only had 49382 transactions. In conclusion, the company should give more offers to Females than Males since they have more completed offers. And they should focus more on BOGO and Discount offers since they are the one that tend to make customers buy more. e

Improvements

I think I got to a point where we have good results and we understand the data we have very well. But to make our results even better, I would try to improve my data collection and fix issues I have with NaN values. I will also try to get even more data like location and when the transaction were completed, which branch and what time of the day. All these data can help us know when and where to give our offers. Also having more data is always good think to help us improve our model results. e

To see more detailed analysis with numbers and codes, check the project Github repository here. e

]]>
Insights on Saudi Professional League Matches2019-05-24T00:00:00+00:002019-05-24T00:00:00+00:00https://alioh.github.io/DSND-P4This project (Write a Data Science Blog Post) is part of Udacity’s Data Scientist Nanodegree program

Saudi Professional League Predictor / Analysis

In this project I analyzed and predicted the Saudi Professional League matches. In it, I wanted to show common trends and answer some questions that I have always wanted to answer about the league. e

I wanted to know, is having a clean sheet (zero goals against you) give you higher chance to win the title? How many teams teams won the title in the past 10 years and how many clean sheet they had in all their matches? e

Analyzing and predicting football matches is not easy and creating the perfect model is hard because you need a lot of data about each team and player to be able to create the best model. You will also need a lot of data that you can't always get such as motivation, team mentality, team manager tactics and other outside factors. e

While working on this project, I found that feature engineering can make a difference to my game predictor model. In this project, I started with 33 features and came out with around 60 features (more than 25 new features). Having new features that you can come up with from the current data you have can give you more insights about your data. For example, showing team previous goals for and against can tell you how strong is the team line up and how many goals they can score. It can also tell you how strong team defences by seeing how many goals they conceded before current game. e

In the project, I tried to analyze and answer the following questions: e

Do home team win more at home or away? e

Who are the most valuable players, the players with the most wins? e

Does clean sheets help you win the title? e


Home teams have higher chance to win games at home

From the data I have, I found that home teams win more home matches (around 650 game) than away (around 500 matches). This can tell that home stadium and home team fans can sometimes be a factor on helping a team win matches. e


Most valuable players are defenders

This might be not a surprise for football analyzers, because in order to win a game you must have good defence first. In the graph above, you can see how many each player won a game, out of the ten players, there are 4 defenders (Osama Hawsawi, Abdullah Al-Zoari, Majed Almarshadi and Hassan Muath), one goalkeeper (Waleed Abdullah) and three defensive midfielders (Taiseer Al-Jassam, Ahmed Ateef and Saud Kariri) and one player maker (Yahya Al-Shehri) and one striker (Nassir Al-Shamrani). e

Players like Osama Hawsawi (three titles with two teams - two with Al-Hilal and one with Al-Ahli), Nassir Al-Shamrani (two titles with two teams - one with Al-Hilal and one with Al-Shabab) and Waleed Abdullah (two titles with two teams - one with Al-Nassr and one with Al-Shabab) are very valuable because even when they switch teams, they can play a role helping their team to win the title. e

One a side note, all ten players are Saudi's which tell you that the participation of foreign players in the league not very high, there might be some foreign players that help a team win the title, but they don't stay for a long time with the team. e


Winning titles is not about clean sheets

Teams and fans are always happy when they come out of a game with a clean sheets, and it might help sometimes to win a title to have a lot of clean sheets, but not always. The two graphs above show how many teams played matches in the past nine seasons, and how many each team have clean sheets. e

We can see that the highest team with clean sheets was Al-Raed, which is a mid-level team (not from top four). With having the most clean sheets with around 70 games without conceding goals, Al-Raed never won a title. What is interesting is, the team with the least clean sheets, Al-Hilal, had the most titles in the nine years, with three titles. e

Al-Hilal played 206 matches in the past nine years in the league and the team clean sheet matches are around 25, yet the team manage to have more titles than any other team in the Saudi Professional League. e


Conclusion

In this article, I analyzed a dataset of the Saudi Professional League from the past nine years, and saw some interesting numbers and results. e

Having the the best defence doesn't always help you win the title, clean sheets doesn't matter but the quality of a players play more role on helping you win a title. e

Home stadium play major role in helping your team win a game. e


To see more detailed analysis with numbers and codes, check the project Github repository here. e

]]>
ملخص كورس علم البيانات - 152019-04-20T00:00:00+00:002019-04-20T00:00:00+00:00https://alioh.github.io/DSND-Notes-15آخر جزء في التعلم غير الموجَّه يتحدث عن Random Projection و ICA وهي طرق لتقليل المتغيرات.

الفصل الثالث - التعلم غير الموجَّه Unsupervised Learning
الدرس الخامس - Random Projection & ICA

هي حل بديل لـPCA لتقليل المتغيرات. هدف الطريقة الرئيسي هو تقليل الـDimensions أو المتغيرات لدينا. لنفترض أن لدينا قاعدة بيانات فيها 12000 عامود أو متغير، عند إدخالها في Scikit-learn وتشغيل دالة Random Projection عليها ستعود لنا البيانات بعدد عواميد حوالي 6000.

مثال بايثون

طريقة عمل Random Projection في بايثون و Scikit-learn

from sklearn import random_projection

data = data

#   إنشاء المودل الخاص ب Random Projection
#   من الممكن تحديد عدد n_components عدد المتغيرات المطلوب
#   وتحديد قيمة eps ε 
#   اذا تركت بدون تحديد فتكون قيمة eps = 0.1 و n_components = 'auto'
#   وهي القيم التلقائية
rp = random_projection.SparseRandomProjection()

#   تشغيل المودل على البيانات لدينا
new_data = rp.fit_transform(data)
Independent Component Analysis - ICA

طريقة أخرى مشابهه لـ PCA و Random Projection مثال عليها في ملفات الصوت، اذا كان لدينا ثلاث ادوات صوتية تعمل بنفس الوقت، تشغيل هذه الخوارزمية عليها ستحاول فصل كل اداة لوحدها.

مثال بايثون

طريقة عمل Random Projection في بايثون و Scikit-learn

from sklearn.decomposition import FastICA

#   البيانات لدينا متكونة من قائمة تحتوي على 3 ملفات صوتية
data = list(zip(audio_1, audio_2, audio_3))

#   إنشاء المودل الخاص
#   تحديد عدد n_components عدد المتغيرات المطلوب

ica = FastICA(n_components=3)

#   تشغيل المودل على البيانات لدينا
new_data = ica.fit_transform(data)

العودة إلى ملخص كورس علم البيانات - 14

]]>