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

الانحدار هو طريقة لتحديد العلاقة بين متغير واحد ( ص ) ومتغيرات أخرى ( س ).

في الإحصاء ، يعد الانحدار الخطي نهجًا لنمذجة علاقة خطية بين y و x.

في الذكاء الاصطناعي ، يعد الانحدار الخطي خوارزمية تعلم آلي خاضعة للإشراف.

مؤامرة مبعثر

هذا هو مخطط التبعثر (من الفصل السابق):

4060801001201401606810121416
House Prices vs. SizeSquare MetersPrice in Millions

مثال

var xArray = [50,60,70,80,90,100,110,120,130,140,150];
var yArray = [7,8,8,9,9,9,10,11,14,14,15];

// Define Data
var data = [{
  x:xArray,
  y:yArray,
  mode: "markers"
}];

// Define Layout
var 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);

القيم التنبؤية

من البيانات المبعثرة أعلاه ، كيف يمكننا توقع الأسعار المستقبلية؟

  • استخدم الرسم البياني الخطي المرسوم باليد
  • نموذج علاقة خطية
  • نموذج الانحدار الخطي

الرسوم البيانية الخطية

هذا رسم بياني خطي يتنبأ بالأسعار بناءً على السعر الأدنى والأعلى:

4060801001201401606810121416
trace 0trace 1House Prices vs. SizeSquare MetersPrice in Millions

مثال

var xArray = [50,60,70,80,90,100,110,120,130,140,150];
var yArray = [7,8,8,9,9,9,9,10,11,14,14,15];

var data = [
  {x:xArray, y:yArray, mode:"markers"},
  {x:[50,150], y:[7,15], mode:"line"}
];

var 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);

من فصل سابق

يمكن كتابة الرسم البياني الخطي بالصيغة y = ax + b

أين:

  • y هو السعر الذي نريد توقعه
  • أ هو منحدر الخط
  • x هي قيم الإدخال
  • ب هو التقاطع

العلاقات الخطية

يتنبأ هذا النموذج بالأسعار باستخدام علاقة خطية بين السعر والحجم:

4060801001201401606810121416
trace 0trace 1House Prices vs. SizeSquare MetersPrice in Millions

مثال

var xArray = [50,60,70,80,90,100,110,120,130,140,150];
var yArray = [7,8,8,9,9,9,10,11,14,14,15];

// Calculate Slope
var xSum = xArray.reduce(function(a, b){return a + b;}, 0);
var ySum = yArray.reduce(function(a, b){return a + b;}, 0);
var slope = ySum / xSum;

// Generate values
var xValues = [];
var yValues = [];
for (var x = 50; x <= 150; x += 1) {
  xValues.push(x);
  yValues.push(x * slope);
}

في المثال أعلاه ، الميل هو متوسط ​​محسوب والتقاطع = 0.


باستخدام دالة الانحدار الخطي

يتنبأ هذا النموذج بالأسعار باستخدام دالة الانحدار الخطي:

4060801001201401606810121416
trace 0trace 1House Prices vs. SizeSquare MetersPrice in Millions

مثال

var xArray = [50,60,70,80,90,100,110,120,130,140,150];
var yArray = [7,8,8,9,9,9,10,11,14,14,15];

// Calculate Sums
var xSum=0, ySum=0 , xxSum=0, xySum=0;
var count = xArray.length;
for (var 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
var slope = (count * xySum - xSum * ySum) / (count * xxSum - xSum * xSum);
var intercept = (ySum / count) - (slope * xSum) / count;

// Generate values
var xValues = [];
var yValues = [];
for (var x = 50; x <= 150; x += 1) {
  xValues.push(x);
  yValues.push(x * slope + intercept);
}