ظهر الإنحياز والتباين من مجال النمذجة الإحصائية. النمذجة الإحصائية هو المجال الذي يحاول وضع نموذج في بيانات مُجَمعة لهدف:
مثال: بيانات منازل بوستن الشهيرة هي بيانات تم جمعها بواسطة خدمة التعداد السكاني في الولايات المتحدة في عام 1996. تحتوي على عدة متغيرات مثل: معدل الجريمة للفرد، عدد الغرف لكل مسكن، نسبة الشركات غير شركات التجزئة، والسعر.
إذا أردنا بناء نموذج لسعر المنازل، سنضع كل المتغيرات الأخرى كمتغيرات للنموذج وسعر المنزل هو المخرج الذي سيتم توقعه. إذا كان لدينا \(p\) كعدد المتغيرات \(X_{1},X_{2}, \ldots , X_{p}\) والمخرج هو \(Y\)، فيمكننا الإفتراض أن نموذج \(Y\) بإستخدام \(X\) يمكن تعريفة كالتالي:
في هذه المعادلة، لاحظ أن الدالة \(f(X)\) ثابتة، أيضاً هناك \(\epsilon\) في المعادلة. هذة الإشارة تعني الخطأ. وهو الفرق بين القيمه التي توقعها النموذج والقيمه الحقيقه ويمكن أن يمثل اشياءً أخرى مثل الضوضاء و العشوائية. المهم هنا هو أن \(\epsilon\) لا تعتمد على \(X\) ولديها متوسط يساوي صفر.
إذا أردنا البدء ببناء نموذج لهذة البيانات، لن نستطيع الوصول لجميع نقاط البيانات لدينا كونها لا تمثل كامل المجتمع (جميع نقاط البيانات يمكن تسميتها “المجتمع”). ولكن، لدينا فقط عينة محدودة من نقاط البيانات (تسمى “عينة”). هنا، لدينا عينة من 50 نقطة.
لضبط النموذج على البيانات، من الأفضل البدء بشكل بسيط، ثم الإنتقال للمسائل المعقدة. هنا إستخدمنا نموذج متعددة الحدود فيه \(n\) هي أعلى قوة، البداية من \(n=1\) (انحدار خطي) ثم الزيادة في قيمة \(n\) حتى 10. جميع النماذج تُضبط للتقليل من الخطأ التربيعي المتوسط.
لتعريف التباين ببساطة، ليست كُل العينات لديها نفس الصفات. عندما يكون لدينا عينتين مُختلفتين، فإننا سنبني نماذج مُختلفه قليلاً عن بعضها.
تم إختيار خمسين عينة مختلفة من نفس مجتمع البيانات. تم ضبط كُل واحدة بإستخدام نموذج متعدد الحدود للدرجة الثالثة.
هنا نقول أننا غيرنا في مدخلات النموذج. في الرسوم البيانية السابقة، كل النماذج متعددة الحدود من الدرجة الثالثة \(X^3\). كل نموذج دُرب على عينات مختلفة من مجتمع البيانات.
لنتخيل أننا أعدنا هذه العملية 100 مرة. بهذا الشكل ستكون النتيجة:
هدف بناء النموذج هو التنبؤ. عندما نريد التنبؤ ب \(Y\) بإستخدام النماذج لقيمة \(X\) جديدة، سينتج لنا التالي:
قيم متغيره لما تم التنبؤ به \(Y\) (النقاط باللون الأزرق) بإستخدام النماذج المختلفة. الخط الرصاصي المتقطع هي القيمة \(X\) التي إستخدمناها كمدخل للنموذج.
بعض النماذج تتنبؤ بشكل مختلف جداً، ولكن بعضها يتنبؤ بشكل متسق وثابت. نقوم بتحديد إتساق وثبات النموذج بإستخدام التباين. إحصائياً، التباين للنموذج هو متوسط الانحراف التربيعي لجميع التنبؤات. كما ذُكر في مقدمة في التعلم الإحصائي:
بعد ان بنينا أكثر من نموذج تنبؤ، نريد أيضاً معرفة المتوسط، أو القيمة المتوقعة من النموذج. هذا المتوسط يطلق عليه القيمة المتوقعة للتنبؤات. الإنحياز هو مدى اختلاف القيمة المتوقعة لكل التنبؤات عن القيم الحقيقية.
الإنحياز هو المسافة بين القيم الحقيقية (المثلث البنفسجي) والقيم المتوقعة (الخط الأزرق). التباين هو مدى عرض النتائج المتوقعة (باللون الأحمر).
الرسم البياني السابق يظهر طريقة قياس الإنحياز والتباين وكيف يتم إستخدام كُلِ منهما لوصف النماذج التي تكون فارطة بالتخصيص أو التعميم.
كيف نعرف مدى صحة نتائج النموذج؟ يمكننا قياس الخطأ بين القيمة المتوقعة والقيمة الحقيقة، ثم جمعها وحساب متوسطها. بذلك، نصل إلى إنحياز نموذج التنبؤ. ولكن، سيؤثر ذلك بشكل عكسي، فإذا كان الإنحياز يساوي 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.
البيانات هي جزء من بحث علمي تم تقديمة لعدد من المؤتمرات. تحتوي على جميع المقالات من صحيفة الرياض التي كُتبت وفيها الكلمات التالية:
نهدف في هذة البيانات إفادة المحللين ومن يرغب بدراسة اللغة العربية واستخدامها في المقالات الصحفية.
تم جمع البيانات من الموقع الرسمي لجريدة الرياض السعودية بعد الموافقة منهم.
كل كلمة يختلف عدد المقالات فيها:
| الكلمة | عدد المقالات |
|---|---|
| كورونا | 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.
شكر خاص لجريدة الرياض على سماحهم لنا بنشر هذة البيانات
]]>لا أخفيكم الفائدة الكبيرة عندما عملت على ترجمة فصل من كتاب خوارزميات أساسية في تعلم الآلة، ولو أن المشروع لم يظهر للعلن ولم يتم نشرة باسمي واسم الزملاء عبدالعزيز الطويان و نهى الغامدي إلا أني تعلمت الكثير من المحتوى وكانت بداية للمشروع الأخير مبادئ وتقنيات علم البيانات. أهم نقطة تعلمتها قبل البدء في الترجمة، هي أخذ الموافقة من الكاتب 😅. سواء كانت الترجمة بتصرف وتعديل أو بدون، أرى أن الكاتب الرئيسي يحتاج تبليغ كونك استفدت واعتمدت على محتواة بشكل كبير. الحمد لله. أخذت الموافقة من سام لو أحد الكتاب الرئيسيين للكتاب ومنها أنطلق المشروع في 29/7/2020 كان أول رفع في قيت هب. سبب آخر لا اتوقع أني احتاج لذكرة هو هدف كل شئ أكتبة وهي أثراء المحتوى العربي ولو بمعلومات بسيطة وسهل الوصول لها بلغات أخرى. لا أزال أرى المحتوى العربي فقير في مواضيع كبيرة لكن بأذن الله نسعى جميعاً لتغير ذلك.
في التعليم، أرى نفسي شخص سمعي، أركز أكثر عند سماع الشرح أو مشاهدته صوت وصورة. التحدي كان القراءة والقراءة أكثر من مرة. لذا أكبر فائدة لي شخصياً كانت أني ألزمت نفسي بالقراءة، والقراءة أكثر من مرة للمحتوى كي يظهر بشكل واضح ومرتب ومفهوم. بهذه الطريقة أجبرت نفسي على القراءة والإفادة والاستفادة (3 عصافير بحجر؟). وأصبح الآن مرجع لي للعودة له بأي وقت. تماماً بنفس شكل المواضيع السابقة مثل مدخل للقوائم المالية، ملخص كورس تفسير البيانات، ملخص كورس علم البيانات و تعلم الآلة للجميع.
يغطي الكتاب مفاهيم كثيرة، لكن يحتاج القارئ أن يتقن ولو بشكل بسيط لغة بايثون كونه ما يتحدث ولا يشرح طريقة البرمجة. يبدأ أول بمعلومات تاريخية عن الإحصاء وعلاقته بالبيانات، ثم يتكلم عن دورة حياة البيانات وطريقة التعامل معها باستخدام بايثون وبانداز. بعدها يتكلم عن تنظيف البيانات وتصويرها والتحليل الإستكشافي للبيانات. يتحدث بعد ذلك عن مواضيع ممكن تفيد أي شخص (ليس فقط في مجال علم وتحليل البيانات) مثل التعامل مع النصوص باستخدام التعابير النمطية RegEx وطريقة التعامل مع قواعد البيانات ببايثون واستخدام SQL. ينتقل بعدها بالتركيز على علم البيانات والنماذج والتوقعات، النزول الاشتقاقي وطريقة تحسين النتائج، الاحتمالات والتعميم، هندسة الخصائص والنماذج الخطية والتصنيف. الكتاب أيضاً يحتوي على الكثير من العمليات الرياضية والحسابية، فهمها مهم لكن لا ليس إجباري ولن يعيقك عن فهم الأفكار وتطبيقها.
المحتوى يتحدث كل فترة، وبالأصح قبل شهر صدرت نسخة جديدة أعاد فيها الكُتاب ترتيب الكتاب، تخلصوا من بعض المحتوى وأضافوا آخر. التزمت بالمحتوى القديم عندما بدأت فيه، وبإذن الله لي عودة له في حال انتهوا من الكتاب بنسخته الجديدة لتعديل المحتوى الحالي ليطابق مع المحتوى الجديد.
أحب أشكر مجموعة أشخاص وهم بعض من كانو يطلعون على نسخة أولية من الفصول ويقيمونها ويدققون عليها. لهم شكر خاص كونهم تعاونوا معي على إخراجه بشكله النهائي.
ولمن يواجه مشكلة أو خطأ يحتاج تصحيح أو تعديل، لا يتردد بالتواصل معي بأي وسيلة من وسائل التواصل الموجودة في المدونة أو عبر قيت هب.
شكراً
]]>إذا كنت مبرمجاً، محلل بيانات، أو مطور مواقع ولا تستخدم Github لمشاركة مشاريعك، فالأفضل لك البدء بذلك كونه من المصادر التي يبحث عنها أصحاب الشركات لمراجعة مشاريع المتقدمين لديهم. يمكنك أيضا من خلاله المشاركة في المشاريع مفتوحة المصدر مهما كانت خبرتك. إضافة إلى أنها طريقة مناسبة للتحكم بإصدارات كودك البرمجي والرجوع لأي نسخه قديمه دون الحاجة لحفظ أكثر من نسخه في جهازك. يمكنك البدء بتعلم Git و GitHub من هنا.
في هذه المقالة سأشارككم بعض من المشاريع من مفضلتي في Github مع إضافة بعض المعلومات البسيطة عنها. بعض هذه المشاريع عبارة عن برامج مفتوحة المصدر، صفحات تعليمية، أو مصادر للقراءة وكلها لديها صفحاتها في Github، يمكنك فيها مشاهدة جميع الأكواد البرمجية والتعلم منها. هذه المشاريع هي بعض من أكثر من 850 مشروع في مفضلتي لذا قد يتم إضافة المزيد في مقالات قادمة إن شاء الله.
بيانات منوعة مختلفة المجالات.
تطبيقات مفتوحة المصدر، مكتبات أو أدوات لتعلم الآلة.
دورات تعلم مفاهيم أساسية لعدة مجالات، كُتب منشورة مجاناً، صفحات مواد من الجامعات وبحوث علمية متنوعة.
مصادر تعلم لغات برمجة أخرى غير بايثون.
مصادر متنوعة تجهزك للاستعداد لمقابلتك الوظيفية القادمة.
خطوات تعلم مجال معين من الصفر.
مصادر أخرى تقدم دورات لمواضيع مختلفة عن طريق تطبيقات عملية.
تعلم علوم الحاسب من عدة مصادر، تقدم هذه الصفحات جدول مرتب لك لمواد علمية من عدة جامعات تساعدك على الحصول على ما يساوي شهادة في علوم الحاسب
هذه بعض من مفضلتي في Github. تواصل معي على تويتر وأقترح لي مشاريعك أو صفحاتك المفضلة!
]]>قبل ان أبدأ بالتطبيق مثلاً على السوق السعودي، من الأفضل أن افهم لغة سوق المال، قرأت وأخذت أكثر من مادة بعدة مواقع عن المالية والمحاسبة وحبيت أشاركها معكم، إذا كان هدفك فهم السوق فممكن تكون هذي بداية مناسبة قبل الدخول والقراءة أكثر بالتفاصيل من المتخصصين في هذا المجال. وهدف آخر ان تكون مرجع لي أو لأي شخص أراد مراجعة بعض المصطلحات المالية.
المقالة تحدث بين فترة وفترة لإضافة محتوى، مؤشرات، او معلومات جديده.
المحاسبة: توثيق وتسجيل وتصنيف العمليات المالية لإعداد القوائم المالية، المحاسب يعد القوائم المالية كمدخلات للمدير المالي لمساعدته على اتخاذ القرارات المالية.
الإدارة المالية: قراءة وتفصيل وتحليل القوائم المالية بهدف اتخاذ قرارات مالية.
أنواع القرارات المالية:
أنواع الإدارات المالية:
النظام المحاسبي: جميع العمليات الحسابية التي يتم توثيقها تندرج تحت الأصول الخمسة، وهي:
الدورة المحاسبية: تبدأ عند توثيق العملية المالية وتسجل في مُستند مالي إلى أن تنتهي على شكل قوائم مالية.

القوائم المالية - Financial Statements:
القوائم المالية: تُعد كل شهر. وهي:
قائمة الدخل - Income statement:
مثال لقائمة الدخل (أضغط على الصورة للتكبير):

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

قائمة التدفقات النقدية - Statement of cash flows: تقيس مصادر الأموال سواء دخولها أو خروجها من ثلاث أوجه:
مثال لقائمة التدفقات النقدية (أضغط على الصورة للتكبير):

التقييم المالي: تقييم قوائم الشركة (الدخل، الميزانية، التدفقات النقدية)، طُرق التقييم المالي:
التحليل المالي: تحليل القوائم، سواء شهرية او سنوية، وطُرق التحليل هي:
| المعنى | الرمز | المعنى | الرمز | |
|---|---|---|---|---|
| كل ما أرتفع الرقم كان أفضل | 🔼 | كل ما انخفض الرقم كان أفضل | 🔽 |
تحديث 23/10/2020: مقاله ممتازه عن الشركات والنسب الماليه في أرقام
سيتم إضافة المزيد لاحقاً
القرارات المالية: اتخاذ قرار بناء على التحليل والتقييم المالي، تحدد المخاطر والتحديات القادمة للمنشأة. أنواعها:
التخطيط المالي: استعراض القوائم المالية، فهم ما حدث ووضع خطط مالية مُستقبلية لكُل قائمة. يسعى المدير المالي في التخطيط لمعرفة التالي:
موازنة قائمة الدخل (قائمة الدخل التقديرية): الفرق بينها وبين قائمة الدخل المُعدة من قبل المُحاسب، ان قائمة الدخل المُعَدة من المُحاسب هي لفترة سابقة لأرقام حقيقية، أما التقديرية هي لأرقام تقديرية ومتوقعة للفترة القادمة.
موازنة المركز المالي (الميزانية التقديرية): وضع ارقام تقديرية للأصول، الالتزامات وحقوق الملكية.
التدفقات النقدية المستقبلية: حجم السيولة المتوقع توفرها في المنشأة بناءًا على أنشطتها.
مراجع:
]]>أخذت كورس من معهد تحسين الرعاية الصحية، عن أدوات التحليل بالأخص 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
]]>في هذا الفصل، سنشرح خمس خوارزميات ليست فقط هي الأكثر شهره ولكن أيضاً إما تكون هي الأكثر فاعليه أو تستخدم كجزء من أجزاء خوارزميات أخرى.
يعتبر الإنحدار الخطي من أشهر خوارزميات الإنحدار والذي يتشكل فيه النموذج بشكل خطي بناءاً على الخصائص المدخله فيه.
لدينا مجموعه من الأمثله المصنفة \(\{(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\):
فيها \(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^*\) تحاول التقليل من التالي:
التعبير \((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).
هنا \(e\) هي قاعدة اللوغاريثم الطبيعية (تعرف أيضاً بعدد أويلر أو دالة \(exp\) في برنامج الإكسل ولغات برمجية أخرى). رسمها البياني كالتالي:
صورة 3: دالة لوجستية
بالنظر على الدالة اللوجستية البسيطة في الرسم البياني، نرى كيف أنها مناسبة للتصنيف الذي نرغب به: إذا حسنا القيم \(x\) و \(b\) بالطريقة الصحيحة، يمكننا قراءة نتائج \(f(x)\) أنها إحتمالية ان تكون \(y_{i}\) موجبة. على سبيل المثال، إذا كانت أعلى أو مساوية لـ0.5 نقول ان تصنيف \(x\) موجب، وغير ذلك سالب. مع التجارب، إختيار قيمة الفصل، 0.5، يمكن أن يتغير حسب المشكلة. سنعود لذلك في الفصل الخامس عنما نتحدث عن تقيم أداء النموذج. إذاً، معادلة نموذج الإنحدار اللوجستي ستبدو كالتالي:
يمكن رؤية \(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. بدلاً من تقليل متوسط الخسارة، كما في الإنحدار الخطي، الآن نزيد من الإحتمالية في بيانات التدريب بنموذجنا:
وفيه
و \(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\) المستخدمة في النموذج، عملياً، من الأفضل تكبير لوغارثمية الإحتمال بدلاً من الإحتمال. لوغارثمية الإحتمال تعرف كالتالي:
الحل لمشكلة التحسين الجديده سيكون مشابه للأصلية لأن الوغارثم هي دالة متخصصه بالزيادة. الجزء الأخير يعني حينما نقوم بزيادة اللوغاريثم لأحدى الدوال، فأننا نزيد الدالة نفسها أيضاً.
على عكس ذلك في الإنحدار الخطي، لا يوجد حل لمشكلة التحسين السابقة. إحدى الإجراءات التحسينية الشائعة في تلك الحالات هو النزول الإشتقاقي. سنتحدث عنه في الفصل القادم.
شجرة القرار هي رسم بياني دوري يستخدم لإتخاذ القرارات. في كل فرع من الرسم البياني، خاصية معين \(j\) من متجهة الخواص يتم فحصها. إذا كانت القيمة أقل من قيمة الفصل، فإنها تتجهة للفرع الأيسر، وعكس ذلك، ستتجه للفرع الأيمن. عند الوصول إلى آخر فرع في الشجرة، يتم إتخاذ القرار على المثال المدخل.
كما هو مذكور في عنوان الجزء الحالي، تتعلم شجلة القرار من البيانات المدخلة لها.
كما في السابق، لدينا مجموعة من البيانات المُصنفة; التصنيف على شكل مصفوفة {0,1}. نريد بناء شجرة قرار تمكنا من توقع تصنيف القيمة المعطاة.
توجد الكثير من الأشكال لدالة لخوارزمية شجرة القرار. في هذا الكتاب، سنستخدم واحدة فقط، يطلق عليها ID3. معيار التحسين في هذه الحالة هو متوسط لوغارثمية الإحتمال:
هنا \(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}\):
فيه \(|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:
عندما نقسم المصفوفة بناءاً على معيار معين j وقيمة فصل t، الإنتروبيا للفصل، \(H(S_-,S_+)\)، هي ببساطة مجموع النتائج الموزونه للإنتربيا:
إذاً، في ID3، في كل خطوة، وفي كل فرع، نوجد قيمة فصل تقلل الإنتروبيا بواسطة المعادلة 7 أو نتوقف في ذلك الفرع.
تتوقف الخوارزمية في فرع معين لأي من الأسباب التالية:
لأن في ID3، القرار لفصل البيانات في كل عملية تكرار يتم مسبقاً (لا يعتمد على الفصل المستقبلي)، الخوارزمية لا تضمن الحل الأمثل. يمكن تحسين النموذج عن طريق بعض الأساليب مثل التراجع Backtracking عند البحث عن شجرة القرار الأمثل على حساب أخذ وقت أطول لبناء النموذج.
الفصل بناءاً على الإنتروبيا يعتبر منطقي: الإنتروبيا تصل إلى أقلها وهو 0 عندما تكون جميع الأمثل في \(S\) تحمل نفس التصنيف; وفي الجانب الآخر، الإنتروبيا تصل أعلاها وهو 1 عندما يكون نصف الأمثلة في \(S\) مصنفة بـ1، ويجعل ذلك ذلك الفرع غير مفيد في التصنيف. السؤال الباقي هو كيف يمكن لهذه الخوارزمية الوصول للحد الأقصى لمتوسط لوغارثمية الإحتمال. سنجيب عن ذلك لاحقاً.
تحدثنا ببساطة عن 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 تبدو كالتالي:
لتوسيع SVM للحالات التي لا يمكن فصل البيانات فيها خطياً، نستخدم Hinge loss function دالة الخسارة المفصلية:
دالة الخسارة المفصلية تساوي صفر إذا كان الشرطين أ و ب صحيحين، بمعنى أصح، اذا كانت \(wx_i\) تقع في الجانب الصحيح من خط القرار. للبيانات في الجانب الخطأ من خط القرار، قيمة الدالة تتناسب مع المسافه من بين القيمة وخط القرار. ونحن حينها نريد أن نقللها
فيها المتغير \(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، من الأفضل حل مشكلة مشابهه تبدو كالتالي:
وفيه \(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 نواة:
وفيه \(\|\mathbf{x}- \mathbf{x'}\|^2\) هي Euclidean distance المسافة الإقليدية التربيعية بين مصفوفتين من الخصائص. المسافة الإقليدية ممثلة بالمعادلة التاليه:
يمكن ملاحظة ان فضاء الخصائص لنواة RBF غير محدودة الأبعاد. بتغير المتغير \(\sigma\)، محلل البيانات يمكن أن يختار بين الحصول على خطوط قرار سلسة أو منحنية في الفضاء الأصلي.
خوارزمية أقرب الجيران KNN هي خوارزمية غير حدودية. على عكس باقي الخوارزميات التي تتجاهل بيانات التدريب بعد بناء النموذج، الخوارزمية تبقي جميع بيانات التدريب في ذاكرتها. عندما تأتي قيمة جديدة، قيمة لم ترها من قبل، تقوم الخوارزمية بإيجاد \(k\) الأقرب إلى المثال في الفضاء متعدد الأبعاد \(D\) وتعيد أكثر التصنيفات تكراراً (في حال كانت المشكلة تصنيفية) أو المتوسط (إذا كانت المشكلة خطية).
قرب أقرب نقطتين تحدد بواسطة دالة خاصة للبُعد. على سبيل المثال، المسافة الإقليدية التي سبق ذكرها تستخدم غالباً في التدريب. إقتراح آخر لقياس البُعد Cosine Similarity جيب التماثل السلبي. جيب التماثل مُعرف كالتالي:
هي مقياس لمدى تشابة الإتجاهات لمصفوفتين. إذا كانت الزاوية بين مصفوفتين تساوي 0 درجة، إذا كلا المصفوفتين تتجهان إلى نفس الطريق وجيب التماثل يساوي 1. اذا كانت المصوفتين متعامدتان، فأن جيب التماثل تساوي 0. للمصفوفات التي تشيران إلى عكس الإتجاه، جيب التماثل يكون فيها مساوي -1. إذا أردنا إستخدام جيب التماثل كمقياس للمسافه، فيجب علينا ضربة في -1. مقياسات أخرى شهيره لقياس المسافه هي مقياس تشيبيشيف، ماهالانوبيس، هامينق لقياس المسافة. إختيار مقياس المسافه، وكذلك قيمة \(k\)، يتحكم ويقررها المحلل قبل تشغيل الخوارزمية. إذاً هي متغيرات. مقياس المسافة يمكن تعلمه أيضاً من البيانات (وأيضاً يمكن توقعه). سنتحدث عن مزيد من ذلك في اجزاء لاحقة.
الآن تعلمنا كيف نبني خوارزمية النموذج وكيف تتم عملية التوقع. أحد الأسئلة المهمة هنا هو ما عمل دالة الخسارة؟ بدون غرابة، لم يتم دراسة اجابته في الكتب، رغم شهرة الخوارمزية منذ بداية الستينات. المحاولة الوحيدة لتحليل دالة الخسارة لخوارزمية KNN كان بواسطة لي و يانق في 2003.
للتبسيط، فإننا نوجد أستنتاجاتنا تحت أفتراضات التصنيف الثنائي (\(y\in\) {0,1}) مع جيب التماثل وتسوية Normalized خصائص المصفوفة. بهذه الإفتراضات، KNN تقوم بعملية تصنيف خطي مع مُعامل المصفوفة.
فيها \(R_k(\mathbf{x})\) هي مصفوفة \(k\) لأقرب الجيران للقيمة المدخلة \(\mathbf{x}\). المعادلة العلوية تقول ان نأخذ مجموع كل قيم أقرب الجيران لأحد القيم المدخله \(\mathbf{x}\) عن طريق تجاهل تلك القيم المساوية لصفر. قرار التصنيف هنا يأخذ عن طريق تعريف قيمة فصل من الضرب النقطي \(\mathbf{w}_\mathbf{x}\mathbf{x}\)
والذي، في حالة تسوية خصائص المصفوفات، مساوي لجيب التماثل بين \(\mathbf{w}_\mathbf{x}\) و \(\mathbf{x}\).
الآن، يتم تعريف دالة الخسارة كالتالي:
وجعل مشتقة الدرجة الأولى في الجانب الأيمن تساوي صفر يوجد لنا معامل المصفوفة في المعادلة رقم 9.
تم ترجمة هذا الجزء قبل إعلان المؤلف أن الكتاب تُرجم وسيتم نشرة للعربية من أحدى الجهات في دولة الإمارات.
شكراً لكل من عبدالعزيز الطويان و نهى الغامدي على تعاونهم في التدقيق والتصحيح والترجمة.
]]>
Copyright: monticello/123RF. e
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
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
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
Copyright: opengridscheduler e
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
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
Here is the schema and explanation of each variable in the files: e
portfolio.json - 10 rows, 6 columns. e
profile.json - 17000 rows, 5 columns. e
transcript.json - 306534 rows, 4 columns. e
In this part I did a lot of changes to the three tables. Here are the changes I made: e
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
The gender and income column have NaN values. For gender, NaN were converted to NA. For income, NaN were replaced by the mean. e
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
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
For the income, most of their income are between 50k and 78k. The exact number for average income is 65404. e
From what we saw in the first question, our average age is around 58. e
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
Here are a list of the most loyal customers (customers who spends a lot of money on offers/transactions). e
Transaction have the most amount of rows in the transcript data frame with around 140k, almost half of our data frames total. e
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
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
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
The mean time it takes a customer to complete an offer is around 16 days (390 hours). e
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
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
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
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
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
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
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
]]>
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

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

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

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
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
]]>هي حل بديل لـ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)
طريقة أخرى مشابهه لـ 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)