Logo
تعلم الآلة (2026-2027) - الانحدار الخطي

في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.

تعلم الآلة، الأسبوع 3

الانحدار الخطي

تنبأ بسعر منزل بخط مستقيم: لائمه يدويا بطريقة المربعات الصغرى، ثم ابن نموذجا لعدد 5000 منزل حقيقي في scikit-learn.

الأهداف

  • شرح ما يتنبأ به الانحدار الخطي (linear regression)، والفرق بين الانحدار البسيط (simple) والانحدار المتعدد (multiple)
  • تعريف الباقي (residual) وخط المربعات الصغرى (least-squares line)، وحساب الميل (slope) والمقطع (intercept) يدويا
  • حساب MAE وMSE وRMSE وR² لخط ملائم
  • استكشاف مجموعة بيانات وتجهيزها باستخدام info وdescribe ومدرج تكراري (histogram) وخريطة حرارية للارتباط (correlation heatmap)
  • ملاءمة (fit) LinearRegression، وقراءة معاملاته (coefficients)، والتنبؤ يدويا بسعر منزل
  • تقييم النموذج على بيانات الاختبار وتطبيق الخطوات على مشروعك

الأسبوع 3 من الخطة

موقع الدرس من المقرر

  • الدفتر (notebook): Linear_Regression_Practice، وفيه أسعار 5000 منزل في الولايات المتحدة
  • سيناريو من الواقع: التنبؤ بأسعار المنازل (Predict House Pricing)
  • مرحلة المشروع (project milestone) هذا الأسبوع: استكشاف بيانات المشروع وتنظيفها (Project Data Exploration and Data Cleaning)

خطة الساعتين

الجزءما نفعلهالزمن
1الفكرة، والمربعات الصغرى، ومثال محلول يدويا35 دقيقة
2الدفتر: استكشاف بيانات المنازل وتجهيزها20 دقيقة
3الدفتر: ملاءمة النموذج، وقراءة المعاملات20 دقيقة
4التقييم على مجموعة الاختبار، ومشروعك15 دقيقة
5تمارين مع الإجابات، ثم الخلاصة30 دقيقة

الجزء 1

فكرة الانحدار الخطي

خط مستقيم عبر البيانات

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

الانحدار الخطي (Linear regression)
طريقة خطية لنمذجة العلاقة بين متغير تابع (dependent variable) عددي y ومتغير تفسيري (explanatory variable) واحد أو أكثر X.
  • متغير تفسيري واحد: الانحدار الخطي البسيط
  • أكثر من متغير واحد: الانحدار الخطي المتعدد
  • يلاءم عادة بطريقة المربعات الصغرى (least squares)

النموذج خط مستقيم

ŷ = b0 + b1 x
  • x: المدخل، مثل دخل المنطقة
  • ŷ ("y hat"): القيمة المتنبأ بها، مثل السعر
  • b₁: الميل، وهو مقدار تغير ŷ عندما تزيد x بمقدار 1
  • b₀: المقطع، وهو قيمة ŷ عند x = 0

البواقي: خطأ كل نقطة

e = y − ŷ
  • y هي القيمة الحقيقية، وŷ هي التنبؤ
  • النقطة الواقعة فوق الخط لها باق موجب، والواقعة تحته لها باق سالب
  • على الرسم، الباقي هو المسافة الرأسية من النقطة إلى الخط

المربعات الصغرى

SSE = ∑ (yi − ŷi)2
  • SSE: مجموع مربعات الأخطاء (sum of squared errors) على كل النقاط، وعددها n
  • خط المربعات الصغرى هو الخط الذي له أصغر SSE
  • التربيع يجعل كل خطأ موجبا ويعاقب الأخطاء الكبيرة أكثر
b1 = ∑ (xi − x̄)(yi − ȳ)∑ (xi − x̄)2
b0 = ȳ − b1 x̄

يدويا

مثال محلول: خمسة منازل حقيقية

صفوف من USA_Housing.csv. x: الدخل بوحدة 10,000 دولار، وy: السعر بوحدة 100,000 دولار، بعد التقريب

المنزلالدخلالسعر(x, y)
H1$50,016$497,368(5, 5)
H2$59,769$897,291(6, 9)
H3$69,529$995,137(7, 10)
H4$79,628$1,196,064(8, 12)
H5$89,548$1,403,803(9, 14)

الخطوة 1: المتوسطان

x̄ = 5 + 6 + 7 + 8 + 95 = 7
ȳ = 5 + 9 + 10 + 12 + 145 = 10

الخطوة 2: الانحرافات عن المتوسطين

المنزل(x − x̄, y − ȳ)حاصل الضرب(x − x̄)²
H1(-2, -5)104
H2(-1, -1)11
H3(0, 0)00
H4(1, 2)21
H5(2, 4)84

الخطوة 3: الميل والمقطع

b1 = 2110 = 2.1
b0 = 10 − 2.1 × 7 = −4.7

الخطوة 4: التنبؤات والبواقي

المنزلŷe = y − ŷe²
H15.8-0.80.64
H27.91.11.21
H310.00.00.00
H412.1-0.10.01
H514.2-0.20.04

الخطوة 5: هل هو حقا أفضل خط؟

الخطSSE
ŷ = −3 + 2x7.0
ŷ = −4 + 2x2.0
ŷ = −4.7 + 2.1x1.9
المنازل الخمسة، وخط المربعات الصغرى، والبواقي باللون الأحمر

الخطوة 6: التنبؤ لمنطقة جديدة

ŷ = −4.7 + 2.1 × 7.5 = 11.05

جرب بنفسك: المربعات الصغرى مباشرة

قياس خطأ الخط

MAE = 1n ∑ |ei|
MSE = 1n ∑ ei2
RMSE = √MSE
  • MAE، متوسط الخطأ المطلق (mean absolute error): متوسط حجم الخطأ، بوحدات y
  • MSE، متوسط مربع الخطأ (mean squared error): متوسط الخطأ المربع، بوحدات مربعة
  • RMSE، الجذر التربيعي لمتوسط مربع الخطأ (root mean squared error): يعود إلى وحدات y، والأخطاء الكبيرة فيه أثقل وزنا منها في MAE

مثال محلول: MAE وMSE وRMSE

MAE = 0.8 + 1.1 + 0 + 0.1 + 0.25 = 0.44
MSE = 1.905 = 0.38, RMSE = √0.38 = 0.6164

R²: هل الخط أفضل من المتوسط؟

R2 = 1 − SSESST, SST = ∑ (yi − ȳ)2
  • SST: قيمة SSE للخط الأفقي ŷ = ȳ، وهو أفضل تخمين دون أي خاصية
  • معامل التحديد (coefficient of determination) R² هو نسبة ما يزيله النموذج من هذا الخطأ: 1 ملاءمة تامة، و0 تعني أن النموذج ليس أفضل من المتوسط
SST = 25 + 1 + 0 + 4 + 16 = 46, R2 = 1 − 1.9046 = 0.9587

جرب بنفسك: ماذا يقيس R²

الجزء 2

استكشاف بيانات المنازل

الدفتر، ومرحلة المشروع لهذا الأسبوع

افتح الدفتر في Colab

text
https://colab.research.google.com/github/
tirthajyoti/Machine-Learning-with-Python/blob/
master/Regression/Linear_Regression_Practice.ipynb
اجمع الأسطر الثلاثة في عنوان واحد، أو اضغط رابط Colab في صفحة الدرس.

تحميل البيانات وفحصها

python
url = ("https://raw.githubusercontent.com/"
       "tirthajyoti/Machine-Learning-with-Python/"
       "master/Datasets/USA_Housing.csv")
df = pd.read_csv(url)
df.info(verbose=True)
  • 5000 صف، و7 أعمدة، وكلها 5000 non-null: لا توجد قيم مفقودة (missing values)
  • خمس خصائص عددية والهدف (target) Price
  • Address نص: النموذج الخطي لا يضرب إلا الأعداد، لذا يبقى خارج X

توزيع السعر

python
df['Price'].plot.hist(bins=25, figsize=(8,4))
  • تل واحد حول المتوسط البالغ نحو 1.23 مليون دولار
  • سعر 97 منزلا فقط أقل من 0.5 مليون دولار، وسعر 74 منزلا فقط أعلى من 2 مليون دولار
  • 1e6 أسفل المحور: أرقام التدريج بالملايين
مدرج تكراري لأسعار 5000 منزل في 25 فئة

الارتباطات مع السعر

python
df.corr(numeric_only=True)

sns.heatmap(df.corr(numeric_only=True),
            annot=True, linewidths=2)
خريطة حرارية للارتباط بين الأعمدة العددية الستة

قراءة صف السعر

الخاصيةالارتباط مع Price
Avg. Area Income0.640
Avg. Area House Age0.453
Area Population0.409
Avg. Area Number of Rooms0.336
Avg. Area Number of Bedrooms0.171

الجزء 3

ملاءمة النموذج

LinearRegression في scikit-learn

الخصائص، والهدف، والتقسيم

python
X = df[l_column[0:len_feature-2]]   # 5 features
y = df[l_column[len_feature-2]]     # Price

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=123)
يستورد الدفتر من sklearn.cross_validation، وهي وحدة لم تعد موجودة: استخدم sklearn.model_selection.

الملاءمة وقراءة المعاملات

python
lm = LinearRegression()
lm.fit(X_train, y_train)
print(lm.intercept_)

cdf = pd.DataFrame(data=lm.coef_,
    index=X_train.columns,
    columns=['Coefficients'])
الخاصيةالمعامل
الدخل21.597602
عمر المنزل165201.104954
الغرف119061.463868
غرف النوم3212.585606
السكان15.228121

قراءة المعامل

  • المعامل هو مقدار تغير ŷ عندما تزيد خاصيته وحدها بمقدار 1 وتبقى الخصائص الأخرى كما هي

مثال محلول: منزل اختبار واحد يدويا

الصف 2648، وهو منزل الاختبار الأول. السعر الحقيقي: 800,146.23 دولار

الخاصيةxb × x
الدخل63824.3945391,378,453.87
عمر المنزل4.991750824,642.62
الغرف5.003836595,764.04
غرف النوم4.0012,850.34
السكان40086.458749610,441.44

مثال محلول: أضف المقطع

ŷ = −2,631,028.90 + 3,422,152.31 = 791,123.41
e = 800,146.23 − 791,123.41 = 9,022.82

أي الخصائص أهم؟

يقسم الدفتر كل معامل على خطئه المعياري (standard error): والناتج هو إحصائية t (t-statistic)

الخاصيةإحصائية t
Avg. Area Income134.68
Avg. Area House Age95.91
Area Population89.64
Avg. Area Number of Rooms70.18
Avg. Area Number of Bedrooms2.33

الجزء 4

تقييم النموذج

التنبؤ بأسعار 1500 منزل اختبار

الفعلي مقابل المتنبأ به

python
predictions = lm.predict(X_test)

plt.scatter(x=y_test, y=predictions)
  • predictions: 1500 سعر، سعر واحد لكل منزل اختبار
  • النموذج المثالي يضع كل نقطة على الخط المائل بزاوية 45 درجة
  • تشكل النقاط شريطا ضيقا على امتداده، في المنازل الرخيصة والغالية على السواء
مخطط انتشار للأسعار الفعلية مقابل الأسعار المتنبأ بها لعدد 1500 منزل اختبار

فحص البواقي

مدرج تكراري لبواقي الاختبار مع منحنى كثافة
البواقي مرسومة مقابل الأسعار المتنبأ بها

مقاييس الخطأ

text
Mean absolute error (MAE): 81739.77482718184
Mean square error (MSE): 10489638335.804983
Root mean square error (RMSE): 102418.93543581179
R-squared value of predictions: 0.919
RMSE = √10,489,638,335.80 = 102,418.94

قراءة الأعداد

المقياسالقيمةالمعنى
MAE$81,740متوسط حجم الخطأ
RMSE$102,419الخطأ المعتاد، نحو 8% من متوسط السعر
R² على الاختبار0.919يفسر نحو 92% من تشتت الأسعار
R² على التدريب0.917الأداء على المنازل الجديدة جيد بقدر الأداء على المنازل التي رآها

قبل التمارين

الأخطاء الشائعة

  • تشغيل الاستدعاءات القديمة كما هي: cross_validation، وdf.corr() مع عمود نصي، وdistplot
  • قراءة ./Datasets/USA_Housing.csv في Colab
  • إبقاء العمود النصي Address في X
  • ترتيب الخصائص حسب حجم المعامل حين تختلف وحداتها
  • الاكتفاء بقيمة R² على التدريب
  • الوثوق بتنبؤ بعيد جدا خارج نطاق بيانات التدريب، مثل المقطع عند دخل 0

مشروع فريقك

مرحلة المشروع: استكشف بياناتك ونظفها

  1. افحص shape والأعمدة والأنواع باستخدام info()
  2. احسب عدد القيم المفقودة باستخدام isnull().sum()، ثم fillna أو dropna (الأسبوع 1)
  3. شغل describe() وابحث عن القيم المستحيلة
  4. ارسم الهدف في مدرج تكراري، وكل خاصية مقابله
  5. ارسم الخريطة الحرارية للارتباط باستخدام numeric_only=True
  6. احذف الأعمدة التي لا يستطيع النموذج استخدامها، مثل النص الحر أو المعرفات (IDs)

الجزء 5

التمارين: دورك

نحو 30 دقيقة، والإجابات بعد كل تمرين

نحو 10 دقائق

التمرين 1: ملاءمة خط يدويا

المنطقةx (الدخل، 10,000 دولار)y (السعر، 100,000 دولار)
A146
A257
A3610
A4711
A5811
  • احسب x̄ وȳ والميل b₁ والمقطع b₀
  • احسب البواقي وSSE وMSE وRMSE وMAE وR²
  • تنبأ بالسعر لدخل قدره 65,000 دولار

الإجابات

التمرين 1: الإجابة، الخط

b1 = 6 + 2 + 0 + 2 + 44 + 1 + 0 + 1 + 4 = 1410 = 1.4
b0 = ȳ − b1 x̄ = 9 − 1.4 × 6 = 0.6

الإجابات

التمرين 1: الإجابة، الخطأ

المنطقةŷee²
A16.2-0.20.04
A27.6-0.60.36
A39.01.01.00
A410.40.60.36
A511.8-0.80.64
SSE = 2.40, MSE = 0.48, RMSE = 0.6928
MAE = 0.64, SST = 22, R2 = 1 − 2.4022 = 0.8909

نحو 5 دقائق

التمرين 2: منزل اختبار ثان

الصف 2456، والسعر الحقيقي 707,345.06 دولار، والمقطع -2,631,028.90. تنبأ بالسعر، ثم أوجد الباقي.

الخاصيةxالمعامل b
الدخل67041.96766121.597602
عمر المنزل6.021458165201.104954
الغرف5.346830119061.463868
غرف النوم3.393212.585606
السكان15633.09904815.228121
ŷ = −2,631,028.90 + 3,328,252.05 = 697,223.15

نحو 5 دقائق

التمرين 3: قراءة المعاملات

  • منطقتان تختلفان فقط في عمر المنازل بفارق 2، أي بسنتين. ما الفرق بين التنبؤين؟
  • وإذا اختلفتا فقط في الدخل بفارق 5,000 دولار، فما الفرق الآن؟
  • لماذا لا يعني معامل غرف النوم، 3212.59، أن غرف النوم أهم من الدخل؟
2 × 165,201.10 ≈ 330,402, 5,000 × 21.597602 ≈ 107,988

نحو 10 دقائق

التمرين 4: في Colab

  1. شغل الدفتر مع إصلاحات اليوم الثلاثة، حتى مقاييس الخطأ
  2. لائم lm1 على X_train[['Avg. Area Income']] فقط: اطبع المقطع، والمعامل، وقيم R² وMAE وRMSE على الاختبار
  3. لائم نموذجا على كل الخصائص عدا Avg. Area Number of Bedrooms (drop(..., axis=1)) واطبع قيمة R² على الاختبار
  4. قارن قيم R² الثلاث: ماذا تقول عن الخصائص؟

الإجابات

التمرين 4: الإجابة

النموذجR² على الاختبارRMSE على الاختبار
الخصائص الخمس كلها0.919102,418.94
الدخل فقط0.417275,407.48
كل الخصائص عدا غرف النوم0.920102,282.54

الخلاصة

  1. يتنبأ الانحدار الخطي بعدد على أنه b0 مضافا إليه مجموع موزون للخصائص
  2. الباقي هو y − ŷ؛ والمربعات الصغرى تجعل مجموع مربعات البواقي أصغر ما يمكن
  3. استكشف البيانات ونظفها أولا: الأنواع، والقيم المفقودة، والأعمدة النصية، والارتباطات
  4. المعامل هو مقدار التغير لكل وحدة من خاصيته: رتب الخصائص حسب إحصائية t
  5. احكم على النموذج بمجموعة الاختبار باستخدام MAE وRMSE وR² ورسوم البواقي

افتح هذا الدرس

Mahmoud Abasالانحدار الخطي