الانحدارات Regression في تعلم الآلة
يُستخدم الانحدار Regression لفهم العلاقة بين متغير نريد التنبؤ به
ومتغيرات أخرى تؤثر فيه. وتوضح الصفحة الأصلية أن الانحدار هو طريقة
لتحديد العلاقة بين متغير واحد y ومتغيرات أخرى x.
أما Linear Regression فهو أسلوب لنمذجة علاقة خطية
بين x وy، وفي تعلم الآلة يُعد
خوارزمية تعلم موجّه.
ما هو Regression؟
الفكرة الأساسية في الانحدار هي أننا نملك بيانات سابقة، ونريد استخدامها
لفهم النمط الموجود بينها، ثم الاستفادة من هذا النمط في
التنبؤ بقيم جديدة.
فإذا كانت لدينا بيانات تربط بين مساحة المنزل وسعره مثلًا،
فإن الانحدار يساعدنا على بناء علاقة رياضية تقريبية بين
المساحة والسعر، بحيث نستطيع لاحقًا تقدير سعر منزل جديد
اعتمادًا على مساحته.
ما هو Linear Regression؟
الانحدار الخطي هو أبسط أنواع الانحدار، ويعتمد على افتراض أن العلاقة
بين المدخلات والمخرجات يمكن تقريبها بخط مستقيم.
في الإحصاء، يُستخدم الانحدار الخطي لنمذجة العلاقة الخطية بين
x وy. أما في تعلم الآلة،
فيُستخدم كنموذج يتعلم من البيانات كي ينتج تنبؤات مستقبلية.
الانطلاق من Scatter Plot
تبدأ الصفحة من نفس المخطط المبعثر Scatter Plot
المستخدم في الفصل السابق. هذا الرسم يحتوي على مجموعة نقاط تمثل
العلاقة بين:
- مساحة المنزل على المحور الأفقي
- سعر المنزل على المحور الرأسي
ومن خلال هذه النقاط يظهر أن هناك اتجاهًا عامًا:
كلما زادت المساحة، ارتفع السعر غالبًا.
وهنا يظهر السؤال المهم:
كيف يمكننا استخدام هذه النقاط للتنبؤ بأسعار مستقبلية؟
التنبؤ بالقيم المستقبلية
تعرض الصفحة 3 طرق أساسية للتفكير في التنبؤ اعتمادًا على البيانات المبعثرة:
- رسم خط يدويًا يمر بين النقاط
- نمذجة علاقة خطية
- استخدام Linear Regression
هذه الطرق تمثل درجات مختلفة من البساطة والدقة.
فالخط اليدوي قد يعطينا تقديرًا بصريًا سريعًا،
لكن Linear Regression يقدم طريقة أوضح وأكثر منهجية.
الرسم الخطي اليدوي
أول مثال في الصفحة يرسم خطًا بسيطًا اعتمادًا على
أقل سعر وأعلى سعر.
أي أنه لا يحسب أفضل خط إحصائيًا، بل يستخدم خطًا مباشرًا
يعطي تصورًا مبدئيًا لكيف يمكن أن يبدو التنبؤ.
const xArray = [50,60,70,80,90,100,110,120,130,140,150];
const yArray = [7,8,8,9,9,9,9,10,11,14,14,15];
const data = [
{x:xArray, y:yArray, mode:\"markers\"},
{x:[50,150], y:[7,15], mode:\"line\"}
];
const layout = {
xaxis: {range: [40, 160], title: \"Square Meters\"},
yaxis: {range: [5, 16], title: \"Price in Millions\"},
title: \"House Prices vs. Size\"
};
Plotly.newPlot(\"myPlot\", data, layout);
هذا المثال مفيد بصريًا، لكنه لا يعني بالضرورة أن الخط المرسوم
هو أفضل تمثيل رياضي للعلاقة بين البيانات.
نمذجة علاقة خطية بسيطة
في المثال التالي، تنتقل الصفحة إلى خطوة أكثر تنظيمًا،
حيث يتم حساب ميل تقريبي من خلال متوسط القيم،
ثم يتم استخدامه لتوليد خط مستقيم.
في هذا المثال يكون:
- الميل slope ناتجًا عن حساب متوسط تقريبي
- التقاطع intercept مساويًا للصفر
const xArray = [50,60,70,80,90,100,110,120,130,140,150];
const yArray = [7,8,8,9,9,9,10,11,14,14,15];
// Calculate Slope
let xSum = xArray.reduce(function(a, b){return a + b;}, 0);
let ySum = yArray.reduce(function(a, b){return a + b;}, 0);
let slope = ySum / xSum;
// Generate values
const xValues = [];
const yValues = [];
for (let x = 50; x <= 150; x += 1) {
xValues.push(x);
yValues.push(x * slope);
}
هذا يعطينا خطًا أفضل من التخمين البصري البحت،
لكنه ما يزال ليس الصيغة الأدق لحساب أفضل خط يناسب جميع النقاط.
استخدام دالة Linear Regression
بعد ذلك تعرض الصفحة الطريقة الأقوى، وهي
استخدام دالة Linear Regression
لحساب كل من:
- الميل slope
- التقاطع intercept
وهنا لا يتم الاعتماد على مجرد متوسطات بسيطة،
بل يتم حساب المجاميع اللازمة لاستخراج خط أكثر دقة
في تمثيل العلاقة بين القيم.
const xArray = [50,60,70,80,90,100,110,120,130,140,150];
const yArray = [7,8,8,9,9,9,10,11,14,14,15];
// Calculate Sums
let xSum=0, ySum=0 , xxSum=0, xySum=0;
let count = xArray.length;
for (let i = 0, len = count; i < count; i++) {
xSum += xArray[i];
ySum += yArray[i];
xxSum += xArray[i] * xArray[i];
xySum += xArray[i] * yArray[i];
}
// Calculate slope and intercept
let slope = (count * xySum - xSum * ySum) / (count * xxSum - xSum * xSum);
let intercept = (ySum / count) - (slope * xSum) / count;
// Generate values
const xValues = [];
const yValues = [];
for (let x = 50; x <= 150; x += 1) {
xValues.push(x);
yValues.push(x * slope + intercept);
}
هذه الطريقة أقرب إلى المعالجة الإحصائية الصحيحة،
لأنها تحاول إيجاد الخط الذي يناسب البيانات بصورة أفضل
بدلًا من رسم خط يدوي أو استخدام ميل تقريبي فقط.
لماذا نستخدم Linear Regression؟
تكمن قيمة الانحدار الخطي في أنه يحول البيانات التاريخية
إلى علاقة قابلة للاستخدام.
وبمجرد حساب الميل والتقاطع، يصبح بالإمكان إدخال قيمة جديدة
لـ x والحصول على قيمة متوقعة لـ y.
وهذا يجعله مناسبًا في حالات كثيرة مثل:
- التنبؤ بالأسعار
- تقدير التكاليف
- تحليل العلاقة بين عاملين
- بناء نماذج تنبؤية بسيطة وواضحة
متى لا يكون Linear Regression مناسبًا؟
توضح الصفحة في نهايتها نقطة مهمة جدًا:
إذا كانت البيانات المبعثرة لا تتناسب مع
خط مستقيم، فقد لا يكون الانحدار الخطي هو الخيار الأفضل.
في هذه الحالة قد تكون البيانات أقرب إلى
Polynomial Regression،
أي انحدار يعتمد على منحنى بدلًا من خط مستقيم.
بمعنى آخر: ليس كل نمط في البيانات خطيًا،
وأحيانًا نحتاج إلى نموذج أكثر مرونة ليمثل العلاقة بشكل أفضل.
Polynomial Regression
تشير الصفحة إلى أن Polynomial Regression
يستخدم أيضًا العلاقة بين المتغيرين x وy،
لكن بدلًا من رسم خط مستقيم، يحاول إيجاد أفضل
منحنى يمر عبر النقاط أو بالقرب منها.
وهذا مهم لأن بعض البيانات تتحرك بشكل منحني أو غير منتظم،
وفي هذه الحالات قد يكون النموذج متعدد الحدود
أكثر دقة من الانحدار الخطي.
الخلاصة
يوضح هذا الدرس أن Regression هو أسلوب لفهم العلاقة
بين المتغيرات واستخدامها في التنبؤ، وأن
Linear Regression هو أبسط صورة لذلك
حين تكون العلاقة تقريبًا على شكل خط مستقيم.
كما يبدأ الدرس من Scatter Plot، ثم يمر عبر
الرسم اليدوي، والعلاقة الخطية البسيطة، ثم
دالة Linear Regression الأكثر دقة، قبل أن يوضح
أن بعض البيانات قد تحتاج إلى
Polynomial Regression
إذا لم يناسبها خط مستقيم.
