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

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

در این مقاله توضیحات شفافی خواهید داشتon راهنمایی و کاربردهای دنیای واقعی که در آن شاهد قدرت رگرسیون خطی در عمل خواهید بود.

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

فهرست مطالب

  1. پیش نیازها
  2. رگرسیون خطی چیست؟
  3. چرا رگرسیون خطی ارزشمند است؟
  4. مفاهیم کلیدی رگرسیون خطی
  5. چگونه اولین مدل خود را بسازیم
  6. تکنیک های رگرسیون خطی پیشرفته
  7. نتیجه

پیش نیازها

قبل از شروع، مطمئن شوید که موارد زیر را نصب کرده اید:

  • پایتون (3.x توصیه می شود)
  • Jupyter نوت بوک: این اختیاری است اما برای یک محیط تعاملی و همچنین برای آزمون و خطا توصیه می شود (مبتدیان از این کار بیشترین بهره را خواهند برد)
  • کتابخانه های مورد نیاز: پانداها، NumPy، Matplotlib، seaborn، scikit-learn

شما می توانید این کتابخانه ها را با استفاده از pip install در خط فرمان:

pip install pandas
pip install matplotlib
pip install numpy
pip installseaborn
pip install scikit-learn

رگرسیون خطی چیست؟

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

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

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

در مجموعه داده‌های قیمت خانه، متغیرهای مستقل ستون‌هایی هستند که برای پیش‌بینی استفاده می‌شوند، مانند «مساحت»، «اتاق‌های خواب»، «سن» و «مکان». متغیر وابسته ستون “قیمت” خواهد بود – ویژگی قابل پیش بینی.

رگرسیون خطی ساده ترین شکل رگرسیون است، با فرض یک رابطه خطی (خط مستقیم) بین متغیر ورودی و خروجی. معادله رگرسیون خطی ساده را می توان به صورت بیان کرد y = mx + b، جایی که، y متغیر وابسته است، x متغیر مستقل است، m شیب است، و b رهگیری است.

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

تصویر رگرسیون خطی
نمودار رگرسیون خطی ساده

چرا رگرسیون خطی ارزشمند است؟

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

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

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

مفاهیم کلیدی رگرسیون خطی

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

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

  • بهترین خط مناسب را پیدا کنید: خطوط در طول یک نمودار، با ویژگی ها ترسیم می شوند روی یک محور و قیمت روی دیگری. خطی که ما به دنبال آن هستیم همان است که best fits نقاط نشان دهنده خانه های واقعی، به حداقل رساندن کلی difference بین قیمت های پیش بینی شده و واقعی
  • خطا را به حداقل برسانید: خط را به عنوان یک در نظر بگیرید balancing act. شیب و موقعیت خط تا جایی تنظیم می شود که فاصله کل بین خط و نقاط داده تا حد امکان کوچک شود (تابع هزینه حداقل). این فاصله به حداقل رسیده بهترین پیش بینی ممکن را برای خانه های جدید منعکس می کند روی ویژگی های آنها
  • ضرایب: هر ویژگی در مدل یک می شود weight (ضرایب)، مانند مقدار مشخصی از یک ماده در دستور غذا. با تنظیم این وزن ها، میزان کمک هر ویژگی به قیمت پیش بینی شده را تغییر می دهیم. به عنوان مثال، وزن بالاتر برای اندازه، به این معنی است که خانه های بزرگتر تأثیر قوی تری دارند روی قیمت پیش بینی شده
پیشنهاد می‌کنیم بخوانید:  روش های فهرست پایتون به زبان انگلیسی ساده توضیح داده شده است

بنابراین، چه چیزی از این نتیجه می گیریم؟

هنگامی که ما بهترین خط را داشته باشیم، مدل می تواند قیمت خانه های جدید را پیش بینی کند روی ویژگی های آنها اما این فقط در مورد اعداد نیست – the weights tell a story.

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

مفروضات و محدودیت ها

رگرسیون خطی فرض می کند که چیزها تقریباً ساده هستند، مانند رابطه بین اندازه و قیمت. اگر همه چیز پیچیده تر باشد، ممکن است بهترین ابزار نباشد.

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

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

در بخش بعدی، روش ساخت اولین مدل پیش بینی قیمت خانه خود را یاد خواهید گرفت.

چگونه اولین مدل خود را بسازیم

چگونه import کتابخانه ها و بارگذاری داده ها

اگر با مدل‌های یادگیری ماشینی تازه کار هستید، کتابخانه‌ها به صورت مخفف‌ها تنها با هدف نوشتن کد کوتاه‌تر وارد می‌شوند:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# Load your dataset (replace 'your_dataset.csv' with your file)
df = pd.read_csv('your_dataset.csv')

# Display the first few rows of the dataset
df.head()

مجموعه داده با استفاده از پانداها بارگیری می شود read_csv تابع و سپس پنج سطر اول با استفاده از df.head().

تجزیه و تحلیل داده های اکتشافی (EDA)

داده های منابع مختلف معمولاً نامرتب، پراکنده هستند، حاوی مقادیر گمشده هستند و گاهی اوقات ساختاری ندارند.

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

بیایید مراحلی را که باید قبل از ساخت مدل خود بردارید مرور کنیم.

مقادیر از دست رفته را بررسی کنید

مدل‌های یادگیری ماشینی نمی‌توانند در صورت وجود مقادیر گمشده در مجموعه داده عمل کنند:

df.isnull().sum()

با این کار لیستی از ستون هایی که مقادیر null دارند و خود سطرها به شما ارائه می شود. راه های مختلفی برای مقابله با این موضوع وجود دارد مانند:

  • حذف تمام سطرهایی که مقادیر null دارند.
  • استفاده از میانگین یا میانه ستون برای پر کردن مقادیر از دست رفته برای داده های عددی.
  • پر کردن مقادیر از دست رفته با بیشترین داده ها برای داده های کیفی.

همبستگی بین متغیرها را بررسی کنید

sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.show()

این کد روابط بین ستون های مستقل / متغیرها / ویژگی ها و وابسته / متغیرهای هدف را نشان می دهد.

همچنین نشان می دهد که کدام ستون ها یا ویژگی ها نتیجه متغیر هدف را بیشتر از بقیه تعیین می کنند.

ارتباط بین متغیرهای مستقل و وابسته را تجسم کنید

نمودارهای پراکندگی می توانند نشان دهند که قیمت های پیش بینی شده شما چقدر با مقادیر واقعی مطابقت دارند. نمودارهای باقیمانده به تجسم هر گونه الگوی در خطاها کمک می کند و مسائل بالقوه را آشکار می کند.

sns.scatterplot(x='Independent Variable', y='Dependent Variable', data=df)
plt.show()

این نمودار پراکندگی رابطه بین متغیرهای مستقل و وابسته را نشان می دهد و یک خط مستقیم برای نشان دادن رابطه رسم می شود

پیش پردازش داده ها

این یک مرحله بسیار مهم است زیرا کیفیت داده‌هایی که برای آموزش مدل استفاده می‌شوند، دقت و کارایی مدل را نیز تعیین می‌کند.

در اینجا، مجموعه داده ابتدا به X (متغیر(ها)/ویژگی های مستقل) و Y (متغیر وابسته/هدف) تفکیک می شود:


# Handle missing values if necessary
df.dropna(inplace=True)

# Split the data into features (X) and target variable (y)
X = df[['Independent Variable']]
y = df['Dependent Variable']

# Split the data into training and testing sets (e.g., 80% training, 20% testing)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

ما مقادیر از دست رفته را با حذف ستون هایی با مقادیر از دست رفته/تهی کنترل می کنیم و مجموعه داده را به آموزش و آزمایش در نسبت 80:20 تقسیم می کنیم.

ساخت مدل رگرسیون

در نهایت، زمان ایجاد و آموزش مدل رگرسیون خطی فرا رسیده است.

پیشنهاد می‌کنیم بخوانید:  پایتون: شیء کپی عمیق و کم عمق

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

# Create a linear regression model
model = LinearRegression()

# Train the model
model.fit(X_train, y_train)

چگونه پیش بینی کنیم

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

# Make predictions
y_predn = model.predict(X_test)

روش ارزیابی مدل

ارزیابی عملکرد مدل گام مهمی برای تعیین دقت مدل و قابلیت استفاده مجدد است. ما می توانیم با استفاده از معیارهایی مانند:

  • “R-squared”: این به شما می گوید که این مدل چقدر به خوبی تغییرات قیمت خانه را توضیح می دهد. مقدار بالاتر (نزدیک به 1) نشان دهنده تناسب بهتر است.
  • میانگین مربعات خطا (MSE): میانگین اختلاف بین قیمت های پیش بینی شده و واقعی را اندازه گیری می کند. پایین تر بهتر است
  • امتیاز دقیق
# Evaluate the model
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse}')

# Using precision score
model.score(X_test, Y_test)

روش تجسم نتایج

خط رگرسیون و مقادیر واقعی در مقابل پیش بینی شده را تجسم کنید:

# Plot the regression line
plt.scatter(X_test, y_test, color="gray")
plt.plot(X_test, y_pred, color="red", linewidth=2)
plt.xlabel('Independent Variable')
plt.ylabel('Dependent Variable')
plt.show()

بیایید سناریوی دیگری را در نظر بگیریم که در آن می‌خواهید عضلات خود را خم کنید و امتیاز دانش‌آموز (y) را پیش‌بینی کنید. روی تعداد ساعات مطالعه آنها (x). مدل رگرسیون خطی ممکن است به شکل زیر باشد:

import numpy as np
from sklearn.linear_model import LinearRegression

# Sample data
hours_studied = np.array([2, 4, 6, 8, 10])
scores = np.array([60, 80, 90, 100, 95])

# Reshape the data
hours_studied = hours_studied.reshape(-1, 1)

# Create a linear regression model
model = LinearRegression()

# Fit the model
model.fit(hours_studied, scores)

# Make predictions
predicted_scores = model.predict(hours_studied)

the model model.fit(hours_studied, scores) # Make predictions predicted_scores = model.predict(hours_studied)

تکنیک های رگرسیون خطی پیشرفته

شما اصول رگرسیون خطی را فتح کرده اید، اما این سفر ادامه دارد!

بیایید تکنیک‌های پیشرفته را برای باز کردن قدرت بیشتر و تنظیم دقیق مدل‌هایتان بررسی کنیم.

رام کردن بیش از حد مناسب – منظم سازی

کیکی را تصور کنید که در فراستینگ خفه شده است – چشمگیر، اما غیر عملی.

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

  • L1 (کند): برخی از ضرایب را به صفر کاهش می دهد و به طور موثر ویژگی های غیر مهم را حذف می کند.
  • L2 (ریج): همه ضرایب را کوچک می کند و از بزرگ شدن آنها جلوگیری می کند.

این تکنیک‌ها مدل‌های پیچیده را جریمه می‌کنند و آنها را به سمت راه‌حل‌های ساده‌تر سوق می‌دهند که بهتر به داده‌های جدید تعمیم می‌دهند.

مهندسی ویژگی – کشف جواهرات پنهان

همه ویژگی ها یکسان ایجاد نمی شوند. برخی ممکن است زائد باشند، در حالی که برخی دیگر روابط ارزشمند را پنهان می کنند. مهندسی ویژگی شامل:

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

با انتخاب دقیق و تغییر ویژگی ها، می توانید عملکرد مدل خود را به میزان قابل توجهی افزایش دهید.

مشکلات طبقه بندی شده – رمزگذاری و فراتر از آن

دنیا همیشه سیاه و سفید نیست. در مورد ویژگی هایی مانند “شهر” یا “نوع ملک” چطور؟ این متغیرهای طبقه بندی نیاز به رسیدگی ویژه دارند:

  • رمزگذاری تک داغ: ویژگی‌های باینری مجزا برای هر دسته ایجاد می‌کند و به مدل اجازه می‌دهد تأثیر فردی آنها را بیاموزد.
  • ویژگی های چند جمله ای: ویژگی‌های جدیدی را با تعامل دسته‌ها ایجاد می‌کند (به عنوان مثال، “شهر * نوع ملک”)، گرفتن روابط پیچیده.

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

انتخاب مدل – چگونه قهرمان خود را انتخاب کنید

با این زرادخانه تکنیک ها، ممکن است چندین مدل داشته باشید. چگونه بهترین را انتخاب می کنید؟ در نظر گرفتن:

  • پیچیدگی: معمولاً مدل‌های ساده‌تر ترجیح داده می‌شوند، زیرا کمتر مستعد قرار گرفتن بیش از حد هستند.
  • کارایی: معیارهایی مانند R-squared و cross-validation به مقایسه عینی مدل ها کمک می کند.

یافتن تعادل مناسب بین پیچیدگی و عملکرد برای ساختن مدل‌های موثر و قابل تعمیم بسیار مهم است.

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

برای کاوش بیشتر اسناد را بررسی کنید:

  • مستندات Scikit-Learn
  • آموزش تنسورفلو

نتیجه

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

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

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

بنابراین، به یادگیری ادامه دهید، به ساختن ادامه دهید و پتانسیل واقعی این ابزار قدرتمند را باز کنید.

اگر این را مفید یافتید با من تماس بگیرید روی لینکدین.