الغرض من هذه المقالة هو التحدث عن الانحدار الخطي ، أي جمع وإظهار الصياغات والتفسيرات لمشكلة الانحدار من حيث التحليل الرياضي والإحصاء والجبر الخطي ونظرية الاحتمالات. على الرغم من أن الكتب المدرسية تحدد هذا الموضوع بشكل صارم وشامل ، إلا أن مقالة علمية أخرى مشهورة لن تضر.
! احترس من حركة المرور! تحتوي المقالة على عدد ملحوظ من الصور للرسوم التوضيحية ، بعضها بتنسيق gif.
المحتوى
المقدمة
هناك ثلاثة مفاهيم متشابهة ، ثلاث أخوات: الاستيفاء والتقريب والانحدار.
لديهم هدف مشترك: من مجموعة وظائف ، اختر واحدًا له خاصية معينة.
إقحام- طريقة للاختيار من بين مجموعة الوظائف تلك التي تمر عبر نقاط معينة. ثم تُستخدم الوظيفة عادةً للحساب عند النقاط الوسيطة. على سبيل المثال ، قمنا بتعيين اللون يدويًا إلى عدة نقاط ونريد أن تشكل ألوان النقاط المتبقية انتقالات سلسة بين تلك المعطاة. أو نضع إطارات مفتاحية للرسوم المتحركة ونريد انتقالات سلسة بينها. الأمثلة التقليدية: استيفاء لاغرانج متعدد الحدود ، الاستيفاء الخطي ، الاستيفاء متعدد الأبعاد (خطي ، ثلاثي الخطوط ، أقرب جار ، إلخ). هناك أيضًا مفهوم متعلق بالاستقراء - التنبؤ بسلوك وظيفة خارج الفاصل الزمني. على سبيل المثال ، التنبؤ بسعر الدولار بناءً على التقلبات السابقة هو استقراء.
تقريب- طريقة للاختيار من بين مجموعة من الوظائف "البسيطة" تقريبًا لوظيفة "معقدة" في مقطع ما ، بينما يجب ألا يتجاوز الخطأ حدًا معينًا. يتم استخدام التقريب عندما تحتاج إلى الحصول على دالة مشابهة لوظيفة معينة ، ولكنها أكثر ملاءمة للحسابات والمعالجات (التفاضل والتكامل وما إلى ذلك). عند تحسين الأقسام الحرجة من الكود ، غالبًا ما يتم استخدام تقريب: إذا تم حساب قيمة دالة عدة مرات في الثانية ولم تكن هناك حاجة إلى الدقة المطلقة ، فيمكن الاستغناء عن مقارب أبسط مع "تكلفة" حساب أقل. تشمل الأمثلة الكلاسيكية سلسلة تايلور على مقطع ، وتقريب متعدد الحدود المتعامد ، وتقريب بادي ، وتقريب جيبية باسكار ، إلخ.
تراجع- طريقة للاختيار من بين مجموعة وظائف تقلل وظيفة الخسارة. يصف الأخير مدى انحراف دالة التجربة عن القيم عند نقاط معينة. إذا تم الحصول على نقاط في تجربة ما ، فإنها تحتوي حتمًا على خطأ في القياس ، وضوضاء ، وبالتالي فمن المعقول أن تتطلب أن تنقل الوظيفة الاتجاه العام ، ولا تمر عبر جميع النقاط بالضبط. بمعنى ما ، يعد الانحدار "ملائمة استيفاء": نريد رسم المنحنى أقرب ما يمكن من النقاط مع الحفاظ على بساطته قدر الإمكان لالتقاط الاتجاه العام. وظيفة الخسارة (في الأدب الإنجليزي "وظيفة الخسارة" أو "وظيفة التكلفة") هي المسؤولة عن التوازن بين هذه الرغبات المتضاربة.
في هذه المقالة ، سوف نلقي نظرة على الانحدار الخطي. هذا يعني أن مجموعة الوظائف التي نختار منها هي مزيج خطي من وظائف الأساس المحددة مسبقًاو أنا
و = Σ ط ث ط و ط .
ظل الانحدار معنا لفترة طويلة: تم نشر الطريقة لأول مرة بواسطة Legendre في عام 1805 ، على الرغم من أن Gauss جاء إليها في وقت سابق واستخدمها بنجاح للتنبؤ بمدار "المذنب" (في الواقع كوكب قزم) سيريس. هناك العديد من الاختلافات والتعميمات للانحدار الخطي: LAD ، المربعات الصغرى ، Ridge Regression ، Lasso Regression ، ElasticNet ، وغيرها الكثير.
طريقة التربيع الصغرى
لنبدأ بأبسط حالة ثنائية الأبعاد. دعونا نحصل على نقاط على متن الطائرة{ ( x 1 ، y 1 ) ، ⋯ ، ( x N ، y N ) } ونحن نبحث عن وظيفة أفيني
و ( س ) = أ + ب ⋅ س ،
بحيث يكون رسمها البياني أقرب إلى النقاط. وهكذا ، يتكون أساسنا من دالة ثابتة وخطية( 1 ، × )...
كما ترون من الرسم التوضيحي ، يمكن فهم المسافة من نقطة إلى خط مستقيم بطرق مختلفة ، على سبيل المثال ، هندسيًا - إنها طول العمود العمودي. ومع ذلك ، في سياق مهمتنا ، نحتاج إلى مسافة وظيفية ، وليس مسافة هندسية. نحن مهتمون بالفرق بين القيمة التجريبية والتنبؤ بالنموذج لكل منهماx أنا ، لذلك ، تحتاج إلى القياس على طول المحور ذ...
أول ما يتبادر إلى الذهن هو تجربة تعبير يعتمد على القيم المطلقة للاختلافات كدالة خسارة| f ( x i ) - y i |... أبسط خيار هو مجموع وحدات الانحراف∑ أنا | f ( x i ) - y i |يؤدي إلى تراجع المسافة المطلقة الأقل (LAD).
ومع ذلك ، فإن دالة الخسارة الأكثر شيوعًا هي مجموع مربعات انحرافات المانع الانحدار عن النموذج. في الأدب الإنجليزي ، يطلق عليه مجموع الأخطاء التربيعية (SSE)
SSE ( a ، b ) = SS r e s [ i d u a l s ] = N∑أنا=1الانحرافأنا2=ن∑أنا=1(ذأنا-F(xأنا))2=ن∑أنا=1(ذأنا-أ-ب⋅xأنا)2،

هذا الاختيار مناسب في المقام الأول: مشتق الدالة التربيعية هو دالة خطية ، ويمكن حل المعادلات الخطية بسهولة. ومع ذلك ، سأشير كذلك إلى اعتبارات أخرى لصالحSSE(أ،ب)...
التحليل الرياضي
أبسط طريقة لإيجاد أرجمينأ،بSSE(أ،ب) - حساب المشتقات الجزئية بالنسبة ل أ و ب، ساويهم بالصفر وحل نظام المعادلات الخطية
∂∂أSSE(أ،ب)=-2ن∑أنا=1(ذأنا-أ-بxأنا)،∂∂بSSE(أ،ب)=-2ن∑أنا=1(ذأنا-أ-بxأنا)xأنا...
0=-2ن∑أنا=1(ذأنا-ˆأ-ˆبxأنا)،0=-2ن∑أنا=1(ذأنا-ˆأ-ˆبxأنا)xأنا،
ˆأ=∑أناذأنان-ˆب∑أناxأنان،ˆب=∑أناxأناذأنان-∑أناxأنا∑أناذأنان2∑أناx2أنان-(∑أناx2أنان)2...
الإحصاء
يمكن كتابة الصيغ الناتجة بشكل مضغوط باستخدام المقدرات الإحصائية: متوسط ⟨⋅⟩، الاختلافات σ⋅ (الانحراف المعياري) ، التغاير σ(⋅،⋅) والارتباطات ρ(⋅،⋅)
ˆأ=⟨ذ⟩-ˆب⟨x⟩،ˆب=⟨xذ⟩-⟨x⟩⟨ذ⟩⟨x2⟩-⟨x⟩2...
ˆب=σ(x،ذ)σ2x،
ρ(x،ذ)=σ(x،ذ)σxσذ
ˆب=ρ(x،ذ)σذσx...

ذ-⟨ذ⟩=ρ(x،ذ)σذσx(x-⟨x⟩)...
- يمر الخط المستقيم عبر مركز الكتلة (⟨x⟩،⟨ذ⟩)؛
- إذا على طول المحور x لكل وحدة طول اختر σxوعلى طول المحور ذ - σذ، ثم تكون زاوية ميل الخط المستقيم من -45∘ قبل 45∘... هذا بسبب الحقيقة بأن-1≤ρ(x،ذ)≤1...
ثانيًا ، أصبح من الواضح الآن سبب تسمية طريقة الانحدار بهذه الطريقة. بوحدات الانحراف المعياريذ ينحرف عن الوسط بأقل من x، لان |ρ(x،ذ)|≤1... وهذا ما يسمى الانحدار (من اللاتينية regressus - "العودة") بالنسبة للمتوسط. وصف السير فرانسيس جالتون هذه الظاهرة في أواخر القرن التاسع عشر في مقالته "الانحدار إلى الوسطية في وراثة النمو". توضح المقالة أن السمات (مثل الطول) التي تنحرف كثيرًا عن المتوسط نادرًا ما يتم توريثها. يبدو أن خصائص النسل تميل إلى المتوسط - فالطبيعة تقع على أطفال العباقرة.
من خلال تربيع معامل الارتباط ، نحصل على معامل التحديدر=ρ2... يوضح مربع هذا المقياس الإحصائي مدى ملاءمة نموذج الانحدار للبيانات.ر2يساوي 1، يعني أن الوظيفة تناسب تمامًا جميع النقاط - البيانات مترابطة تمامًا. يمكن إثبات ذلكر2يوضح مقدار التباين في البيانات الذي يرجع إلى أفضل نموذج خطي. لفهم ما يعنيه هذا ، نقدم التعاريف
فاردأرأ=1ن∑أنا(ذأنا-⟨ذ⟩)2،فارصهس=1ن∑أنا(ذأنا-نموذج(xأنا))2،فارصهز=1ن∑أنا(نموذج(xأنا)-⟨ذ⟩)2...
فارصهس - تباين القيم المتبقية ، أي اختلاف الانحرافات عن نموذج الانحدار - من ذأنا تحتاج إلى طرح تنبؤ النموذج وإيجاد التباين.
فارصهز - تباين الانحدار ، أي اختلاف تنبؤات نموذج الانحدار عند النقاط xأنا (لاحظ أن متوسط توقعات النموذج يتطابق ⟨ذ⟩).

فاردأرأ=فارصهس+فارصهز...
σ2دأرأ=σ2صهس+σ2صهز...

نحن نسعى جاهدين للتخلص من التباين المرتبط بالضوضاء ونترك فقط التباين الذي يفسره النموذج - نريد فصل القمح عن القشر. يتضح مدى نجاح أفضل النماذج الخطيةر2يساوي واحدًا مطروحًا منه جزء اختلاف الخطأ في التباين الكلي
ر2=فاردأرأ-فارصهسفاردأرأ=1-فارصهسفاردأرأ
ر2=فارصهزفاردأرأ...
نظرية الاحتمالات
في وقت سابق وصلنا إلى وظيفة الخسارة SSE(أ،ب)لأسباب تتعلق بالراحة ، ولكن يمكن أيضًا الوصول إليها باستخدام نظرية الاحتمالية وطريقة الاحتمال الأقصى (MLM). اسمحوا لي أن أذكر بإيجاز جوهرها. افترض لدينانمتغيرات عشوائية مستقلة موزعة بشكل متماثل (في حالتنا ، نتائج القياس). نحن نعرف شكل دالة التوزيع (على سبيل المثال ، التوزيع الطبيعي) ، لكننا نريد تحديد المعلمات المضمنة فيها (على سبيل المثالμ و σ). للقيام بذلك ، تحتاج إلى حساب احتمال الحصول علىنdatapoints بافتراض معلمات ثابتة ولكنها غير معروفة. نظرًا لاستقلالية القياسات ، نحصل على ناتج احتمالات تحقيق كل بُعد. إذا فكرنا في القيمة الناتجة كدالة للمعلمات (دالة الاحتمال) ووجدنا الحد الأقصى لها ، نحصل على تقدير للمعلمات. في كثير من الأحيان ، بدلاً من دالة الاحتمال ، يستخدمون اللوغاريتم الخاص بها - من الأسهل التفريق بينها ، لكن النتيجة واحدة.
دعنا نعود إلى مشكلة الانحدار البسيطة. لنفترض أن القيمx نعلم بالضبط ، ولكن في القياس ذهناك ضوضاء عشوائية (خاصية خارجية ضعيفة ). علاوة على ذلك ، نفترض أن جميع الانحرافات عن الخط المستقيم (خاصية الخطية ) ناتجة عن ضوضاء ذات توزيع ثابت ( توزيع ثابت ). ثم
ذ=أ+بx+ϵ،
ϵ∼ن(0،σ2)،ص(ϵ)=1√2πσ2ه-ϵ22σ2...

بناءً على الافتراضات أعلاه ، نكتب دالة الاحتمال
إل(أ،ب|ذ)=ص(ذ|أ،ب)=∏أناص(ذأنا|أ،ب)=∏أناص(ذأنا-أ-بx|أ،ب)==∏أنا1√2πσ2ه-(ذأنا-أ-بx)22σ2=1√2πσ2ه-∑أنا(ذأنا-أ-بx)22σ2==1√2πσ2ه-SSE(أ،ب)2σ2
ل(أ،ب|ذ)=سجلإل(أ،ب|ذ)=-SSE(أ،ب)+جانسر...
(ˆأ،ˆب)=أرجماكسأ،بل(أ،ب|ذ)=أرجمينأ،بSSE(أ،ب)،
ϵ∼لابلاس(0،α)،صإل(ϵ؛μ،α)=α2ه-α|ϵ-μ|
هإلأد(أ،ب)=∑أنا|ذأنا-أ-بxأنا|،
النهج الذي استخدمناه في هذا القسم هو أحد الأساليب الممكنة. من الممكن تحقيق نفس النتيجة باستخدام خصائص أكثر عمومية. على وجه الخصوص ، يمكن إضعاف خاصية ثبات التوزيع عن طريق استبدالها بخصائص الاستقلال ، وثبات التباين (المثلية الجنسية) ، وغياب العلاقة الخطية المتعددة. أيضًا ، بدلاً من تقدير MMP ، يمكنك استخدام طرق أخرى ، على سبيل المثال ، تقدير MMSE الخطي.
الانحدار متعدد الخطوط
حتى الآن ، درسنا مشكلة الانحدار لميزة عددية واحدة x، ولكن عادة ما يكون الانحدار نناقلات الأبعاد x... بمعنى آخر ، نحن نسجل لكل بُعدنالميزات ، والجمع بينها في متجه. في هذه الحالة ، من المنطقي قبول النموذج باستخدامن+1 وظائف أساس مستقل للحجة المتجهة - ن تتوافق درجات الحرية ن الميزات وواحد آخر - رجعي ذ... أبسط خيار هو وظائف الأساس الخطي(1،x1،⋯،xن)... متين=1 نحصل على الأساس المألوف بالفعل (1،x)...
لذلك ، نريد إيجاد مثل هذا المتجه (مجموعة من المعاملات)ث، ماذا
ن∑ي=0ثيx(أنا)ي=ث⊤x(أنا)≃ذأنا،أنا=1...ن...
ˆث=أرجمينثن∑أنا=1(ذأنا-ث⊤x(أنا))2
X=(-x(1)⊤-⋯⋯⋯-x(ن)⊤-)=(|||x0x1⋯xن|||)=(1x(1)1⋯x(1)ن⋯⋯⋯⋯1x(ن)1⋯x(ن)ن)...
Xث≃ذ...
SSE(ث)=‖ذ-Xث‖2،ث∈رن+1؛ذ∈رن،
ˆث=أرجمينثSSE(ث)=أرجمينث(ذ-Xث)⊤(ذ-Xث)==أرجمينث(ذ⊤ذ-2ث⊤X⊤ذ+ث⊤X⊤Xث)...
∂SSE(ث)∂ث=-2X⊤ذ+2X⊤Xث،
X⊤Xˆث=X⊤ذ...
ˆث=(X⊤X)-1X⊤ذ=X+ذ،
X+=(X⊤X)-1X⊤
معكوس زائف ل X... تم تقديم مفهوم المصفوفة pseudoinverse في عام 1903 بواسطة Fredholm ، ولعب دورًا مهمًا في أعمال Moore و Penrose.
اسمحوا لي أن أذكرك ما يجب أن تتحولX⊤X ويجد X+ ممكن فقط إذا كانت الأعمدة Xمستقلة خطيًا. ومع ذلك ، إذا كانت الأعمدةX قريبة من الاعتماد الخطي ، الحساب (X⊤X)-1أصبح بالفعل غير مستقر عدديًا. درجة الاعتماد الخطي للميزات فيXأو ، كما يقولون ، الخطية المتعددة للمصفوفةX⊤X، يمكن قياسها برقم الشرطية - نسبة الحد الأقصى لقيمة eigenvalue إلى الحد الأدنى. كلما كانت أكبر ، كلما اقتربتX⊤X للحساب المنحط وغير المستقر للعكس الزائف.
الجبر الخطي
يمكن الوصول إلى حل مشكلة الانحدار متعدد الخطوط بشكل طبيعي بمساعدة الجبر والهندسة الخطية ، لأنه حتى حقيقة أن معيار متجه الخطأ يظهر في دالة الخسارة بالفعل يشير إلى أن المشكلة لها جانب هندسي. لقد رأينا أن محاولة إيجاد نموذج خطي يصف النقاط التجريبية تؤدي إلى المعادلة
Xث≃ذ...
(|||x0x1⋯xن|||)ث=ث0x0+ث1x1+⋯ثنxن...
إذا بالإضافة إلى ناقلاتج(X) نحن نعتبر كل المتجهات متعامدة معها ، ثم نحصل على فضاء فرعي آخر ويمكننا استخدام أي متجه منها رنتتحلل إلى مكونين ، يعيش كل منهما في فضاء جزئي خاص به. يمكن وصف الفضاء العمودي الثاني على النحو التالي (سنحتاجه لاحقًا). دعها تذهبالخامس∈رنثم
X⊤الخامس=(-x⊤0-⋯⋯⋯-x⊤ن-)الخامس=(x⊤0⋅الخامس⋯x⊤ن⋅الخامس)

أين كير(X⊤)={الخامس|X⊤الخامس=0}... يمكن الوصول إلى كل مساحة فرعية باستخدام عامل الإسقاط المقابل ، ولكن المزيد عن ذلك أدناه.

ذ=ذمشروع+ذ⊥،ذمشروع∈ج(X)،ذ⊥∈كير(X⊤)...

أرجمينث||ذ-Xث||=أرجمينث||ذ⊥+ذمشروع-Xث||=أرجمينث√||ذ⊥||2+||ذمشروع-Xث||2،
Xˆث=ذمشروع،

X⊤Xث=X⊤ذمشروع=X⊤ذمشروع+X⊤ذ⊥=X⊤ذ،
ث=(X⊤X)-1X⊤ذ=X+ذ،
ذمشروع=Xث=XX+ذ=مشروعXذ،
دعنا نوضح المعنى الهندسي لمعامل التحديد.

ذ-ˆذ⋅1=ذ-ˉذ+ˆذ-ˉذ⋅1...
‖ذ-ˆذ⋅1‖2=‖ذ-ˉذ‖2+‖ˆذ-ˉذ⋅1‖2...
فاردأرأ=فارصهس+فارصهز...
ر2=فارصهزفاردأرأ،
ر=كوسθ...
أساس تعسفي
كما نعلم ، يتم تنفيذ الانحدار على أساس الوظائف Fأنا والنتيجة هي النموذج
F=∑أناثأناFأنا،
إذا قررنا على الأساس ، فإننا نمضي على النحو التالي. نحن نشكل مصفوفة من المعلومات
Φ=(-F(1)⊤-⋯⋯⋯-F(ن)⊤-)=(F0(x(1))F1(x(1))⋯Fن(x(1))⋯⋯⋯⋯F0(x(ن))F1(x(ن))⋯Fن(x(ن)))،
ه(ث)=‖ϵ(ث)‖2=‖ذ-Φث‖2
ˆث=أرجمينثه(ث)=(Φ⊤Φ)-1Φ⊤ذ=Φ+ذ
ملاحظات ختامية
مشكلة اختيار البعد
من الناحية العملية ، غالبًا ما يكون من الضروري بناء نموذج للظاهرة بشكل مستقل ، أي لتحديد عدد الوظائف الأساسية التي ينبغي القيام بها. الدافع الأول "للحصول على المزيد" يمكن أن يؤدي إلى نكتة قاسية: سيكون النموذج حساسًا جدًا للضوضاء في البيانات (التجهيز الزائد). من ناحية أخرى ، إذا قمت بتقييد النموذج بشكل مفرط ، فسيكون خشنًا جدًا (غير مناسب).
هناك طريقتان للخروج من الموقف. الأول هو زيادة عدد الوظائف الأساسية باستمرار ، والتحقق من جودة الانحدار والتوقف في الوقت المناسب. أو الثاني: اختر دالة الخسارة التي ستحدد عدد درجات الحرية تلقائيًا. كمعيار لنجاح الانحدار ، يمكنك استخدام معامل التحديد الذي سبق ذكره أعلاه ، ولكن المشكلة تكمن فير2ينمو بشكل رتيب مع زيادة أبعاد الأساس. لذلك ، يتم إدخال المعامل المعدل
ˉر2=1-(1-ر2)[ن-1ن-(ن+1)]،
المجموعة الثانية من الأساليب هي التنظيم ، وأشهرها ريدج (إل2/ ريدج / تيخونوف تسوية) ، لاسو (إل1تسوية) وشبكة مرنة (ريدج + لاسو). الفكرة الرئيسية لهذه الطرق هي تعديل دالة الخسارة بشروط إضافية لن تسمح لمتجه المعاملاتث تنمو إلى أجل غير مسمى وبالتالي تمنع إعادة التدريب
هريدج(ث)=SSE(ث)+α∑أنا|ثأنا|2=SSE(ث)+α‖ث‖2إل2،هلاسو(ث)=SSE(ث)+β∑أنا|ثأنا|=SSE(ث)+β‖ث‖إل1،هRU(ث)=SSE(ث)+α‖ث‖2إل2+β‖ث‖إل1،
ذ=أ+بx+ϵ،ϵ∼ن(0،σ2)،{ب∼ن(0،τ2)←ريدج،ب∼لابلاس(0،α)←لاسو...

الطرق العددية
اسمحوا لي أن أقول بضع كلمات حول كيفية تقليل وظيفة الخسارة في الممارسة العملية. SSE هي وظيفة تربيعية عادية يتم تحديد معلماتها بواسطة بيانات الإدخال ، لذلك من حيث المبدأ يمكن تصغيرها من خلال طريقة النسب الأكثر حدة أو طرق التحسين الأخرى. بالطبع ، يتم عرض أفضل النتائج من خلال الخوارزميات التي تأخذ في الاعتبار شكل وظيفة SSE ، على سبيل المثال ، طريقة نزول التدرج العشوائي. يستخدم تطبيق Lasso للانحدار في scikit-Learn طريقة تنسيق النسب.
يمكنك أيضًا حل المعادلات العادية باستخدام طرق الجبر الخطي العددي. تتمثل إحدى الطرق الفعالة التي يستخدمها scikit-Learn لـ OLS في إيجاد المعكوس الزائف باستخدام تحليل القيمة المفرد. حقول هذه المقالة ضيقة جدًا بحيث لا يمكن التطرق إليها في هذا الموضوع ، للحصول على تفاصيل ، أنصحك بالرجوع إلى مسار محاضرات K.V. Vorontsov.
الإعلان والاستنتاج
هذه المقالة عبارة عن إعادة سرد مختصرة لأحد فصول دورة حول التعلم الآلي الكلاسيكي في جامعة كييف الأكاديمية (خلف فرع كييف لمعهد موسكو للفيزياء والتكنولوجيا ، KO MIPT). ساعد مؤلف المقال في إنشاء هذه الدورة. يتم إجراء الدورة التدريبية تقنيًا على نظام Google Colab الأساسي ، والذي يسمح لك بدمج صيغ LaTeX المنسقة ورمز Python القابل للتنفيذ والعروض التوضيحية التفاعلية في Python + JavaScript ، بحيث يمكن للطلاب العمل مع مواد الدورة التدريبية وتشغيل الكود من أي جهاز كمبيوتر يحتوي على متصفح. على الصفحة الرئيسية يحتوي على روابط لملخصات، المصنفات الممارسة، وموارد إضافية. تعتمد الدورة على المبادئ التالية:
- يجب أن تكون جميع المواد متاحة للطلاب من الزوج الأول ؛
- المحاضرة ضرورية للفهم وليس لتدوين الملاحظات (الملاحظات جاهزة بالفعل ، ولا جدوى من كتابتها إذا كنت لا تريد ذلك) ؛
- المحاضرة هي أكثر من مجرد محاضرة (هناك مواد في الملاحظات أكثر مما تم الإعلان عنه في المحاضرة ، في الواقع ، الملاحظات عبارة عن كتاب مدرسي كامل) ؛
- الرؤية والتفاعلية (الرسوم التوضيحية ، الصور ، العروض التوضيحية ، صور متحركة ، الكود ، مقاطع الفيديو من youtube).
إذا كنت تريد رؤية النتيجة ، فقم بإلقاء نظرة على صفحة الدورة التدريبية على GitHub .
أتمنى أن تكون مهتمًا ، شكرًا لك على اهتمامك.