بسم الله والحمد لله والصلاة والسلام على رسول الله
أهلا وسهلا بكم في محاضرتنا الجديدة المصورة لمساب
تنقيب البيانات اليوم إن شاء الله تعالى، سنتكلم عن
chapter regression، هنا في الـ Regression نتكلم عن
المهمة الثانية في التصنيف التنبؤي predictive category للـ
Data Mining، اتفقنا من البداية أن Data Mining
تنقسم إلى two tasks
واحدة تنبؤية predictive والثانية وصفية descriptive، وتكلمنا تحت
التصنيف predictive tasks عنده
التصنيف classification وهي التنبؤ بـ class label أو بـ
category value أو بـ nominal value، بينما المهمة task
الثانية هي الـ Regression والتنبؤ بالقيم المستمرة Continuous
Value، وفي المقابل لدينا في الـ Descriptive Task
كان في عندنا Clustering وعندنا Association Rules
وفي عندنا الـ Outlier Detection، وهذه سنتكلم عنها
في المحاضرات القادمة، فلنبدأ مع الـ Regression
الأمور التي سنتناولها في محاضرتنا اليوم:
مقدمة introduction و الـ Linear Regression، أو نشرحها، و
نكمل بعدها في...ممكن في فيديو آخر أو في تسجيل
آخر حسب كيف نمشي أو نُخصص أو نستغل من الوقت
الموجود عندنا، طبعاً، عندما أتحدث عن الـ Regression
أنا أُشير إلى أن الـ Regression يُستخدم من أجل
التنبؤ
بمدى من القيم للقيم العددية range of numeric values
numeric values، وهنا
أتحدث عن القيم المستمرة continuous value بالتحديد، أتحدث عن
continuous value بالتحديد، طبعاً تقنية Regression
تُستخدم في موضوع التنبؤ prediction، كما
قلنا، هي واحدة من مهام التنبؤ prediction task الموجودة
فيها من أجل أن أتوقع قيماً، كما قلنا، مستمرة continuous
value، الربح profit، قيمة المبيعات، الـ
ديون debit، أسعار المبيعات sales، معدلات الاقتراض debit rates، قيمة القروض أو
الفوائد، قيم المنازل house values، درجات الحرارة
temperature، أو المسافات التي يمكن استخدامها، وكل هذه
التنبؤات بأي قيمة مستمرة continuous value، سواء كان في هذا المثال
أو أوزان أو أعمار أو أطوال أو مدة زمنية
إلى آخره، نحن نتحدث هنا عن أي قيمة رقمية numeric
number تظهر أمامي أو numeric value، معناها أنا
أتحدث عن Regression، طبعاً الـ Regression عندما
أبدأ بالتحدث أو كما يُطلق عليه البعض Regression
analysis، أستخدمها لأجد العلاقة بين الـ
Independent attribute أو الـ Independent variable
التي هي الـ X والـ Dependent variable التي هي الـ Y
طبعاً، الرسم واضح جداً، يُظهر الـ Independent
value التي هي قيمة الـ X، وفي عندنا الـ Dependent
value أو الـ attribute أو الـ variable، عفواً، التي هي
قيمة الـ Y، وطبعاً عندما أتحدث عن الـ Regression
يمكن تصنيفها إلى نوعين: Simple Regression و
عندما أتحدث عن اسمها Simple Regression، معناته أنا
أتحدث عن أبسط أنواع التنبؤ، وهذه عادةً تتضمن
أو Simple Regression تتضمن فقط two variables، two
variables، نعم، two variables، واحد يكون Dependent
variable، والثاني يكون Independent، طبعاً واحد يكون
عندي التوضيحي explanatory والثاني يكون، وهي الـ
Response كما سميناه، يعني الآن الـ Y هي الـ
Dependent والـ X هي الـ Independent، لا تنسوا من
الأمثلة الموجودة التي أتحدث عنها: السكان population و
إنتاج الغذاء food production، زيادة السكان
والحاجة لإنتاج الغذاء الموجودة لديهم، طبعاً لو
أنا جئت وتحدثت، أردت التحدث في هذه الجزئية بشكل
مفصل، لو افترضت أن لدينا هنا رسم high
high
X تمثل، تقول لك من مرتبط بمن، لو سألتكم سؤال
الكُلّ، من مرتبط بمن، أو من معتمد على من؟ زيادة
السكان population معتمدة على إنتاج الغذاء، أم
إنتاج الغذاء معتمد على زيادة السكان؟ نعم، معناته أنا
أتحدث هنا، أتحدث عن population
هي الـ Independent Variable، لأنه حسب العدد السكاني
أنا أتحدث عن أنني أُريد إنتاج غذاء، وهنا أتحدث
عن food production، الآن لو نظرت، كان في عندي
معادلة خطية بهذا الشكل، ماذا يعني هذا؟ يعني كلما
يزيد عدد السكان
سيزيد عند من الحاجة
إلى إنتاج غذائي أكبر، وهذه هي العلاقة، هذا مفهوم الـ
prediction، يعني لو افترضت أن السكان سيكون
عددهم 200 مليار،
معناته يجب أن يكون لديهم كمية غير معروفة من الغذاء، تمام
يعني عندما أتحدث عن الـ Simple Regression، أتحدث
عن أن هناك فقط two variables، واحد Independent واحد
Dependent، بينما في الـ Multiple Regression، معناته أنا
لدي أكثر من Independent Variable، لاحظوا في
الحالة الأولى، تكلمت أن لدي 2
variables فقط، مجموعة البيانات data set أو المهمة task الخاصة بي
فقط 2 variables، ومن هنا أنا أتحدث مباشرةً واحد
Dependent والثاني Independent، لأنه مستحيل في الـ
predictive task أن يكون لدي الاثنان Independent، فيجب
أن يكون واحد Dependent واحد Independent، عندما جئنا
نتحدث عن الـ Multiple Regression، هنا قلنا الـ
Multiple Regression، معناته أنا أتحدث عن أكثر من one
more than one Independent، لدي أكثر من Independent
attribute، هل يوجد لدي الـ Dependent attribute؟ يجب
أن يكون، وإلا ستكون المهمة task وصفية descriptive وليست تنبؤية predictive
مثل أسعار المنازل، لو سألتكم، أسعار البيوت
ما الذي يحكمها؟ أمور كثيرة، مساحة البناء، الـ
location الموقع، السعر price، وقت البيع، موسم البيع
أسعار المنازل المشابهة، وأمور كثيرة قد تُحكم
فيها، هذه كلها تُجرى prediction، لو جئت و
تحدثت عن العلاقة بين مرض السكري، حفظكم الله، و
جميع المسلمين، إن شاء الله، وقياسات الجسم human body
measurement
المؤشرات أو القياسات المتعلقة بجسم الإنسان: طوله و
وزنه، عمره، اللهم صلِّ على سيدنا محمد، سلوكه behavior
هل من بين هذه الأمور التي ذكرناها
فقط يؤثر في السكري؟ أن يكون موجوداً أم لا؟ لا، بالطبع لا
فهذه كلها مجتمعة، والنسب الموجودة هي
التي لا يمكن التحكم بها، فأنا أتحدث عن
Multiple Regression، نحن طبعاً عندما نتحدث في الـ
Regression وما زلنا في المقدمة introduction، أتحدث أن الـ
Regression analysis بغض النظر كان Linear
أو عفواً، بسيط simple أو Multiple يخضع لإحدى
النموذجين two models اللذين قد يكونان موجودين
عندي، إما Linear Model، عندما أتحدث عن Linear Model
أتحدث عن علاقة خطية، أو Non-Linear Model، أتحدث عن
معادلة قد تكون Polynomial وقد تكون أي
دالة رياضية تمثل القيمة الموجودة في الرسم.
الأولى التي ظهرت أمامنا هنا، يوجد لدينا علاقة خطية بين
الـ two variables الموجودين هنا، طبعاً الرسم
هنا ليسهل فهم الأمر ببساطة، أتحدث عن Simple
Regression، أنا الآن، العلاقة، يوجد علاقة خطية بين
الـ X والـ Y أيضاً،
العلاقة الخطية واضحة، أن
كلما زادت الـ X، كلما زادت الـ X قيمة الـ Y تنخفض
Relational Model أو علاقة خطية، في النهاية يمكن
تمثيلها بخط مستقيم باللون الأزرق، لكن في
الرسم الثاني هنا، أنا أتحدث عن Linear يوجد
curve، curve، ما معادلتها هذه؟ هل هي مثلاً 1 على
X تربيع؟ التي بين قوسين تساوي X تربيع ناقص واحد،
مثلاً، الله أعلم، لأن هذه قد تكون جزء من
curve، عامل بهذا الشكل ومعامل shift معين، وهذا أشبه
بالتربيع، لكن في النهاية ليست معادلة خطية، وهي يعني
قد تكون العلاقة بهذا الشكل، أنا في هذه الحالة
لن أتمكن من التحدث عن أي Model قد يمثل البيانات، لا
خط مستقيم ولا curve ولا exponential ولا شيء من
هذه الأشياء كلها، فأنا لن أتمكن من التحدث هنا، يقول أن
لا توجد علاقة موجودة فعلياً، طبعاً عندما أتحدث
عن عدم وجود علاقة، دائماً التنبؤ
في الاختبار test سيفشل، وستكون دقته accuracy منخفضة جداً too
low، تمام، معناته في نوع Regression للنموذج model أو
regression models أنواعه إما Simple أو Multiple، و
أتحدث عن متغير واحد one variable، والمقصود به Independent
variable
عن طريق الـ Independent Variable وعن طريق الـ
Multiple Variable وفي كل
الحالتين، النموذج
تبعي قد يكون Linear وقد يكون Non-Linear في كل
الحالتين
بكل بساطة، لـ Linear Regression، لنفهم ما الذي
يحدث بالتحديد، طبعاً عندما أتحدث عن Linear
Regression، لنذهب باتجاه الـ
Simple Linear Regression في البداية، بكل بساطة عندما
أتحدث عن Simple Linear Regression، الـ Simple
Linear Regression، تذكر أن لدينا one
independent variable، معناته أنا أتحدث عن إيجاد
العلاقة بين
Two Continuous Attributes أو Two Continuous
Variables، واحد Independent Variable والثاني
Dependent Variable، وعندما أتحدث عن X و Y، عن
Dependent و Independent، أتحدث عن X و Y كما في
الرسم الموجود هناك في الـ Cartesian plane الموجودة، وعادةً عندما أتحدث عن Linear Model أتحدث
عن معادلة خط المستقيم، وهي Y تساوي M مضروبة في
X زائد B، حيث الـ M هي قيمة ميل slope الخط
المستقيم، والـ B تمثل الـ Intercept أو نقطة التقاطع
مع الـ Y الموجودة لدينا، طيب، الآن أي خط مستقيم،
أي خط مستقيم أريد رسمه، حتى لو أردت أن يمر
بنقطة الصفر، الميل slope الذي يمثل هذه الزاوية، عفواً
هذه الزاوية، طبعاً الكل يعرف أن دائماً
الزاوية تُبنى مع خط مستقيم، طيب، الآن نقطة الـ
intercept هنا، عفواً، الصفر، التي هي نقطة التقاطع مع
محور الـ Y، صفر، بينما قيمتها B سواء كان هذا المثلث أو
أي مثلث موازٍ على الخط المستقيم، أنا الآن لو أخذت
محور موازٍ، لو اخترت أي نقطة على الخط المستقيم، ليس
الأصل، هذه النقطة، سامحوني، الرسم لدي ليس
جيداً، لا أستطيع ضبطه، تمام، الآن، ليس هذا Delta X، هذا X وهذا Y
تمام، الآن لو أخذت نقطتين بين نقطتين، ورسمت قطعة
متعامدة ومتقاطعة، يعني رسمت بينهما مثلث قائم
الزاوية هذه، حسب فيثاغورس، الارتفاع، عفواً لو
افترضت أن هذه الزاوية التي قلنا تمثل
الميل سابقاً، الارتفاع المقابل، وهي المجاور
وهذا هو الوتر، حسب قانون فيثاغورس أن الوتر
هذا يساوي المجاور تربيع، الـ Run تربيع زائد الـ Rise
تربيع، تمام، الـ Slope يساوي الارتفاع
المقابل على المجاور
تبعته عبارة عن كل نقاط X ناقص متوسط نقاط X كم
نقطة عندك أنت على الخط المستقيم هذا؟ أجل الخط
المستقيم يا جماعة الخير يجب أن يكون عنده نقطتين
عشان أنا أقدر أسميه، مظبوط ولا لا؟ طبعاً عادة
بالهدف احنا بنسميه قطعة مستقيمة محصورة بين نقطتين
بينما الخط المستقيم هو بتعدّى حدود النقطتين اللتين
موجودة عندها تمام، الآن معناته أنا بتكلم هنا أن X
عند مجموعة نقاط على الـ X ناقص المتوسط مضروبة في Y
الفروقات ما بين الـ Y و المتوسط تبعها طبعاً
بنجمعهم على مجموع الفروقات ما بين الـ X و المتوسط
والمتوسط تبعهم لكل النقاط الموجودة عندها
طيب، الآن تعالوا نيجي نشوف من أين جاء التربيع يا جماعة
الخير؟ لأن في الآخر هذه النقاط كلها مثلثات أو فيها
ثغرات و كما قلت لك هذا التربيع
هو تربيع زائد هاي تربيع فأعوض عن كل واحدة فيهم
بالتربيع الموجود فيها في الآخر احنا هذه
معادلتنا الموجودة و بدنا نستخدمها تعالوا نشوف
كيف بدنا نطبقها بشكل كويس الآن هذه النقاط التي
موجودة و هذه المعادلات الثلاث التي موجودة عندنا الـ
intercept إذا أنا حصلت على الـ M والـ Y معلومة والـ
X معلومة تمام بيظل عندنا الـ B معناته الـ B بدها
تساوي متوسط تغييرات أو متوسط قيم الـ Y ناقص الـ
slope في متوسط قيم الـ X الموجودة عندنا هذه
القيّم الموجودة وهذه هي المعادلات الثلاث التي
قلنا أننا نلزمها تكون حاضرة في ذهننا عند التعامل
مع الـ simple regression أو مع الـ regression مع الـ
linear regression عفواً مع الـ linear regression
تمام، طيب، هذه عندي X هذه الأعمدة التي بدي أشغل
عليها، ما هي المعادلة؟ بالبداية أن أحسب المتوسط تبع
الـ X والمتوسط الحسابي تبع الـ Y في كل الحالات التي
عندي تمام متوسط X معناته مجموعهم على عددهم واحد
اثنين ثلاثة أربعة خمسة ستة سبعة ثمانية تسعة عشر
ثلاثة إحدى عشر عشرين ثلاثين وستة وثلاثين
تسعة، اثنين وأربعين، ثلاثة وخمسين، أربعة وسبعين، خمسة
و سبعين، واحد وتسعون، بالمتوسط 9.10 حسبت المتوسط لـ X حسبنا
المتوسط لـ Y الخطوة التالية أنا بدي أجيب هنا مجموع
أو بدي أجيب حاصل ضرب كل X ناقص قيمة المتوسط 9.1
أضربها في قيمة الـ Y كل قيم الـ Y ناقص المتوسط
تبعها على كذا يعني أنا بدي أحسب X ناقص Y أو Xi
ناقص متوسط الـ X أحسب X أو Yi ناقص متوسط الـ Y فالجئت
هنا فين رحت حسبت المعادلتين، أيش اشتغلت عليهن في
شكل آلي ثلاثة
ناقص ثلاثة ناقص تسعة ناقص واحد ناقص ستة ناقص واحد ناقص
واحد ناقص واحد ناقص واحد ناقص واحد ناقص واحد ناقص واحد
ناقص واحد ناقص واحد ناقص واحد ناقص واحد ناقص واحد ناقص
واحد ناقص واحد ناقص واحد ناقص واحد ناقص واحد ناقص واحد
ناقص واحد ناقص واحد ناقص واحد ناقص واحد ناقص واحد ناقص
واحد ناقص واحد ناقص واحد ناقص واحد ناقص واحد ناقص واحد، 8-9
.1، 1.1، 57-55.4، 1.6 و أكمل الجدول بالكامل ممتاز
الخطوة التالية هذه العناصر بتلزمني في حالتين بدي
أضرب high في high و أحصل على high تربيع من أجل
المقام الذي هنا فإني رحت جبت العناصر البسط
التي هي Xi ناقص X متوسط الـ X مضروبة في Yi ناقص
متوسط الـ Y فبالتالي هنا ضربت سالب ستة point واحد
في سالب خمسة وعشرين point أربعة هي مئة وأربعة
وخمسين point أربعة وتسعين طيب وسالب ستة point واحد
ضرب سالب ستة point واحد سبعة وثلاثين point واحد
وعشرين وكملت للآخر كل العملية الحسابية تبعي طبعاً
يا جماعة الخير عشان أكون واضح معكم لو أنا جبت سؤال
زي هيك وقلت لك هاتلي أو هاتلي معادلة الخط
المستقيم مش هجيب لك فيه عشر قيم ممكن أجيب لك أربع من
أربع إلى خمس قيم تشتغل عليها يعني نصف القيم الموجودة و
عشان هيك بأكد باستمرار أن الـ calculator لازم يكون
عندك جاهزة في الحساب تمام الخطوة التي بعد هيك أنا
بتلزمني المجموع المجموع لمين؟ لكل عمود حسب
المعادلة التي موجودة عندي هنا فاروح أجمع العمود
هذا، ثلاثمائة، التي هي قيمة البسط ثلاثمائة
وثمانية وخمسين point تسعة وحسبت قيمة العمود الثاني
ألف ومئتين وتسعة وستين point ستة تمام الآن قيمة الـ
M تساوي ألف ومئتين وتسعة وستين point ستة على ثلاثمائة وثمانية وخمسين point تسعة فبتطلع قيمة
الـ M عندي ثلاثة point خمسة ثلاثة سبعة كما نحن
شايفينها تمام أنا الآن حصلت على مين؟ على قيمة الـ M
في المعادلة هذه، من المعادلة هذه بظل عندي B، B
سهلة بما أن أنا حصلت على الـ M وهي معادلة الـ B
عفواً، أن أنا حصلت على الـ M وهي معادلة الـ B عندي
موجودة هنا وبالتالي أنا
بتساوي متوسط الـ Y التي هي الحسبة الأولى التي كانت
في الجدول التي لديها، نهي متوسط الـ Y 55.4 ناقص
M 3.5375
ضرب متوسط الـ X 9.1 قيمته
معادلة الخط المستقيم معادلة M معادلة B معادلة M
معادلة B معادلة M معادلة B معادلة M معادلة B
معادلة M معادلة B
3.5375 ضرب الـ X زائد
الـ B لو أنا بدي أتأكد أن معادلتي صحيحة أو غير صحيحة
تخيل أن قيمة X تساوي واحد المفروض أنّه تساوي عشرين
المفروض، لكن الكلام الأدق يكون القيمة قريبة من
العشرين، ثلاثة point خمسة ثلاثة سبعة خمسة زائد
ثلاثة وعشرين point مئتين وتسعة، ملاحظين قد ايش القيمة
التي طلعت عندي ثلاثة وعشرين واثنين من عشرة و
ثلاثة وسبعة وخمسة معناته احنا بنتكلم على ستة و
عشرين point سبعة هذه قيمة لما كانت الـ X تساوي واحد
ليش؟ لأنه بضل فيه نسبة خطأ ماحدش قال في الدنيا
أن هذا الـ algorithm أو هذا الـ model هيديني 100%
القيم المتساوية لأن هناك قيم متفرقة لو رجعت للرسم
على السريع عشان تشوفوها هي فعلاً هي النقاط تبعي
النقاط متجارة على الخط المستقيم ولو جربت أنت تأخذ
نقاط على الخط المستقيم هتطلع معك typical قيمة الـ
M وقيمة الـ B تمام بعد ما أنا حسبت القيم هذه على
السريع خليني أروح أشوف بالـ python إيش أنا بدي
أعمله، أنا رحت على الـ python استخدمت الـ numpy
كمكتبة عشان أتعامل مع الـ numerical python arrays
وبنيت الريشة الـ X وبنيت الريشة الـ Y لكن يوجد شغل
هنا أنه لازم أعمل Reshape عشان أعمل Transpose تبع
المصفوفة وهي عبارة عن مصفوفة من بعد واحد أكثر
وليست vector تمام فعشان هيك بعملها Reshape سالب
واحد هذا طبعاً لأنه أنا فعلياً يا جماعة الخير برجع
بأكد أنّه أنا جاهز بدي أبني الـ data set
بينما الـ data set ممكن تكون معي جاهزة زي ما في
الـ data set التي أنت اخترتها في الواجب الأول تبع
الـ regression data set التي كنا بنتكلم عليها أنت
بدك تقطع منها عمود واحد فقط وتشتغل عليه وتشوف
العلاقة ما بينه وبين الـ target attribute التي هي
الـ continuous value بدك تعملها prediction وروح
أدخلت القيم الموجودة عندي أنا الـ
values التي دخلتها على المصفوفة بدون ما أعمل الـ
reshape، رحت from الـ sklearn.linear_model
import LinearRegression وأنا ما زلت بأكد
أنّه يشغل على linear regression وبالتحديد بما أنا
بتكلم على one independent attribute معناته أنا
بتكلم على simple linear regression بنيت الموديل
model تساوي LinearRegression الموديل.fit عشان
يعمل train ويوجد العلاقة التي ما بين الـ X والـ Y
التي هي الـ independent attribute X والـ dependent
variable أو الـ dependent attribute Y فرُحت أنا
أعمل fit المفروض بعد عملية الـ fit هذه هو حصل على
الـ slope، الـ M وحصل على الـ B هنا لأن أنا بس بدي
أطبعهم فروحت وقلت له اطبع لي الـ model.coef_
الـ model.coef_ فبطبع لي
قيمة ورحت أضفت عليها عشان تظهر معادلة خط مستقيم
بس مش أكثر الـ model.coef_ والـ model.
intercept، الـ intercept التي هي الـ b أو التقاطع
مع b والـ coefficient التي هي الـ m الموجودة
عندي هنا الـ output طلع لي هي، لو أنا جيت طلعت في
قيمة ثلاثة point خمسة ثلاثة سبعة القيم التي طلعت معي
لما أنا اختصرتها سبعة خمسة لأنه عملت round للسبعة
وهنا ثلاثة وعشرين point مئتين وتسعة لأنه برضه عملت
round للرقم الموجود عندها، typical نفس الـ values
الموجودة، لو أنا بدي أعمل prediction هيبقى أنا في
الـ array رحت على الـ X قلت له في عندي X_test هذه
في عندي النقاط تبعي الـ array اثنين وتسعة وثلاثة عشر وثمانية عشر وأربعة وعشرين
و يعمل لي الـ Y_predict تبعها تمام الآن
هذول هيروح يجيب لي بناء على المعادلة هذه، هيأخذ اثنين
يعني ثلاثة point خمسة أربعة ضرب اثنين زائد ثلاثة
وعشرين، مئتين وتسعة، هذين قيمتين اثنين، تسعة لكن
لاحظوا الآن يا جماعة الخير أن هذه القيم المجتمعة
كلها بدأت تخضع لمن؟ تخضع لنفس المعادلة التي عملها
prediction هنا خلاص انتهى الأمر لأن أنا عمال بتكلم
على الـ model.predict فأنا زدت في القائمة تبعي
هذه وهو شرح سريع ليش أعمل predict فعشان هيك بتطلع
معي معادلة خط مستقيم بالتمام، طيب عشان أوجد
العلاقة الموجودة عندي هنا رحت استخدمت مكتبة
اسمها الـ
matplotlib mathematical plotting library
.pyplot
as plt بدي أرسم ورحت أقول في الـ plot هذه قلت له
في عندي scatter التي هي النقاط عند X و Y هي هم
موجودات، هي X و Y الموجودة فوق عندنا، والـ color
black، نقاط باللون الأسود وفي عندي بدي أعمل plot
كذلك كرسم خط مستقل الـ plot التي بتكلم على function
أو على equation الـ plot X_test التي هي هذه اثنين
وتسعة وثلاثة عشر وثمانية عشر وأربعة وعشرين، والـ color والـ
Y_predict هي هي الـ result تبع الـ prediction بتاعة
الـ model التي أنا استخدمتها والخط باللون الأخضر والـ
linewidth فرُحت قلت له أعمل تبين الـ text على الـ
X والـ Y التي هي النقاط وقلت له show تعالوا نشوف هي
النتيجة التي طلع لي إياها هي النقاط الموجودة هنا
تمام وهي الخط المستقيم الذي يمثله المعادلة التي
موجودة عندها، بدي أروح أنا أورّجيك الآن بس على الـ X التي