مقایسه رگرسیون خطی و لجستیک

بحث در مورد سوال مصاحبه علوم داده سطح ورودی

مصاحبه های علم داده از نظر عمقی متفاوت هستند. برخی از مصاحبه‌ها بسیار عمیق هستند و داوطلبان را بر اساس دانش آنها در مورد مدل‌های پیشرفته یا تنظیمات دقیق آزمایش می‌کنند. اما بسیاری از مصاحبه‌ها در سطح ورودی انجام می‌شوند و سعی می‌کنند دانش اولیه داوطلب را آزمایش کنند. در این مقاله سوالی را خواهیم دید که در چنین مصاحبه ای قابل بحث است. اگرچه این سوال بسیار ساده است، اما این بحث جنبه های جالب بسیاری از اصول یادگیری ماشین را مطرح می کند.

سوال: تفاوت رگرسیون خطی و رگرسیون لجستیک چیست؟

در واقع شباهت های زیادی بین این دو وجود دارد، با این واقعیت شروع می شود که نام آنها بسیار شبیه صدا است. هر دو از خطوط به عنوان توابع مدل استفاده می کنند. نمودارهای آنها نیز بسیار شبیه به هم هستند.

تصویر توسط نویسنده

اما با وجود این شباهت ها، از نظر روش و همچنین کاربرد بسیار متفاوت هستند. اکنون این تفاوت ها را برجسته خواهیم کرد. برای مقایسه، ما از نکات زیر استفاده خواهیم کرد که به طور کلی هنگام بحث در مورد هر مدل یادگیری ماشینی در نظر گرفته می شوند:

  • فرضیه یا خانواده مدل
  • ورودی و خروجی
  • عملکرد از دست دادن
  • تکنیک بهینه سازی
  • کاربرد

اکنون رگرسیون خطی (LinReg) و رگرسیون لجستیک (LogReg) را در هر یک از این نقاط مقایسه می کنیم. بیایید با برنامه شروع کنیم تا بحث را در مسیر درست قرار دهیم.

تصویر توسط Rajashree Rajadhyax

رگرسیون خطی برای تخمین کمیت بر اساس کمیت های دیگر استفاده می شود. به عنوان مثال، تصور کنید که به عنوان یک دانش آموز، در تعطیلات تابستانی یک غرفه لیموناد راه اندازی می کنید. می خواهید بفهمید فردا چند لیوان آبلیمو فروخته می شود تا بتوانید به اندازه کافی لیمو و شکر بخرید. از تجربه طولانی خود در فروش لیموناد، متوجه شده اید که فروش رابطه قوی با حداکثر دما در روز دارد. بنابراین شما می خواهید از حداکثر دمای پیش بینی شده برای پیش بینی فروش لیموناد استفاده کنید. این یک برنامه کلاسیک LinReg است که به طور کلی در ادبیات ML پیش بینی نامیده می شود.

LinReg همچنین برای کشف اینکه چگونه یک ورودی خاص بر خروجی تأثیر می گذارد استفاده می شود. در مثال غرفه لیموناد، فرض کنید دو ورودی دارید- حداکثر دما و اینکه آیا روز تعطیل است. می‌خواهید بدانید کدامیک بیشتر بر فروش تأثیر می‌گذارد - حداکثر دما یا تعطیلات. LinReg در شناسایی این موضوع مفید خواهد بود.

LogReg عمدتا برای طبقه بندی استفاده می شود. طبقه‌بندی عمل دسته‌بندی ورودی‌ها در یکی از بسیاری از سبدهای ممکن است. طبقه بندی آنقدر برای هوش انسانی اهمیت دارد که اشتباه نیست اگر بگوییم «بیشتر هوش طبقه بندی است». یک مثال خوب از طبقه بندی، تشخیص بالینی است. پزشک خانواده مسن و قابل اعتماد را در نظر بگیرید. خانمی وارد خانه می شود و از سرفه های بی وقفه شکایت می کند. پزشک معاینات مختلفی را برای تصمیم گیری بین بسیاری از شرایط ممکن انجام می دهد. برخی از شرایط احتمالی نسبتاً بی ضرر هستند، مانند یک حمله عفونت گلو. اما برخی از آنها جدی هستند، مانند سل یا حتی سرطان ریه. بر اساس عوامل مختلف، پزشک تصمیم می گیرد که او از چه چیزی رنج می برد و درمان مناسب را آغاز می کند. این طبقه بندی در کار است.

ما باید در نظر داشته باشیم که هم تخمین و هم طبقه بندی به جای محاسبات، وظایف حدس زدن هستند. در این نوع کارها پاسخ دقیق یا درستی وجود ندارد. وظایف حدس زدن همان چیزی است که سیستم های یادگیری ماشین در آن خوب هستند.

سیستم های ML مشکلات حدس زدن را با تشخیص الگوها حل می کنند. آنها یک الگو را از داده های داده شده تشخیص می دهند و سپس از آن برای انجام کارهایی مانند تخمین یا طبقه بندی استفاده می کنند. الگوی مهمی که در پدیده های طبیعی یافت می شود، الگوی رابطه است. در این الگو، یک کمیت با کمیت دیگر مرتبط است. این رابطه را می توان با یک تابع ریاضی در بیشتر موارد تقریب زد.

شناسایی یک تابع ریاضی از داده های داده شده "یادگیری" یا "آموزش" نامیده می شود. دو مرحله یادگیری وجود دارد:

  1. "نوع" تابع (به عنوان مثال خطی، نمایی، چند جمله ای) توسط یک انسان انتخاب می شود
  2. الگوریتم یادگیری پارامترها (مانند شیب و قطع یک خط) را از داده های داده شده یاد می گیرد.

بنابراین وقتی می گوییم سیستم های ML از داده ها یاد می گیرند، فقط تا حدی درست است. مرحله اول انتخاب نوع عملکرد دستی بوده و بخشی از طراحی مدل می باشد. به نوع تابع «فرضیه» یا «خانواده مدل» نیز گفته می شود.

در هر دو LinReg و LogReg، خانواده مدل تابع خطی است. همانطور که می دانید، یک خط دارای دو پارامتر است - شیب و قطع. اما این تنها در صورتی صادق است که تابع فقط یک ورودی داشته باشد. برای اکثر مشکلات دنیای واقعی، بیش از یک ورودی وجود دارد. تابع مدل برای این موارد تابع خطی نامیده می شود نه خط. یک تابع خطی دارای پارامترهای بیشتری برای یادگیری است. اگر n ورودی برای مدل وجود داشته باشد، تابع خطی دارای n+1 پارامتر است. همانطور که گفته شد، این پارامترها از داده های داده شده آموخته می شوند. برای هدف این مقاله، ما به این فرض ادامه خواهیم داد که تابع یک خط ساده با دو پارامتر است. تابع مدل برای LogReg کمی پیچیده تر است. خط وجود دارد، اما با یک تابع دیگر ترکیب شده است. این را در یک لحظه خواهیم دید.

همانطور که در بالا گفتیم، هم LinReg و هم LogReg پارامترهای تابع خطی را از داده های داده شده، که داده آموزشی نامیده می شود، یاد می گیرند. داده های آموزشی شامل چه مواردی است؟

داده های آموزشی با ثبت برخی از پدیده های دنیای واقعی (RWP) تهیه می شود. به عنوان مثال، رابطه بین حداکثر دمای روز و فروش لیموناد یک RWP است. ما هیچ دیدی از رابطه اساسی نداریم. تنها چیزی که می توانیم ببینیم مقادیر دما و فروش روزانه است. در حین ثبت مشاهدات، برخی از کمیت ها را به عنوان ورودی RWP و برخی دیگر را به عنوان خروجی تعیین می کنیم. در مثال لیموناد، حداکثر دما را ورودی و فروش لیموناد را خروجی می نامیم.

تصویر توسط نویسنده

داده های آموزشی ما شامل جفت ورودی و خروجی است. در این مثال، داده‌ها دارای ردیف‌هایی از حداکثر دمای روزانه و لیوان‌های لیموناد فروخته شده خواهند بود. این ورودی و خروجی LinReg خواهد بود.

وظیفه ای که LogReg انجام می دهد طبقه بندی است، بنابراین خروجی آن باید یک کلاس باشد. بیایید تصور کنیم که دو کلاس به نام های 0 و 1 وجود دارد. خروجی مدل نیز باید 0 یا 1 باشد.

با این حال، این روش برای تعیین خروجی چندان مناسب نیست. نمودار زیر را ببینید:

تصویر توسط نویسنده

نقاط زرد متعلق به کلاس 1 و نقاط آبی روشن متعلق به 0 هستند. خط تابع مدل ما است که این دو کلاس را از هم جدا می کند. طبق این جداکننده، هر دو نقطه زرد (a و b) متعلق به کلاس 1 هستند. با این حال، عضویت نقطه b بسیار قطعی تر از نقطه a است. اگر مدل به سادگی 0 و 1 را خروجی دهد، این واقعیت از بین می رود.

برای اصلاح این وضعیت، مدل LogReg احتمال تعلق هر نقطه به یک کلاس خاص را تولید می کند. در مثال بالا، احتمال اینکه نقطه 'a' متعلق به کلاس 1 باشد، کم است، در حالی که نقطه 'b' زیاد است. از آنجایی که احتمال عددی بین 0 و 1 است، خروجی LogReg نیز چنین است.

حالا نمودار زیر را ببینید:

تصویر توسط نویسنده

این نمودار مانند نمودار قبلی است و نقطه c اضافه شده است. این نقطه نیز متعلق به کلاس 1 است و در واقع از نقطه b مطمئنتر است. با این حال، افزایش احتمال یک نقطه به نسبت فاصله آن از خط اشتباه است. به طور شهودی، هنگامی که یک فاصله مشخص از خط فاصله می گیرید، کم و بیش در مورد عضویت آن نقاط مطمئن هستیم. ما نیازی به افزایش احتمال بیشتر نداریم. این مطابق با ماهیت احتمالاتی است که حداکثر مقدار آنها می تواند 1 باشد.

برای اینکه مدل LogReg قادر به تولید چنین خروجی باشد، تابع خط باید به تابع دیگری متصل شود. این تابع دوم سیگموئید نامیده می شود و دارای معادله است:

بنابراین مدل LogReg به نظر می رسد:

تصویر توسط نویسنده

تابع سیگموئید "لجستیک" نیز نامیده می شود و دلیل نامگذاری "رگرسیون لجستیک" است.

اگر بیش از دو کلاس وجود داشته باشد، خروجی LogReg یک بردار است. عناصر بردار خروجی احتمالاتی هستند که ورودی از آن کلاس خاص باشد. به عنوان مثال، اگر عنصر اول مدل تشخیص بالینی مقدار 0.8 را داشته باشد، به این معنی است که مدل فکر می‌کند 80 درصد احتمال ابتلا به سرماخوردگی وجود دارد.

دیدیم که هم LinReg و هم LogReg پارامترهای تابع خطی را از داده های آموزشی یاد می گیرند. چگونه این پارامترها را یاد می گیرند؟

آنها از روشی به نام "بهینه سازی" استفاده می کنند. بهینه سازی با ایجاد بسیاری از راه حل های ممکن برای مشکل داده شده کار می کند. در مورد ما، راه حل های ممکن مجموعه مقادیر (شیب، فاصله) هستند. ما هر یک از این راه حل ها را با استفاده از یک معیار عملکرد ارزیابی می کنیم. در نهایت راه حلی که در این معیار بهترین است انتخاب می شود.

در یادگیری مدل‌های ML، اندازه‌گیری عملکرد گاهی اوقات «از دست دادن» و تابعی که به ما در محاسبه آن کمک می‌کند «تابع ضرر» نامیده می‌شود. ما می توانیم این را به صورت زیر نشان دهیم:

Loss = Loss_Function (Parameters_being_evaluated)

اصطلاحات «از دست دادن» و «عملکرد ضرر» بار معنایی منفی دارند، به این معنی که مقدار کمتر از دست دادن راه‌حل بهتری را نشان می‌دهد. به عبارت دیگر، یادگیری یک بهینه سازی است که هدف آن یافتن پارامترهایی است که حداقل ضرر را ایجاد می کنند.

اکنون توابع ضرر متداول مورد استفاده برای بهینه سازی LinReg و LogReg را خواهیم دید. توجه داشته باشید که بسیاری از توابع مختلف از دست دادن در عمل واقعی استفاده می شود، بنابراین ما می توانیم مواردی را که رایج ترین هستند مورد بحث قرار دهیم.

برای بهینه‌سازی پارامترهای LinReg، متداول‌ترین تابع ضرر، خطای مجموع مربعات (SSE) نامیده می‌شود. این تابع ورودی های زیر را می گیرد:

1) تمام نقاط داده آموزشی. برای هر نقطه مشخص می کنیم:

الف) ورودی ها، مانند حداکثر دمای داده،

ب) خروجی ها، مانند تعداد لیوان های لیموناد فروخته شده

2) معادله خطی با پارامترها

سپس تابع با استفاده از فرمول زیر ضرر را محاسبه می کند:

SSE Loss = Sum_for_all_points(
مربع_از(
خروجی_معادله_خطی_برای_ورودی ها - خروجی_واقعی_از_نقطه_داده
))

معیار بهینه سازی برای LogReg به روشی بسیار متفاوت تعریف شده است. در تابع SSE، سوال زیر را می پرسیم:

اگر از این خط برای برازش داده های آموزشی استفاده کنیم، چقدر خطا ایجاد می کند؟

در طراحی معیار برای بهینه‌سازی LogReg، ما می‌پرسیم:

اگر این خط جداکننده باشد، چقدر احتمال دارد که توزیع کلاس هایی را که در داده های آموزشی دیده می شود به دست آوریم؟

بنابراین خروجی این اندازه گیری یک احتمال است. شکل ریاضی تابع اندازه گیری از لگاریتم استفاده می کند، بنابراین نام Log Likelihood (LL) به آن داده می شود. در حین بحث در مورد خروجی‌ها، دیدیم که تابع LogReg شامل عبارات نمایی است (اصطلاحات با e 'برآمده به z') لگاریتم‌ها به مقابله مؤثر با این نمایی‌ها کمک می‌کنند.

باید به طور مستقیم برای شما روشن باشد که بهینه سازی باید LL را به حداکثر برساند. اینگونه فکر کنید: ما می خواهیم خطی را پیدا کنیم که داده های آموزشی را محتمل تر می کند. اما در عمل، ما معیاری را ترجیح می دهیم که بتوان آن را به حداقل رساند، بنابراین فقط منفی LL را می گیریم. بنابراین ما تابع ضرر Log Likelihood منفی (NLL) را دریافت می کنیم، اگرچه به گفته من نامیدن آن تابع ضرر خیلی درست نیست.

بنابراین ما دو تابع ضرر داریم: SSE برای LinReg و NLL برای LogReg. توجه داشته باشید که این توابع از دست دادن نام های زیادی دارند و شما باید با اصطلاحات آن آشنا شوید.

اگرچه رگرسیون خطی و رگرسیون لجستیک بسیار شبیه به هم هستند، اما در واقعیت کاملاً متفاوت هستند. LinReg برای تخمین/پیش بینی و LogReg برای طبقه بندی استفاده می شود. درست است که هر دو از تابع خطی به عنوان پایه خود استفاده می کنند، اما LogReg تابع لجستیک را اضافه می کند. آنها در نحوه مصرف داده های آموزشی و تولید خروجی های مدل خود متفاوت هستند. این دو همچنین از یک تابع ضرر بسیار متفاوت استفاده می کنند.

جزئیات بیشتر قابل بررسی است. چرا SSE؟ احتمال چگونه محاسبه می شود؟ ما در اینجا برای اجتناب از ریاضیات بیشتر وارد روش بهینه سازی نشدیم. با این حال، باید در نظر داشته باشید که بهینه سازی LogReg معمولاً به روش نزولی گرادیان تکراری نیاز دارد در حالی که LinReg معمولاً می تواند با یک راه حل سریع بسته انجام شود. ما می توانیم این موارد و موارد دیگر را در مقاله دیگری مورد بحث قرار دهیم.

مقایسه رگرسیون خطی و لجستیک بازنشر شده از منبع https://towardsdatascience.com/comparing-linear-and-logistic-regression-11a3e1812212?source=rss—-7f60cf5620c9—4 از طریق https://towardsdatascience.com/fe

<!–

->

تمبر زمان:

بیشتر از مشاوران بلاک چین