Trang chủ Cộng đồng Nhóm học tập Thư viện Vinh danh
Guest

Đăng nhập để truy cập tất cả tính năng

Bài toán hồi quy tuyến tính

Bài toán hồi quy tuyến tính

 Hồi quy tuyến tính

Hồi quy tuyến tính (Linear Regression) là một trong những thuật toán học có giám sát (Supervised Learning) được sử dụng phổ biến trong dự đoán giá trị liên tục. Thuật toán này xây dựng một mô hình để tìm mối quan hệ giữa một hoặc nhiều biến đầu vào (biến độc lập) với biến đầu ra (biến phụ thuộc) bằng cách sử dụng một đường thẳng tốt nhất. 

Hồi quy tuyến tính tìm cách biểu diễn mối quan hệ giữa biến đầu vào x biến đầu ra y bằng phương trình:

 

Trong đó:

  • là giá trị dự đoán (output).
  • , là các biến đầu vào (features).
  • là hằng số chặn (Intercept – Bias).
  • ​ là các hệ số hồi quy (Weights).
  • ϵ là sai số (Noise), thể hiện mức độ sai lệch giữa giá trị thực tế và giá trị dự đoán.

Có hai dạng chính của hồi quy tuyến tính hồi quy tuyến tính đơn giản (Simple Linear Regression) là chỉ có một biến đầu vào, và hồi quy tuyến tính đa biến (có nhiều biến đầu vào. Hồi quy tuyến tính là cần tìm các giá trị sao cho hàm mất mát MSE (Mean Squared Error) là nhỏ nhất.

Trong đó  là giá trị thực tế,  là giá trị dự đoán, N là số lượng dữ liệu. Để tối ưu các tham số w, thuật toán thường sử dụng là phương pháp bình phương tối thiểu (Least Squares Method) hoặc Gradient Descent.

Cho một bài toán như sau: Một công ty bất động sản muốn xây dựng mo hình dự đoán giá nhà dựa trên diện tích. Dữ liệu lịch sử thu thập được từ 10 că nhà như sau:

STT

Diện tích m2

Giá nhà (triệu đồng)

1

30

150

2

50

250

3

70

350

4

90

450

5

110

500

6

130

600

7

150

680

8

170

750

9

190

850

10

210

900

 

Chúng ta sẽ sử dụng scikit-learn để huấn luyện mô hình. Bài toán chia làm 5 bước chính.

Bước 1: Import thư viện

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from sklearn.linear_model import LinearRegression

from sklearn.model_selection import train_test_split

from sklearn.metrics import mean_squared_errorr2_score

 

Bước 2: Chuẩn bị dữ liệu

# Dữ liệu về diện tích và giá nhà

data = {

    ‘Diện tích (m2)’: [30507090110130150170190210],

    ‘Giá nhà (triệu đồng)’: [1.52.53.54.55.06.06.87.58.59.0]

}

# Chuyển thành DataFrame

df = pd.DataFrame(data)

# X là diện tích, y là giá nhà

X = df[[‘Diện tích (m2)’]]  # Chú ý: X phải là DataFrame

y = df[‘Giá nhà (triệu đồng)’]  # y là Series

# Chia dữ liệu thành tập huấn luyện (80%) và tập kiểm tra (20%)

X_trainX_testy_trainy_test = train_test_split(Xytest_size=0.2random_state=42)

 

Bước 3: Xây Dựng Mô Hình Hồi Quy Tuyến Tính

# Khởi tạo mô hình hồi quy tuyến tính

model = LinearRegression()

# Huấn luyện mô hình với tập dữ liệu huấn luyện

model.fit(X_trainy_train)

# Lấy hệ số hồi quy

w1 = model.coef_[0]  # Hệ số của diện tích (slope)

w0 = model.intercept_  # Hệ số chặn (intercept)

print(f’Phương trình hồi quy: y = {w0:.2f}{w1:.2f} * X’)

 

Bước 4: Dự Đoán Giá Nhà Và Đánh Giá Mô Hình

# Dự đoán trên tập kiểm tra

y_pred = model.predict(X_test)

# Tính sai số MSE (Mean Squared Error)

mse = mean_squared_error(y_testy_pred)

# Tính R² Score để đo độ chính xác

r2 = r2_score(y_testy_pred)

print(f’Mean Squared Error (MSE): {mse:.4f})

print(f’R² Score: {r2:.4f})

 

Bước 5: Vẽ Biểu Đồ

plt.scatter(Xycolor=’blue’label=’Dữ liệu thực tế’)

plt.plot(Xmodel.predict(X), color=’red’label=’Hồi quy tuyến tính’)

plt.xlabel(‘Diện tích (m2)’)

plt.ylabel(‘Giá nhà (triệu đồng)’)

plt.title(‘Hồi Quy Tuyến Tính Dự Đoán Giá Nhà’)

plt.legend()

plt.show()

 

Kết quả là:

Phương trình hồi quy: y = 0.54 + 0.04 * X

Mean Squared Error (MSE): 0.0154

R² Score: 0.9983

A graph with blue and red dots

AI-generated content may be incorrect.

Ảnh 4‑1: Kết quả vẽ đồ thị của quá trình huấn luyện

 

0
0
0 lượt chia sẻ
User

Bình luận

Đang tải bình luận...