Hồi quy tuyến tính
Hồi quy là một phương pháp để xác định mối quan hệ giữa một biến ( y ) và các biến khác ( x ).
Trong thống kê, Hồi quy tuyến tính là một cách tiếp cận để mô hình hóa mối quan hệ tuyến tính giữa y và x.
Trong Machine Learning, hồi quy tuyến tính là một thuật toán học máy có giám sát.
Biểu đồ phân tán
Đây là biểu đồ phân tán (từ chương trước):
Ví dụ
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];
// Define Data
const data = [{
x:xArray,
y:yArray,
mode: "markers"
}];
// Define Layout
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);
Hãy tự mình thử »Dự đoán giá trị
Từ dữ liệu rải rác ở trên, làm thế nào chúng ta có thể dự đoán giá trong tương lai?
- Sử dụng đồ thị tuyến tính vẽ tay
- Mô hình hóa mối quan hệ tuyến tính
- Mô hình hồi quy tuyến tính
Đồ thị tuyến tính
Đây là biểu đồ tuyến tính dự đoán giá dựa trên mức giá thấp nhất và cao nhất:
Ví dụ
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);
Hãy tự mình thử »Từ một chương trước
Đồ thị tuyến tính có thể được viết dưới dạng y = ax + b
Ở đâu:
- y là mức giá chúng tôi muốn dự đoán
- a là độ dốc của đường
- x là giá trị đầu vào
- b là giao điểm
Mối quan hệ tuyến tính
Mô hình này dự đoán giá bằng mối quan hệ tuyến tính giữa giá và kích thước:
Ví dụ
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);
}
Hãy tự mình thử »Trong ví dụ trên, độ dốc là giá trị trung bình được tính toán và điểm chặn = 0.
Sử dụng hàm hồi quy tuyến tính
Mô hình này dự đoán giá bằng hàm hồi quy tuyến tính:
Ví dụ
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);
}
Hãy tự mình thử »Hồi quy đa thức
Nếu các điểm dữ liệu phân tán không phù hợp với hồi quy tuyến tính (một đường thẳng xuyên qua các điểm), thì dữ liệu có thể phù hợp với hồi quy đa thức.
Hồi quy đa thức, giống như hồi quy tuyến tính, sử dụng mối quan hệ giữa các biến x và y để tìm ra cách tốt nhất để vẽ một đường thẳng qua các điểm dữ liệu.