فصل ۶: رگرسیون خطی

عنوان اصلی: Linear Regression
منبع: https://christophm.github.io/interpretable-ml-book/limo.html
نویسنده: Christoph Molnar
مترجم: مریم محمودی


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

مدل‌های خطی می‌توانند برای مدل‌سازی وابستگی هدف رگرسیون $y$ به ویژگی‌ها $x$ استفاده شوند. رابطه یادگرفته‌شده را می‌توان برای یک نمونه منفرد $i$ به شکل زیر نوشت:

مدل

$$\hat{y}^{(i)} = \beta_0 + \beta_1 x^{(i)}_{1} + \beta_2 x^{(i)}_{2} + \ldots + \beta_p x^{(i)}_{p}$$

یا به صورت فشرده‌تر:

$$\hat{y}^{(i)} = \beta_0 + \sum_{j=1}^{p} \beta_j x^{(i)}_{j}$$

خروجی پیش‌بینی‌شده یک نمونه، مجموع وزن‌دار $p$ ویژگی آن است. بتاها ($\beta_1, \ldots, \beta_p$) نشان‌دهنده وزن‌ها یا ضرایب یادگرفته‌شده ویژگی‌ها هستند. اولین وزن در این مجموع، یعنی $\beta_0$، عرض از مبدأ (intercept) نامیده می‌شود و در هیچ ویژگی‌ای ضرب نمی‌شود. اپسیلون ($\epsilon$) خطایی است که همچنان مرتکب می‌شویم، یعنی تفاوت میان پیش‌بینی و خروجی واقعی:

$$y^{(i)} = \beta_0 + \sum_{j=1}^{p} \beta_j x^{(i)}_{j} + \epsilon^{(i)}$$

فرض بر این است که این خطاها از یک توزیع گاوسی پیروی می‌کنند، به این معنا که هم در جهت منفی و هم در جهت مثبت خطا داریم و خطاهای کوچک بسیار زیاد و خطاهای بزرگ کم رخ می‌دهند.

برآورد ضرایب

برای یافتن بهترین ضرایب، معمولاً مجموع مربعات تفاوت بین خروجی واقعی و خروجی برآوردشده را به حداقل می‌رسانیم:

$$\hat{\beta} = \arg\min_{\beta} \sum_{i=1}^{n} \left( y^{(i)} - \left(\beta_0 + \sum_{j=1}^{p} \beta_j x^{(i)}_{j} \right) \right)^2$$

در این‌جا به تفصیل درباره چگونگی یافتن وزن‌های بهینه بحث نمی‌کنیم، اما اگر علاقه‌مندید، می‌توانید فصل ۳٫۲ کتاب «The Elements of Statistical Learning» (Hastie 2009) یا یکی دیگر از منابع آنلاین درباره مدل‌های رگرسیون خطی را مطالعه کنید.

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

وزن‌های برآوردشده همراه با فاصله اطمینان می‌آیند. فاصله اطمینان بازه‌ای برای برآورد وزن است که با سطح اطمینان مشخصی، وزن «واقعی» را در بر می‌گیرد. برای مثال، یک فاصله اطمینان ۹۵٪ برای وزنی برابر ۲ می‌تواند از ۱ تا ۳ باشد. تفسیر این بازه چنین است: اگر برآورد را ۱۰۰ بار با داده‌های نمونه‌گیری‌شده جدید تکرار کنیم، فاصله اطمینان در ۹۵ مورد از ۱۰۰ مورد، وزن واقعی را در بر خواهد گرفت، به شرط آنکه مدل رگرسیون خطی، مدل درستی برای داده‌ها باشد.

اینکه آیا مدل، مدل «درست» است یا نه، به این بستگی دارد که آیا روابط موجود در داده‌ها مفروضات مشخصی را برآورده می‌کنند یا نه؛ این مفروضات عبارت‌اند از: خطی بودن، نرمال بودن، هم‌واریانسی، استقلال، ثابت بودن ویژگی‌ها، و عدم چندگانگی خطی.

نکته: مفروضات اختیاری هستند. شما فقط برای به‌دست‌آوردن نتایج بیشتر از مدل خطی — مانند فاصله اطمینان — به این مفروضات نیاز دارید.

خطی بودن (Linearity)

مدل رگرسیون خطی، پیش‌بینی را مجبور می‌کند که یک ترکیب خطی از ویژگی‌ها باشد، که هم بزرگ‌ترین نقطه قوت و هم بزرگ‌ترین محدودیت آن است. خطی بودن به مدل‌های تفسیرپذیر منجر می‌شود. اثرات خطی را می‌توان به‌آسانی کمّی‌سازی و توصیف کرد. این اثرات جمع‌پذیرند، پس جدا کردن اثرات آسان است. اگر گمان می‌کنید بین ویژگی‌ها تعامل وجود دارد یا رابطه یک ویژگی با مقدار هدف غیرخطی است، می‌توانید جملات تعاملی اضافه کنید یا از اسپلاین‌های رگرسیونی (regression splines) استفاده کنید.

نرمال بودن (Normality)

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

هم‌واریانسی (واریانس ثابت)

فرض بر این است که واریانس جملات خطا در سرتاسر فضای ویژگی‌ها ثابت است. فرض کنید می‌خواهید ارزش یک خانه را بر اساس مساحت آن (بر حسب متر مربع) پیش‌بینی کنید. شما یک مدل خطی برآورد می‌کنید که فرض می‌کند، صرف‌نظر از اندازه خانه، خطای اطراف پاسخ پیش‌بینی‌شده واریانس یکسانی دارد. این فرض در واقعیت اغلب نقض می‌شود. در مثال خانه، منطقی است که واریانس جملات خطا اطراف قیمت پیش‌بینی‌شده برای خانه‌های بزرگ‌تر بیشتر باشد، زیرا با قیمت‌های بالاتر، فضای بیشتری برای نوسان قیمت وجود دارد. فرض کنید خطای میانگین (تفاوت بین قیمت پیش‌بینی‌شده و قیمت واقعی) در مدل رگرسیون خطی شما ۵۰٬۰۰۰ یورو است. اگر هم‌واریانسی را فرض کنید، در واقع فرض کرده‌اید که این خطای میانگین ۵۰٬۰۰۰ یورویی برای خانه‌هایی که یک میلیون یورو قیمت دارند و خانه‌هایی که فقط ۴۰٬۰۰۰ یورو قیمت دارند یکسان است. این فرض غیرمنطقی است، زیرا به این معناست که می‌توانیم انتظار قیمت‌های منفی برای خانه داشته باشیم.

استقلال (Independence)

فرض بر این است که هر نمونه مستقل از سایر نمونه‌هاست. اگر اندازه‌گیری‌های تکراری انجام دهید، مانند چند آزمایش خون برای هر بیمار، نقاط داده مستقل نیستند. برای داده‌های وابسته، به مدل‌های رگرسیون خطی تخصصی‌تری نیاز دارید، مانند مدل‌های اثر مختلط (mixed effect models) یا معادلات تعمیم‌یافته برآورد (GEE). اگر از مدل رگرسیون خطی «معمولی» استفاده کنید، ممکن است نتیجه‌گیری نادرستی از مدل داشته باشید.

ثابت بودن ویژگی‌ها (Fixed features)

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

عدم چندگانگی خطی (Absence of multicollinearity)

شما ویژگی‌های به‌شدت همبسته نمی‌خواهید، زیرا این امر برآورد وزن‌ها را مختل می‌کند. در موقعیتی که دو ویژگی به‌شدت همبسته باشند، برآورد وزن‌ها مشکل‌ساز می‌شود، زیرا اثرات ویژگی‌ها جمع‌پذیرند و تعیین اینکه اثرات را باید به کدام‌یک از ویژگی‌های همبسته نسبت داد، غیرممکن می‌شود.

تفسیر

تفسیر یک وزن در مدل رگرسیون خطی به نوع ویژگی مربوطه بستگی دارد.

ویژگی عددی: افزایش ویژگی عددی به اندازه یک واحد، خروجی برآوردشده را به اندازه وزن آن تغییر می‌دهد. نمونه‌ای از ویژگی عددی، مساحت یک خانه است.

ویژگی دودویی (باینری): ویژگی‌ای که برای هر نمونه یکی از دو مقدار ممکن را می‌گیرد. نمونه‌ای از این ویژگی «خانه دارای حیاط است» می‌باشد. یکی از این مقادیر به‌عنوان دسته مرجع در نظر گرفته می‌شود (در برخی زبان‌های برنامه‌نویسی با ۰ کدگذاری می‌شود)، مانند «بدون حیاط». تغییر ویژگی از دسته مرجع به دسته دیگر، خروجی برآوردشده را به اندازه وزن آن ویژگی تغییر می‌دهد.

ویژگی دسته‌ای با چند دسته: ویژگی‌ای با تعداد ثابتی از مقادیر ممکن. نمونه‌ای از این ویژگی «نوع کف‌پوش» است، با دسته‌های ممکن «موکت»، «لمینت» و «پارکت». راه‌حلی برای مواجهه با دسته‌های زیاد، کدگذاری وان-هات (one-hot encoding) است، به این معنا که هر دسته ستون دودویی مخصوص به خود را دارد. برای یک ویژگی دسته‌ای با $L$ دسته، تنها به $L-1$ ستون نیاز دارید، زیرا ستون $L$ام اطلاعات زائد خواهد داشت. برای مثال، وقتی ستون‌های ۱ تا $L-1$ همگی برای یک نمونه مقدار ۰ داشته باشند، می‌دانیم که ویژگی دسته‌ای این نمونه، دسته $L$ام را دارد. تفسیر هر دسته در این حالت همان تفسیر مربوط به ویژگی‌های دودویی است. برخی زبان‌ها، مانند R، به شما اجازه می‌دهند ویژگی‌های دسته‌ای را به روش‌های گوناگونی کدگذاری کنید، همان‌طور که بعداً در این فصل شرح داده می‌شود.

عرض از مبدأ $\hat{\beta}_{0}$: عرض از مبدأ، وزن ویژگی برای «ویژگی ثابت» است که برای همه نمونه‌ها همواره برابر ۱ است. بیشتر بسته‌های نرم‌افزاری به‌طور خودکار این ویژگی «۱» را برای برآورد عرض از مبدأ اضافه می‌کنند. تفسیر آن این‌گونه است: برای نمونه‌ای که تمام مقادیر ویژگی‌های عددی آن صفر و ویژگی‌های دسته‌ای آن در دسته‌های مرجع باشند، پیش‌بینی مدل برابر وزن عرض از مبدأ است. تفسیر عرض از مبدأ معمولاً اهمیتی ندارد، زیرا نمونه‌هایی با تمام مقادیر ویژگی برابر صفر اغلب معنایی ندارند. این تفسیر تنها زمانی معنادار است که ویژگی‌ها استانداردسازی شده باشند (میانگین صفر، انحراف معیار یک). در آن صورت، عرض از مبدأ نشان‌دهنده خروجی پیش‌بینی‌شده برای نمونه‌ای است که تمام ویژگی‌های آن در مقدار میانگین خود قرار دارند.

تفسیر ویژگی‌ها در مدل رگرسیون خطی را می‌توان با استفاده از قالب‌های متنی زیر خودکار کرد.

نکته: تفسیر ویژگی عددی: افزایش ویژگی $x_j$ به اندازه یک واحد، پیش‌بینی $y$ را به اندازه $\hat{\beta}_{j}$ واحد افزایش می‌دهد، در حالی که سایر مقادیر ویژگی ثابت بمانند. ویژگی دسته‌ای: تغییر ویژگی $x_j$ از دسته مرجع به دسته دیگر، پیش‌بینی $y$ را به اندازه $\hat{\beta}_{j}$ افزایش می‌دهد، در حالی که سایر ویژگی‌ها ثابت بمانند.

ضریب تعیین ($R^2$)

سنجه مهم دیگر برای تفسیر مدل‌های خطی، سنجه ضریب تعیین ($R^2$) است. $R^2$ به شما می‌گوید که چه مقدار از واریانس کل خروجی هدف‌تان توسط مدل توضیح داده می‌شود. هرچه $R^2$ بزرگ‌تر باشد، مدل شما داده‌ها را بهتر توضیح می‌دهد. فرمول محاسبه $R^2$ به این صورت است:

$$R^2 = 1 - \frac{SSE}{SST}$$

$SSE$ مجموع مربعات جملات خطا است:

$$SSE = \sum_{i=1}^{n} \left(y^{(i)} - \hat{y}^{(i)}\right)^2$$

$SST$ مجموع مربعات واریانس داده‌هاست:

$$SST = \sum_{i=1}^{n} \left(y^{(i)} - \bar{y}\right)^2$$

$SSE$ به شما می‌گوید که پس از برازش مدل خطی، چه مقدار واریانس باقی می‌ماند، که با مربعات تفاوت میان مقادیر پیش‌بینی‌شده و واقعی هدف اندازه‌گیری می‌شود. $SST$ واریانس کل خروجی هدف است. $R^2$ به شما می‌گوید که چه مقدار از واریانس شما را می‌توان با مدل خطی توضیح داد. $R^2$ معمولاً بین $0$ برای مدل‌هایی که اصلاً داده‌ها را توضیح نمی‌دهند و $1$ برای مدل‌هایی که تمام واریانس داده‌های شما را توضیح می‌دهند، قرار دارد. همچنین ممکن است $R^2$ بدون نقض هیچ قاعده ریاضی، مقداری منفی بگیرد. این زمانی رخ می‌دهد که $SSE$ بزرگ‌تر از $SST$ باشد، به این معنا که مدل روند داده‌ها را ثبت نمی‌کند و برازش آن به داده‌ها بدتر از استفاده از میانگین هدف به‌عنوان پیش‌بینی است.

مثال مترجم برای درک بهتر خوانندگان: فرض کنید می‌خواهیم قیمت چهار خانه را پیش‌بینی کنیم. قیمت‌های واقعی عبارت‌اند از ۱۰۰، ۲۰۰، ۳۰۰ و ۴۰۰ میلیون تومان، و میانگین آن‌ها ($\bar{y}$) برابر ۲۵۰ میلیون تومان است.

  • $SST$ با مقایسه هر قیمت واقعی با همین میانگین (۲۵۰) محاسبه می‌شود: $(100-250)^2 + (200-250)^2 + (300-250)^2 + (400-250)^2 = 22500+2500+2500+22500 = 50000$.
  • فرض کنید مدل ما قیمت‌ها را به‌ترتیب ۱۲۰، ۱۹۰، ۳۱۰ و ۳۸۰ میلیون تومان پیش‌بینی کرده است. $SSE$ با مقایسه هر پیش‌بینی با مقدار واقعی محاسبه می‌شود: $(100-120)^2 + (200-190)^2 + (300-310)^2 + (400-380)^2 = 400+100+100+400 = 1000$.
  • در نتیجه: $R^2 = 1 - \frac{1000}{50000} = 0.98$. یعنی مدل حدود ۹۸٪ از واریانس قیمت خانه‌ها را توضیح می‌دهد — عملکردی بسیار خوب.

حال اگر مدل به‌جای پیش‌بینی‌های خوب بالا، برای هر چهار خانه فقط عدد ۲۵۰ (میانگین) را پیش‌بینی کند، آنگاه $SSE$ برابر $SST$ (یعنی ۵۰۰۰۰) خواهد شد و $R^2 = 0$؛ یعنی مدل هیچ اطلاعاتی بیش از حدس زدن میانگین به ما نمی‌دهد. و اگر مدل حتی بدتر از این عمل کند — مثلاً پیش‌بینی‌هایی کاملاً نامرتبط با روند واقعی داده‌ها بدهد، به‌طوری که $SSE$ از $SST$ هم بزرگ‌تر شود — آنگاه $R^2$ منفی می‌شود، که نشان می‌دهد حتی حدس زدن میانگین ساده هم بهتر از این مدل عمل می‌کرد.

نکته‌ای وجود دارد: $R^2$ با افزایش تعداد ویژگی‌های مدل افزایش می‌یابد، حتی اگر آن ویژگی‌ها اصلاً اطلاعاتی درباره مقدار هدف نداشته باشند. به همین دلیل، بهتر است از $R^2$ تعدیل‌شده استفاده کنید، که تعداد ویژگی‌های مورد استفاده در مدل را نیز لحاظ می‌کند. محاسبه آن به این صورت است:

$$\bar{R}^2 = 1 - \left(1 - R^2\right) \frac{n - 1}{n - p - 1}$$

که در آن $p$ تعداد ویژگی‌ها و $n$ تعداد نمونه‌هاست.

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

برای مثال، فرض کنید هدف پیش‌بینی حقوق کارمندان است. اگر مدل فقط از ویژگی years_experience استفاده کند، ممکن است مقدار R² = 0.60 و مقدار Adjusted R² = 0.59 به دست آید. این یک مدل ساده است که بخشی از تفاوت حقوق‌ها را با تجربه‌ی کاری توضیح می‌دهد. حال اگر ویژگی مهمی مثل job_level به مدل اضافه شود، ممکن است مقدار به 0.82 و مقدار Adjusted R² به 0.81 برسد. در این حالت، افزایش هر دو معیار نشان می‌دهد که ویژگی جدید واقعاً اطلاعات مفیدی درباره‌ی حقوق اضافه کرده است.

اما اگر به‌جای آن ویژگی بی‌ربطی مثل shoe_size به مدل اضافه شود، ممکن است مقدار کمی از 0.60 به 0.605 افزایش یابد، چون مدل از این ویژگی اضافه برای کاهش جزئی خطا در داده‌های آموزشی استفاده کرده است. با این حال، مقدار Adjusted R² ممکن است از 0.59 به 0.585 کاهش پیدا کند. این کاهش نشان می‌دهد که افزایش ناچیز ارزش پیچیده‌تر شدن مدل را نداشته و ویژگی جدید احتمالاً اطلاعات معناداری درباره‌ی حقوق اضافه نکرده است. بنابراین Adjusted R² به ما کمک می‌کند تشخیص دهیم آیا افزایش ناشی از اطلاعات واقعی بوده یا فقط نتیجه‌ی اضافه شدن ویژگی‌های بیشتر به مدل است.

تفسیر مدلی با $R^2$ (تعدیل‌شده) بسیار پایین معنادار نیست، زیرا چنین مدلی اساساً بخش زیادی از واریانس را توضیح نمی‌دهد. هیچ تفسیری از وزن‌ها در چنین حالتی معنادار نخواهد بود.

اهمیت ویژگی‌ها

اهمیت یک ویژگی در مدل رگرسیون خطی را می‌توان با قدر مطلق آماره t آن اندازه‌گیری کرد. آماره t، وزن برآوردشده است که با خطای استاندارد آن مقیاس‌بندی شده است.

$$t_{\hat{\beta}_{j}} = \frac{\hat{\beta}_{j}}{SE\!\left(\hat{\beta}_{j}\right)}$$

بیایید ببینیم این فرمول چه چیزی به ما می‌گوید: اهمیت یک ویژگی با افزایش وزن آن، افزایش می‌یابد. این منطقی است. هرچه وزن برآوردشده واریانس بیشتری داشته باشد (= هرچه نسبت به مقدار درست آن اطمینان کمتری داشته باشیم)، ویژگی کم‌اهمیت‌تر است. این نیز منطقی است.

مثال

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

جدول ۶.۱: ضرایب، خطاهای استاندارد (SE)، و قدر مطلق آماره t برای مدل خطی پیش‌بینی‌کننده اجاره دوچرخه.

ویژگیوزنSE|t|
(عرض از مبدأ)۲۷۴۲٫۴۳۳۹٫۰۸٫۱
seasonSPRING۴۵۴٫۸۱۶۹٫۹۲٫۷
seasonSUMMER۲۶۳٫۳۲۱۸٫۷۱٫۲
seasonFALL۶۳۶٫۹۱۵۲٫۷۴٫۲
holidayY‎−۴۴۱٫۱۲۳۹٫۰۱٫۸
workdayY۲۴۲٫۰۱۰۱٫۹۲٫۴
weatherMISTY‎−۳۴۵٫۳۱۲۰٫۲۲٫۹
weatherBAD‎−۱۸۰۴٫۱۳۰۶٫۰۵٫۹
temp۵۱٫۰۱۰٫۳۵٫۰
hum‎−۲۱٫۷۴٫۵۴٫۸
windspeed‎−۴۶٫۵۹٫۵۴٫۹
cnt_2d_bfr۰٫۶۰٫۰۱۹٫۳

تفسیر یک ویژگی عددی (temp): افزایش دما به اندازه ۱ درجه سانتی‌گراد، تعداد پیش‌بینی‌شده دوچرخه‌ها را به اندازه ۵۱٫۰ افزایش می‌دهد، در حالی که سایر ویژگی‌ها ثابت بمانند.

تفسیر یک ویژگی دسته‌ای (weather): تعداد برآوردشده دوچرخه‌ها زمانی که هوا بد است (بارانی، برفی، یا طوفانی) ۱۸۰۴٫۱ واحد کمتر است، در مقایسه با هوای خوب — باز هم با این فرض که سایر ویژگی‌ها تغییر نمی‌کنند. زمانی که هوا مه‌آلود است، تعداد پیش‌بینی‌شده دوچرخه‌ها ۳۴۵٫۳ واحد کمتر از هوای خوب است، به شرط آنکه سایر ویژگی‌ها ثابت بمانند.

تمام این تفسیرها همیشه با این پانویس همراه‌اند که «سایر ویژگی‌ها ثابت بمانند»، به دلیل ماهیت مدل‌های رگرسیون خطی. هدف پیش‌بینی‌شده، یک ترکیب خطی از ویژگی‌های وزن‌دار است. معادله خطی برآوردشده، یک ابرصفحه (hyperplane) در فضای ویژگی/هدف است (در حالت یک ویژگی منفرد، یک خط ساده). وزن‌ها شیب (گرادیان) ابرصفحه را در هر جهت مشخص می‌کنند. نکته مثبت این است که جمع‌پذیری، تفسیر اثر هر ویژگی منفرد را از سایر ویژگی‌ها جدا می‌کند. این امر ممکن است زیرا تمام اثرات ویژگی‌ها (= وزن ضرب‌در مقدار ویژگی) در معادله با علامت جمع با هم ترکیب شده‌اند. اما از جنبه منفی، این تفسیر توزیع مشترک ویژگی‌ها را نادیده می‌گیرد. افزایش یک ویژگی بدون تغییر ویژگی دیگر می‌تواند به نقاط داده غیرواقعی، یا دست‌کم بعید، منجر شود. برای مثال، افزایش تعداد اتاق‌ها بدون افزایش هم‌زمان اندازه خانه ممکن است غیرواقعی باشد.

توضیح مترجم: برای نمونه، اگر بخواهیم قیمت یک آپارتمان را با دو ویژگی «متراژ» و «تعداد اتاق» پیش‌بینی کنیم، مدل خطی فرض می‌کند می‌توان تعداد اتاق را از ۲ به ۴ افزایش داد بدون آنکه متراژ تغییر کند. در عمل چنین آپارتمانی (با اتاق‌های بسیار کوچک) نادر یا غیرواقعی است؛ اما مدل خطی، بدون آگاهی از این همبستگی طبیعی میان ویژگی‌ها، همچنان چنین سناریویی را در تفسیر خود مجاز می‌شمارد.

هشدار — مقایسه وزن ویژگی‌هایی با مقیاس متفاوت: بزرگی یک ضریب به واحد اندازه‌گیری ویژگی مربوطه بستگی دارد و نمی‌توان آن را مستقیماً با ضریب ویژگی دیگری با واحد متفاوت مقایسه کرد. برای مثال، اگر وزن یک ویژگی بر حسب کیلوگرم برآورد شده باشد و همان ویژگی را به گرم تبدیل کنیم، ضریب ۱۰۰۰ برابر کوچک‌تر می‌شود — بدون آنکه اهمیت واقعی ویژگی تغییر کرده باشد.

نمودار وزن‌ها و نمودار اثر

تجسم‌هایی مانند نمودار وزن‌ها و نمودار اثر، درک مدل رگرسیون خطی را برای انسان آسان و سریع می‌کنند.

نمودار وزن‌ها

اطلاعات موجود در جدول وزن‌ها (برآورد وزن‌ها و واریانس آن‌ها) را می‌توان در قالب یک نمودار وزن‌ها به تصویر کشید. شکل ۶.۱ نتایج مدل رگرسیون خطی پیشین را نشان می‌دهد.

شکل ۶.۱

شکل ۶.۱: برآوردهای رگرسیون خطی برای داده‌های اجاره دوچرخه. وزن‌ها به‌صورت نقطه و فاصله‌های اطمینان ۹۵٪ به‌صورت خط نمایش داده شده‌اند.

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

توضیح مترجم: برای مثال، اگر ضریب دما ۵۱ باشد و ضریب یک ویژگی دودویی مانند «هوای بد» ‎−۱۸۰۴ باشد، این دو عدد را نمی‌توان مستقیماً با هم مقایسه کرد؛ چون یکی به ازای «۱ درجه سانتی‌گراد» و دیگری به ازای «تغییر از هوای خوب به هوای بد» تعریف شده است. اما اگر پیش از برازش مدل، دما را استاندارد کنیم (یعنی از هر مقدار میانگین را کم و بر انحراف معیار تقسیم کنیم)، آنگاه ضریب دما نشان‌دهنده تغییر پیش‌بینی به ازای «یک انحراف معیار» تغییر در دما خواهد بود، که مقیاسی قابل‌مقایسه‌تر با ضرایب سایر ویژگی‌ها به دست می‌دهد.

هشدار — مقایسه وزن ویژگی‌هایی با مقیاس متفاوت: واحدی که یک ویژگی با آن اندازه‌گیری می‌شود، بر بزرگی ضرایب/وزن‌ها اثر می‌گذارد. برای مثال، اگر یک ویژگی را در ۱۰۰۰ ضرب کنید — مانند تبدیل از کیلوگرم به گرم — ضریب جدید به اندازه ضریب ۱ در ۱۰۰۰ کوچک‌تر خواهد شد.

نمودار اثر

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

$$\text{effect}^{(i)}_{j} = \hat{\beta}_{j} \cdot x^{(i)}_{j}$$

اثرات را می‌توان با نمودار جعبه‌ای، همان‌طور که در شکل ۶.۲ آمده، به تصویر کشید. جعبه در یک نمودار جعبه‌ای، بازه اثر برای نیمی از داده‌ها (از چارک ۲۵٪ تا چارک ۷۵٪ اثر) را در بر می‌گیرد. خط عمودی درون جعبه، اثر میانه است، یعنی ۵۰٪ از نمونه‌ها اثر کمتر و نیمه دیگر اثر بیشتری بر پیش‌بینی دارند. نقاط، نقاط پرت (outlier) هستند که به‌صورت نقاطی تعریف می‌شوند که بیش از ۱٫۵ برابر IQR (دامنه بین‌چارکی، یعنی تفاوت میان چارک اول و چارک سوم) بالاتر از چارک سوم، یا کمتر از ۱٫۵ برابر IQR پایین‌تر از چارک اول قرار دارند. دو خط افقی، که ویسکر پایینی و بالایی نامیده می‌شوند، نقاط زیر چارک اول و بالای چارک سوم را که پرت نیستند به هم متصل می‌کنند. اگر هیچ نقطه پرتی وجود نداشته باشد، ویسکرها تا مقادیر کمینه و بیشینه امتداد می‌یابند.

اثرات ویژگی‌های دسته‌ای را می‌توان در یک نمودار جعبه‌ای واحد خلاصه کرد، بر خلاف نمودار وزن‌ها که هر دسته سطر جداگانه خود را دارد.

شکل ۶.۲

شکل ۶.۲: نمودار اثر برای نتایج رگرسیون خطی داده‌های اجاره دوچرخه. نمودارهای جعبه‌ای، توزیع اثرات (= مقدار ویژگی ضرب‌در وزن ویژگی) را در سرتاسر داده‌ها برای هر ویژگی نشان می‌دهند.

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

توضیح مترجم: این نکته کمی گیج‌کننده به نظر می‌رسد، اما دلیلش ساده است: وزن ویژگی سرعت باد منفی است. پس وقتی سرعت باد (مقدار ویژگی) زیاد باشد، حاصل‌ضرب «وزن منفی × مقدار زیاد» یک عدد منفی بزرگ می‌شود (اثر منفی شدید بر پیش‌بینی)، و برعکس، وقتی سرعت باد نزدیک صفر باشد، اثر آن نیز نزدیک صفر خواهد بود.

توضیح پیش‌بینی‌های منفرد با نمودار اثر

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

جدول ۶.۲: مقادیر ویژگی برای نمونه ۶

ویژگیمقدار
seasonWINTER
holidayN
workdayY
weatherMISTY
temp‎−۰٫۰۵۲۷۲۳
hum۶۸٫۶۳۶۴
windspeed۸٫۱۸۲۸۴۴
cnt_2d_bfr۸۲۲
cnt۱۲۶۳

برای به‌دست‌آوردن اثرات ویژگی‌های این نمونه، باید مقادیر ویژگی‌های آن را در وزن‌های متناظرشان از مدل رگرسیون خطی ضرب کنیم. برای دمای ‎−۰٫۰۵ درجه سانتی‌گراد، اثر برابر است با $-0.05 \times 51.01 \approx -2.69$. این اثرات منفرد را به‌صورت علامت ضربدر به نمودار اثر اضافه می‌کنیم، که توزیع اثرات را در داده‌ها نشان می‌دهد، همان‌طور که در شکل ۶.۳ به تصویر کشیده شده است. این کار به ما امکان می‌دهد اثرات منفرد را با توزیع اثرات در داده‌ها مقایسه کنیم.

اگر پیش‌بینی‌های نمونه‌های داده آزمون را میانگین بگیریم، به میانگین ۴۴۵۲ می‌رسیم. در مقایسه، پیش‌بینی نمونه ششم کوچک است، زیرا تنها ۱۲۳۸ اجاره دوچرخه پیش‌بینی شده است. نمودار اثر دلیل این موضوع را آشکار می‌کند. نمودارهای جعبه‌ای توزیع اثرات را برای همه نمونه‌های مجموعه داده نشان می‌دهند؛ علامت‌های ضربدر، اثرات مربوط به نمونه ششم را نشان می‌دهند. نمونه ششم اثر دمای پایینی دارد، زیرا در این روز دما ۰ درجه بوده است که در مقایسه با بیشتر روزهای دیگر پایین است (و به یاد داشته باشید که وزن ویژگی دما مثبت است). همچنین، اثر ویژگی cnt_2d_bfr نیز در مقایسه با سایر نمونه‌های داده کوچک است، زیرا در اوایل سال ۲۰۱۱ دوچرخه‌های کمتری اجاره داده شده بود.

شکل ۶.۳

شکل ۶.۳: نمودار اثر برای یک پیش‌بینی مدل خطی برای داده‌های دوچرخه. نمودارهای جعبه‌ای توزیع کلی اثرات را نشان می‌دهند، در حالی که علامت‌های ضربدر اثرات مربوط به نمونه موردنظر را مشخص می‌کنند.

با جمع کردن اثر تمام ویژگی‌ها و عرض از مبدأ، پیش‌بینی نهایی این نمونه ۱۲۳۸ به دست می‌آید — در حالی که میانگین پیش‌بینی‌های مدل روی کل داده‌ها ۴۴۵۲ است. نمودار اثر به ما اجازه می‌دهد ببینیم چرا پیش‌بینی این نمونه خاص به‌طور قابل‌توجهی پایین‌تر از میانگین است.

کدگذاری ویژگی‌های دسته‌ای

چندین روش برای کدگذاری یک ویژگی دسته‌ای وجود دارد، و انتخاب هر روش بر تفسیر وزن‌ها اثر می‌گذارد. استاندارد در مدل‌های رگرسیون خطی، کدگذاری مرجع (treatment coding) است که در بیشتر موارد کافی است. استفاده از کدگذاری‌های مختلف در نهایت به معنای ساختن ماتریس‌های (طراحی) متفاوت از یک ستون واحد حاوی ویژگی دسته‌ای است. این بخش سه کدگذاری متفاوت را ارائه می‌دهد، اما کدگذاری‌های بسیار بیشتری نیز وجود دارند. در مثال زیر چهار نمونه و یک ویژگی دسته‌ای با سه دسته داریم. برای دو نمونه اول، ویژگی دسته $A$ را دارد؛ برای نمونه سوم، دسته $B$؛ و برای نمونه آخر، دسته $C$. پس بردار ما به این شکل است:

$$\begin{pmatrix} A \\ A \\ B \\ C \end{pmatrix}$$

کدگذاری مرجع (Treatment Coding)

در کدگذاری مرجع، وزن هر دسته، تفاوت برآوردشده در پیش‌بینی میان آن دسته و دسته مرجع است. عرض از مبدأ مدل خطی، میانگین دسته مرجع است (به شرط آنکه سایر ویژگی‌ها ثابت بمانند). ستون اول ماتریس طراحی، عرض از مبدأ است که همواره برابر ۱ است. ستون دوم نشان می‌دهد که آیا نمونه $i$ در دسته $B$ است یا نه، و ستون سوم نشان می‌دهد که آیا در دسته $C$ است یا نه. نیازی به ستونی برای دسته $A$ نیست، زیرا در آن صورت معادله خطی بیش‌ازحد مشخص (overspecified) می‌شد و راه‌حل یکتایی برای وزن‌ها یافت نمی‌شد. کافی است بدانیم نمونه‌ای نه در دسته $B$ و نه در دسته $C$ است.

$$\begin{pmatrix} A \\ A \\ B \\ C \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 0 & 0 \\ 1 & 0 & 0 \\ 1 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix}$$

توضیح مترجم برای درک بهتر: فرض کنید سه سطح شغلی داریم: مبتدی ($A$، دسته مرجع)، متوسط ($B$) و ارشد ($C$)، و می‌خواهیم حقوق ماهانه (بر حسب میلیون تومان) را پیش‌بینی کنیم. فرض کنید میانگین حقوق واقعی در داده‌ها این‌گونه باشد: مبتدی = ۱۰، متوسط = ۳۰، ارشد = ۸۰. در کدگذاری مرجع، مدل این‌گونه برازش می‌شود: عرض از مبدأ ($\hat{\beta}_{0}$) برابر ۱۰ (میانگین دسته مرجع، یعنی مبتدی) است؛ وزن دسته $B$ برابر $\hat{\beta}_{1} = 20$ (یعنی ۳۰ منهای ۱۰) است؛ و وزن دسته $C$ برابر $\hat{\beta}_{2} = 70$ (یعنی ۸۰ منهای ۱۰) است. برای پیش‌بینی حقوق یک کارمند ارشد، کافی است $10 + 70 = 80$ را محاسبه کنیم.

کدگذاری اثر (Effect Coding)

در کدگذاری اثر، وزن هر دسته، تفاوت برآوردشده $y$ میان آن دسته و میانگین کلی است (به شرط آنکه سایر ویژگی‌ها صفر یا در دسته مرجع باشند). ستون اول برای برآورد عرض از مبدأ استفاده می‌شود. وزن $\hat{\beta}_{0}$ که با عرض از مبدأ همراه است، نشان‌دهنده میانگین کلی است، و $\hat{\beta}_{1}$ که وزن ستون دوم است، تفاوت میان میانگین کلی و دسته $B$ را نشان می‌دهد. اثر کلی دسته $B$ برابر $\hat{\beta}_{0} + \hat{\beta}_{1}$ است. تفسیر دسته $C$ نیز به همین ترتیب است. برای دسته مرجع $A$، مقدار $-(\hat{\beta}_{1} + \hat{\beta}_{2})$ تفاوت آن با میانگین کلی است و $\hat{\beta}_{0} - (\hat{\beta}_{1} + \hat{\beta}_{2})$ اثر کلی آن است.

$$\begin{pmatrix} A \\ A \\ B \\ C \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & -1 & -1 \\ 1 & -1 & -1 \\ 1 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix}$$

توضیح مترجم برای درک بهتر: با همان مثال حقوق سه سطح شغلی (مبتدی = ۱۰، متوسط = ۳۰، ارشد = ۸۰)، میانگین کلی برابر $\frac{10+30+80}{3} = 40$ است. در کدگذاری اثر: عرض از مبدأ ($\hat{\beta}_{0}$) برابر همین میانگین کلی، یعنی ۴۰، است؛ وزن دسته $B$ برابر $\hat{\beta}_{1} = 30 - 40 = -10$ است؛ و وزن دسته $C$ برابر $\hat{\beta}_{2} = 80 - 40 = 40$ است. برای پیش‌بینی حقوق یک کارمند متوسط، $40 + (-10) = 30$ را محاسبه می‌کنیم — دقیقاً همان میانگین واقعی این دسته. برای دسته مرجع (مبتدی)، حقوق پیش‌بینی‌شده برابر $40 - (-10 + 40) = 40 - 30 = 10$ است که باز هم با میانگین واقعی آن مطابقت دارد.

کدگذاری Dummy (بدون عرض از مبدأ)

$\hat{\beta}_{\ell}$ در این روش، میانگین برآوردشده $y$ برای هر دسته است (به شرط آنکه سایر مقادیر ویژگی صفر یا در دسته مرجع باشند). توجه کنید که در این‌جا عرض از مبدأ حذف شده است تا بتوان راه‌حل یکتایی برای وزن‌های مدل خطی یافت. راه دیگر برای رفع این مشکل چندگانگی خطی، حذف یکی از دسته‌ها است (همان‌طور که در کدگذاری مرجع انجام شد).

$$\begin{pmatrix} A \\ A \\ B \\ C \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}$$

توضیح مترجم برای درک بهتر: باز هم با همان مثال حقوق (مبتدی = ۱۰، متوسط = ۳۰، ارشد = ۸۰)، در کدگذاری Dummy دیگر خبری از عرض از مبدأ نیست؛ هر دسته وزن مستقل خودش را می‌گیرد که همان میانگین حقوق آن دسته است: $\hat{\beta}_{A} = 10$، $\hat{\beta}_{B} = 30$، $\hat{\beta}_{C} = 80$. برای پیش‌بینی حقوق هر کارمند، کافی است وزن دسته او را مستقیماً بخوانیم — بدون هیچ جمع یا تفریق اضافه‌ای، برخلاف دو روش قبلی.

اگر می‌خواهید کمی عمیق‌تر به کدگذاری‌های مختلف ویژگی‌های دسته‌ای بپردازید، این صفحه مروری و این نوشتهٔ وبلاگی را ببینید.

مدل‌های خطی تنک (Sparse Linear Models)

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

لاسو (Lasso)

لاسو (Lasso) روشی خودکار و آسان برای وارد کردن تنکی به مدل رگرسیون خطی است. لاسو مخفف «least absolute shrinkage and selection operator» است و وقتی در یک مدل رگرسیون خطی به کار می‌رود، انتخاب ویژگی و منظم‌سازی (regularization) وزن‌های ویژگی‌های انتخاب‌شده را انجام می‌دهد. بیایید مسئله بهینه‌سازی‌ای را در نظر بگیریم که وزن‌ها بر اساس آن بهینه می‌شوند:

$$\min_{\beta} \sum_{i=1}^{n} \left(y^{(i)} - x^{(i)\top}\beta\right)^2$$

لاسو یک جمله به این مسئله بهینه‌سازی اضافه می‌کند:

$$\min_{\beta} \left( \sum_{i=1}^{n} \left(y^{(i)} - x^{(i)\top}\beta\right)^2 + \lambda |\beta|_{1} \right)$$

که در آن $|\beta|_{1} = \sum_{j=1}^{p} |\beta_j|$، یعنی نرم $L_1$ بردار ویژگی، به جریمه‌شدن وزن‌های بزرگ منجر می‌شود. از آنجا که از نرم $L_1$ استفاده می‌شود، بسیاری از وزن‌ها برآوردی برابر صفر می‌گیرند و بقیه کوچک‌تر می‌شوند. پارامتر $\lambda$ قدرت اثر منظم‌سازی را کنترل می‌کند و معمولاً با اعتبارسنجی متقاطع (cross-validation) تنظیم می‌شود. به‌ویژه وقتی $\lambda$ بزرگ باشد، بسیاری از وزن‌ها صفر می‌شوند. وزن‌های ویژگی را می‌توان به‌صورت تابعی از جمله جریمه $\lambda$ به تصویر کشید. هر وزن ویژگی با یک منحنی در شکل ۶.۴ نمایش داده می‌شود. با افزایش جریمه وزن‌ها، ویژگی‌های کمتر و کمتری برآورد وزن غیرصفر دریافت می‌کنند. این منحنی‌ها را مسیرهای منظم‌سازی (regularization paths) نیز می‌نامند.

شکل ۶.۴

شکل ۶.۴: اثر جمله جریمه $\lambda$ بر برآورد وزن‌ها در یک مدل خطی. عددی که بالای نمودار نوشته شده، تعداد وزن‌های غیرصفر است.

چه مقداری باید برای $\lambda$ انتخاب کنیم؟ اگر جمله جریمه را به‌عنوان یک پارامتر تنظیم در نظر بگیرید، می‌توانید با اعتبارسنجی متقاطع، $\lambda$ای را بیابید که خطای مدل را کمینه می‌کند. همچنین می‌توانید $\lambda$ را به‌عنوان پارامتری برای کنترل تفسیرپذیری مدل در نظر بگیرید. هرچه جریمه بزرگ‌تر باشد، ویژگی‌های کمتری در مدل حضور دارند (چون وزن آن‌ها صفر است)، و مدل بهتر قابل تفسیر است.

توضیح مترجم: یک نکته تکمیلی که در متن اصلی نیامده، تفاوت لاسو با رگرسیون ریج (Ridge) است: رگرسیون ریج نیز وزن‌ها را جریمه می‌کند، اما با نرم $L_2$ (مجموع مربعات وزن‌ها به‌جای مجموع قدر مطلق آن‌ها)، و این جریمه فقط وزن‌ها را کوچک می‌کند، نه دقیقاً صفر. به همین دلیل، ریج ابزاری برای کاهش بیش‌برازش است، اما بر خلاف لاسو، به‌طور طبیعی ویژگی‌ها را از مدل حذف نمی‌کند.

مثالی با لاسو

می‌خواهیم اجاره دوچرخه را با استفاده از لاسو پیش‌بینی کنیم. تعداد ویژگی‌هایی که می‌خواهیم در مدل داشته باشیم را از پیش تعیین می‌کنیم. ابتدا این عدد را برابر ۲ ویژگی قرار می‌دهیم تا نتایج جدول ۶.۳ را به دست آوریم.

جدول ۶.۳: برآورد وزن‌ها هنگام استفاده از لاسو با تعیین تعداد ویژگی‌ها برابر دو.

ویژگیوزن
seasonWINTER۰٫۰۰
seasonSPRING۰٫۰۰
seasonSUMMER۰٫۰۰
seasonFALL۰٫۰۰
holidayY۰٫۰۰
workdayY۰٫۰۰
weatherMISTY۰٫۰۰
weatherBAD۰٫۰۰
temp۲۲٫۴۵
hum۰٫۰۰
windspeed۰٫۰۰
cnt_2d_bfr۰٫۴۸

اولین دو ویژگی با وزن غیرصفر در مسیر لاسو، دما (temp) و تعداد قبلی (cnt_2d_bfr) هستند. حال بیایید ۵ ویژگی انتخاب کنیم. نتایج در جدول ۶.۴ آمده است. توجه کنید که وزن‌های «temp» و «cnt_2d_bfr» با مدل دوویژگی‌ای متفاوت‌اند. دلیل این امر این است که با کاهش $\lambda$، حتی ویژگی‌هایی که از قبل «در» مدل بودند نیز کمتر جریمه می‌شوند و ممکن است وزن مطلق بزرگ‌تری بگیرند. تفسیر وزن‌های لاسو مطابق با تفسیر وزن‌ها در مدل رگرسیون خطی است. تنها باید توجه کنید که آیا ویژگی‌ها استانداردسازی شده‌اند یا نه، زیرا این موضوع بر وزن‌ها اثر می‌گذارد. در این مثال، ویژگی‌ها توسط نرم‌افزار استانداردسازی شدند، اما وزن‌ها به‌طور خودکار به مقیاس اصلی ویژگی‌ها بازگردانده شدند.

جدول ۶.۴: برآورد وزن‌ها هنگام استفاده از لاسو با تعیین تعداد ویژگی‌ها برابر پنج.

ویژگیوزن
seasonWINTER‎−۲۴۹٫۳۷
seasonSPRING۰٫۰۰
seasonSUMMER۰٫۰۰
seasonFALL۰٫۰۰
holidayY۰٫۰۰
workdayY۰٫۰۰
weatherMISTY۰٫۰۰
weatherBAD‎−۷۸۹٫۷۴
temp۳۱٫۱۴
hum‎−۶٫۴۷
windspeed۰٫۰۰
cnt_2d_bfr۰٫۵۳

روش‌های دیگر برای تنکی در مدل‌های خطی

طیف گسترده‌ای از روش‌ها را می‌توان برای کاهش تعداد ویژگی‌ها در یک مدل خطی به کار برد.

روش‌های پیش‌پردازش:

  • ویژگی‌های انتخاب‌شده به‌صورت دستی: همیشه می‌توانید از دانش تخصصی برای انتخاب یا کنار گذاشتن برخی ویژگی‌ها استفاده کنید. عیب بزرگ این روش این است که خودکار نیست و به فردی نیاز دارید که داده‌ها را بشناسد.
  • انتخاب تک‌متغیره (Univariate selection): نمونه‌ای از آن ضریب همبستگی است. تنها ویژگی‌هایی را در نظر می‌گیرید که از آستانه مشخصی از همبستگی میان ویژگی و هدف عبور کنند. عیب این روش این است که ویژگی‌ها را تنها به‌تنهایی در نظر می‌گیرد. برخی ویژگی‌ها ممکن است تا زمانی که مدل خطی سایر ویژگی‌ها را لحاظ نکرده باشد، همبستگی‌ای نشان ندهند؛ چنین ویژگی‌هایی را با روش‌های انتخاب تک‌متغیره از دست می‌دهید.

روش‌های گام‌به‌گام:

  • انتخاب پیشرو (Forward selection): مدل خطی را با یک ویژگی برازش دهید. این کار را برای هر ویژگی انجام دهید. مدلی را انتخاب کنید که بهترین عملکرد را دارد (مثلاً بالاترین $R^2$). حال دوباره، برای ویژگی‌های باقی‌مانده، نسخه‌های مختلفی از مدل خود را با افزودن هر ویژگی به بهترین مدل فعلی برازش دهید. مدلی را که بهترین عملکرد را دارد انتخاب کنید. تا رسیدن به یک معیار توقف، مانند حداکثر تعداد ویژگی در مدل، ادامه دهید.
  • انتخاب پسرو (Backward selection): شبیه به انتخاب پیشرو است. اما به‌جای افزودن ویژگی، با مدلی شروع می‌کنید که همه ویژگی‌ها را دارد و بررسی می‌کنید کدام ویژگی را باید حذف کنید تا بیشترین افزایش عملکرد را به دست آورید. این کار را تا رسیدن به یک معیار توقف تکرار کنید.

توصیه من استفاده از لاسو است، زیرا می‌توان آن را خودکار کرد، همه ویژگی‌ها را به‌طور هم‌زمان در نظر می‌گیرد، و می‌توان آن را از طریق $\lambda$ کنترل کرد. لاسو برای رگرسیون لجستیک در طبقه‌بندی نیز کاربرد دارد.

مزایا

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

بسیاری از افراد از مدل‌های رگرسیون خطی استفاده می‌کنند. این یعنی در بسیاری از جاها، این روش برای مدل‌سازی پیش‌بینی و انجام استنتاج پذیرفته‌شده است. سطح بالایی از تجربه و تخصص جمعی درباره آن وجود دارد، از جمله منابع آموزشی درباره مدل‌های رگرسیون خطی و پیاده‌سازی‌های نرم‌افزاری. رگرسیون خطی را می‌توان در R، Python، Java، Julia، Scala، JavaScript و ... یافت.

از نظر ریاضی، برآورد وزن‌ها ساده است و تضمینی برای یافتن وزن‌های بهینه دارید (به شرط آنکه تمام مفروضات مدل رگرسیون خطی توسط داده‌ها برآورده شوند).

همراه با وزن‌ها، فاصله‌های اطمینان، آزمون‌های آماری، و نظریه آماری استواری به دست می‌آورید. همچنین بسط‌های زیادی از مدل رگرسیون خطی وجود دارد (به فصل مربوط به GLM، GAM و بیشتر مراجعه کنید).

مدل‌های خطی می‌توانند توضیحاتی صادقانه (truthful) تولید کنند، تا زمانی که معادله خطی مدل مناسبی برای رابطه میان ویژگی‌ها و خروجی باشد. هرچه روابط غیرخطی و تعاملات بیشتری وجود داشته باشد، مدل خطی دقت کمتری خواهد داشت، و توضیحات آن نیز کمتر صادقانه خواهند بود.

محدودیت‌ها

مدل‌های رگرسیون خطی تنها می‌توانند روابط خطی را نشان دهند، یعنی یک مجموع وزن‌دار از ویژگی‌های ورودی. هر رابطه غیرخطی یا تعامل باید به‌صورت دستی ساخته شود و به‌طور صریح به‌عنوان یک ویژگی ورودی به مدل داده شود.

مدل‌های خطی همچنین اغلب از نظر عملکرد پیش‌بینی چندان خوب نیستند، زیرا روابطی که می‌توانند یاد بگیرند بسیار محدود است و معمولاً پیچیدگی واقعیت را بیش‌ازحد ساده می‌کنند.

تفسیر یک وزن می‌تواند غیرشهودی باشد، زیرا به تمام ویژگی‌های دیگر بستگی دارد. ممکن است ویژگی‌ای که همبستگی مثبت بالایی با خروجی $Y$ دارد، در کنار ویژگی دیگری، وزن منفی در مدل خطی بگیرد، چون با ثابت نگه‌داشتن ویژگی همبسته دیگر، در فضای چندبعدی همبستگی منفی با $Y$ پیدا می‌کند. ویژگی‌های کاملاً همبسته حتی یافتن یک راه‌حل یکتا برای معادله خطی را غیرممکن می‌کنند. مثالی از این مورد: مدلی برای پیش‌بینی ارزش یک خانه دارید و ویژگی‌هایی مانند تعداد اتاق‌ها و متراژ خانه در آن هست. متراژ خانه و تعداد اتاق‌ها به‌شدت با هم همبسته‌اند: هرچه خانه بزرگ‌تر باشد، اتاق‌های بیشتری دارد. اگر هر دو ویژگی را در یک مدل خطی وارد کنید، ممکن است پیش بیاید که متراژ خانه پیش‌بینی‌کننده بهتری باشد و وزن مثبت بزرگی بگیرد. تعداد اتاق‌ها ممکن است در نهایت وزن منفی بگیرد، چون با فرض ثابت بودن متراژ خانه، افزایش تعداد اتاق‌ها می‌تواند ارزش خانه را کاهش دهد (مثلاً به‌خاطر کوچک‌تر شدن هر اتاق)، یا اینکه وقتی همبستگی خیلی قوی باشد، معادله خطی ناپایدارتر می‌شود.

توضیح مترجم برای درک بهتر: فرض کنید دو خانه با متراژ یکسان ۱۰۰ متر داریم، اما یکی ۳ اتاق دارد و دیگری ۵ اتاق. اگر متراژ ثابت بماند، خانه با ۵ اتاق یعنی اتاق‌های کوچک‌تر و شاید کم‌کاربردتر — که می‌تواند از نظر خریداران کمتر مطلوب باشد. به همین دلیل ممکن است مدل خطی، وزن منفی برای «تعداد اتاق» برآورد کند، در حالی که به‌طور شهودی انتظار داریم اتاق بیشتر همیشه بهتر باشد. این پارادوکس ظاهری، دقیقاً نتیجه همبستگی قوی میان متراژ و تعداد اتاق است.

با توجه به ویژگی‌هایی که یک توضیح خوب را می‌سازند — همان‌طور که در فصل «توضیحات انسان‌پسند» ارائه شد — مدل‌های خطی بهترین توضیحات را تولید نمی‌کنند. این توضیحات contrastive هستند، اما نمونه مرجع، نقطه داده‌ای است که در آن همه ویژگی‌های عددی صفرند و ویژگی‌های دسته‌ای در دسته‌های مرجع خود قرار دارند. این معمولاً یک نمونه مصنوعی و بی‌معناست که بعید است در داده‌ها یا واقعیت رخ دهد. یک استثنا وجود دارد: اگر همه ویژگی‌های عددی میانگین‌مرکزی شوند (ویژگی منهای میانگین آن ویژگی) و همه ویژگی‌های دسته‌ای با کدگذاری اثر (effect coding) کدگذاری شوند، نمونه مرجع همان نقطه داده‌ای است که در آن همه ویژگی‌ها مقدار میانگین خود را دارند. این نیز ممکن است نمونه‌ای غیرموجود باشد، اما دست‌کم می‌تواند محتمل‌تر یا معنادارتر باشد. در این حالت، وزن‌ها ضرب‌در مقادیر ویژگی‌ها (یعنی اثرات ویژگی‌ها) سهم هر ویژگی در پیش‌بینی خروجی را به‌صورت contrastive نسبت به «نمونه-میانگین» توضیح می‌دهند.

به‌طور پیش‌فرض، مدل‌های خطی توضیحات گزینشی (selective) تولید نمی‌کنند.

توضیح مترجم: توضیح گزینشی (selective explanation) یعنی توضیحی که فقط روی مهم‌ترین یکی-دو دلیل تمرکز می‌کند، همان‌طور که انسان‌ها معمولاً هنگام توضیح دادن یک رویداد عمل می‌کنند؛ مدل خطی چنین کاری نمی‌کند و سهم همه ویژگی‌ها را هم‌زمان گزارش می‌دهد.


در مجموع، رگرسیون خطی بهترین انتخاب است وقتی روابط واقعاً (یا تقریباً) خطی هستند، داده‌ها کافی نیستند برای مدل‌های پیچیده‌تر، یا تفسیرپذیری و اعتماد اولویت دارند. در غیر این صورت، روش‌های پیشرفته‌تر در کنار ابزارهای تفسیر مانند SHAP یا LIME می‌توانند بهتر باشند.


پانویس: این فصل رگرسیون خطی را از دیدگاه یک آماردان معرفی کرده است، با جمله خطای تصادفی $\epsilon$ به‌عنوان بخشی از تعریف مدل. با این حال، می‌توان رگرسیون خطی را بدون این جمله خطا نیز تعریف کرد و صرفاً آن را به‌عنوان یک تابع پیش‌بینی $\hat{y} = \beta_0 + \sum_j \beta_j x_j$ در نظر گرفت.