Chapter 2 - Ep.1: LINEAR REGRESSION - hồi quy tuyến tính

 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...!  💚💙💛

 

Nhận xét

Đăng nhận xét