الانحدار الخطي باستخدام طريقة الانحدار المتدرج [موضح بمثال الترميز]

نشرت: 2020-12-21

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

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

قراءة: خوارزميات التعلم الآلي لعلوم البيانات

جدول المحتويات

ما هو الانحدار الخطي؟

إنه النهج الخطي الذي يتم اتباعه نحو نمذجة العلاقة بين متغير تابع ومتغير واحد أو أكثر من المتغيرات المستقلة. سيتم التعبير عن العلاقة الخطية بين هذه المتغيرات في صيغة معادلة ay = mx + b.

إنها خوارزمية تعلم آلي خاضعة للمراقبة ستعزز منحنى التعلم الخاص بها من متغير معين تابع لـ x و y باعتباره الآخر المسؤول عن إحداث تأثير. تساعد هذه الطبيعة في التنبؤ بالقيم وعوامل اليقين لـ x و y.

ما هو الانحدار؟

يتضمن استخدام انحدار التدرج تحسين الخوارزمية المستخدمة للعثور على قيم المعلمات المطلوبة لوظيفة ما والتي تمكن من تقليل تكلفة الوظيفة بشكل مباشر.

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

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

لتقريب التدرج اللوني بشكل أفضل ، دعنا نحاول تنفيذه باستخدام رمز في عينة ، والعمل على Python بمساعدة NumPy.

من استيراد NumPy *

# ص = م س + ب

# م ميل ، ب هو تقاطع ص

def compute_error_for_line_given_points (ب ، م ، نقاط):

مجموع الخطأ = 0

بالنسبة لـ i في النطاق (0 ، len (نقاط)):

س = نقاط [i، 0]

ص = نقاط [i، 1]

totalError + = (y - (m * x + b)) ** 2

إرجاع totalError / float (len (نقاط))

def step_gradient (b_current، m_current، Points، LearningRate):

b_gradient = 0

m_gradient = 0

N = تعويم (لين (نقاط))

بالنسبة لـ i في النطاق (0 ، len (نقاط)):

س = نقاط [i، 0]

ص = نقاط [i، 1]

b_gradient + = - (2 / N) * (y - ((m_current * x) + b_current))

m_gradient + = - (2 / N) * x * (y - ((m_current * x) + b_current))

new_b = b_current - (معدل التعلم * b_gradient)

new_m = m_current - (معدل التعلم * m_gradient)

عودة [new_b، new_m]

def gradient_descent_runner (النقاط، start_b، start_m، learning_rate، num_iterations):

ب = البدء ب

م = البداية_ م

لأني في النطاق (الأرقام):

ب ، م = التدرج التدريجي (ب ، م ، مجموعة (نقاط) ، معدل التعلم)

عودة [ب ، م]

تشغيل def ():

النقاط = genfromtxt ("data.csv" ، المحدد = "،")

معدل التعلم = 0.0001

initial_b = 0 # تخمين تقاطع y الأولي

initial_m = 0 # تخمين الانحدار الأولي

العدد = 1000

طباعة "بدء هبوط التدرج اللوني عند ب = {0} ، م = {1} ، خطأ = {2}". تنسيق (ب ، أولي_ م ، حساب_خطأ_للخط_النقاط_المبدئية (ب ، أولي_ م ، نقاط))

طباعة "قيد التشغيل ..."

[b، m] = gradient_descent_runner (النقاط ، ب ، الأولي_ م ، معدل التعلم ، الأرقام)

طباعة "بعد {0} التكرارات ب = {1} ، م = {2} ، الخطأ = {3}". تنسيق (عدد_المعايير ، ب ، م ، حساب_خطأ_لخط_النقاط (ب ، م ، نقاط))

إذا كان __name__ == '__main__':

يركض()

مرجع الكود

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

يحتوي الكود على وظيفة غريبة تسمى "تشغيل". يساعد في تحديد مجموعة من المعلمات المستخدمة في الخوارزمية لعمل مجموعة أولية من التنبؤات بناءً على سلوك المتغيرات ومنحدر الخط. تتضمن العوامل الأخرى عدد التكرارات المطلوبة لتحقيق نزول التدرج بالشكل الموضح أدناه:

initial_b = 0 # تخمين تقاطع y الأولي

initial_m = 0 # تخمين الانحدار الأولي

العدد = 1000

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

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

يجب أن تقرأ: أسئلة مقابلة التعلم الآلي

نصائح حول الانحدار المتدرج

1. معدل التعلم

يساعد بروتوكول التحسين في تقليل قيمة معدل التعلم حتى في الكسور العشرية الأصغر ، ومحاولة تبديل القيم المختلفة المناسبة للنظام الأساسي ، ثم اختيار أفضل قيمة عمل. يمكن أن يكون التعلم أسرع ومثمر ، ولتحقيق ذلك تأكد من الحد من عدد المرات عبر كل مجموعة بيانات. سيكون الرقم المثالي بين 1 و 10.

2. مؤامرة يعني التكلفة

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

ملخص

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

قيادة الثورة التكنولوجية التي يقودها الذكاء الاصطناعي

دبلوم PG في التعلم الآلي والذكاء الاصطناعي
يتعلم أكثر