LINEAR REGRESSION
1/ INTRO
Bài viết hôm nay chúng ta cùng nhau tìm hiểu nhanh về Hồi quy tuyến tính (Linear Regression). Đây là một thuật toán Học có giám sát (Supervised learning) cơ bản và khá đơn giản trong Machine Learning.
2/ VÍ DỤ
Cùng nhau xét qua ví dụ cụ thể sau để tiếp cận bài toán nhé.
Một miếng đất có diện tích x1 (km2) và năm xây dựng x2 sẽ có giá bán là bao nhiêu (triệu đồng)? Giả sử bạn có một bộ dữ liệu gồm 1000 căn nhà như sau:
Diện tích | Năm xây dựng | GIÁ BÁN |
100 | 2018 | 220.000.000 |
120 | 2019 | 260.000.000 |
80 | 2021 | 180.000.000 |
110 | 2017 | 250.000.000 |
185 | 2015 | 340.000.000 |
... | ... | ... |
Hàm số đơn giản nhất để mô tả mối quan hệ của các đại lượng đầu vào là:
f(x) = w1x1 + w2x2 + w3
+ Trong đó w1, w2 và w3 là hằng số (riêng w3 gọi là bias).
+ Các x1, x2 gọi là các features độc lập nhau.
Mối quan hệ như trên: y ~= f(x)y ~= f(x) là một mối quan hệ tuyến tính.
Bài toán yêu cầu tìm bộ số {w1, w2, w3}.
Mình sẽ minh họa dưới đây cho dễ hiểu:
Các điểm màu blue là các điểm nằm trong dữ liệu ban đầu của bạn.
Qua các điểm đó, Linear Regression sẽ tìm ra được bộ các giá trị
{w1, w2, w3} để vẽ ra được cái đường màu đỏ.
Rồi khi dữ liệu được đưa vào thì mô hình sẽ dựa vào đường màu đỏ đã tìm ra để dự đoán giá bán căn nhà đó.
Quá trình tìm ra đường màu đỏ là quá trình training, còn việc dự đoán sau đó gọi là quá trình predicting.
Trong quá trình thực hiện, bạn có thể chia bộ dữ liệu ra 2 phần: train và test
để đánh giá mô hình vừa làm.
Với python, bạn có thể biết được độ sai số của mô hình bằng hàm:
mean_squared_error(y_true, y_pred)
(với y_true là giá trị đúng và y_pred là giá trị mà mô hình bạn dự đoán ra)
3/ CODE:
# ĐỌC DỮ LIỆU VÀO
import pandas as pd
dataframe = pd.read_csv('data.csv')
dataframe
# PHÂN CHIA DỮ LIỆU LÀM 2 PHẦN TRAIN VÀ TEST (TỈ LỆ 8:2)
import sklearn
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(dataframe[['Dien Tich', 'Nam xay dung']], dataframe['Gia ban'], test_size = 0.2)
# IMPORT MODEL VÀ BẮT ĐẦU TRAIN
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(X_train, Y_train)
Y_pred = lr.predict(X_test) # đây là kết quả dự đoán được từ X_test
# HIỂN THỊ HAI KẾT QUẢ DỰ ĐOÁN VÀ THỰC ĐỂ SO SÁNH
import pandas as pd
result_table = pd.DataFrame(columns=['Giá trị thực', 'Dự đoán'])
result_table['Giá trị thực'] = Y_test
result_table['Dự đoán'] = Y_pred
result_table
# TÍNH ĐỘ LỆCH MEAN SQUARE ERROR (MSE) - càng nhỏ càng tốt
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(Y_test, Y_pred)
print('MSE = ', mse)
MSE = 9.47
4/ HẠN CHẾ CỦA LINEAR REGRESSION:
Thứ nhất,
Linear Regression rất nhạy cảm với nhiễu (sensitive to noise).
Vì thế, việc tiền xử lí dữ liệu để loại bỏ các điểm nhiễu là vô cùng cần thiết.
Thứ hai,
Linear Regression không biễu diễn được các mô hình phức tạp.
So với bài toán trên, thì những mô hình thực tế phức tạp hơn rất nhiều.
_______________________________________________________________
Mình xin kết thúc bài đầu tiên ở đây.
Bài viết này không giải thích quá chuyên sâu về mặt toán học cốt lõi của Linear Regression.
Mục đích của bài viết chỉ giúp người đọc có cái nhìn tổng quát nhất về Hồi quy tuyến tính mà thôi.
Mọi người không hiểu chỗ nào hay có đóng góp gì cứ bình luận ở dưới mình sẽ giải đáp hoặc cùng nhau học tập nha.
Cảm ơn mọi người rất nhiều...! 💚💙💛




Cảm ơn bạn ! Bài viết rất hữa ích
Trả lờiXóaCảm ơn ạ
XóaBài viết hay quá ạ chụt chut
Trả lờiXóachụt