Multiple Regression là một thuật toán hồi quy tuyến tính đa biến trong Machine Learning , nó giống như Thuật toán Linear Regression.
Thuật toán Machine Learning Multiple Regression dùng để dự đoán một giá trị của biến phụ thuộc y dựa vào 2 hoặc nhiều biến độc lập x1, x2, x3…xn.
Dạng tổng quát của thuật toán Multiple Regression có phương trình như sau:
yi = w0 + w1xi1 + w1xi2 + w1xi3 + …. + w1xip = wTxi
Trong đó:
yi: là biến phụ thuộc.
xi1, xi2, xi3…xip: là các biến độc lập.
w0: là hằng số.
w1, w2, w3,wn: là các hệ số quan hệ.,
Gọi xi là một véc tơ đại diện cho quan sát thứ i, các giá trị cụ thể tương ứng là (xi1, xi2, xi3…xip).Ma trận X có kích thước n x p có mỗi hàng là một quan sát và mỗi cột là một biến. Giá trị xip là quan sát thứ i của biến thứ p.
Gọi ma trận mở rộng của ma trận X là ma trận có thêm véc tơ cột 1 được thêm vào ở cột đầu tiên.Khi đó các tập dữ liệu được biểu diễn như sau:
Bằng cách triển khai đại số tuyến tính ta tính được đạo hàm của hàm mất mát như sau:
Nghiệm của phương trình hồi quy là:
Trên đây là cách giải bài toán hồi quy tuyến tính đa thức trong toán học, vậy để áp dụng thuật toán này vào trong lập trình machine learning cho các bài toán trong thực tiễn như thế nào? Bài toán dưới đây chúng tôi sẽ giúp bạn hiểu được ứng dụng của nó.
Lập trình machine learning sử dụng thuật toán Multiple Regression.Bạn có thể sử dụng hàm LinearRegression() trong thư viện sklearn của Python để dự đoán cho bài toán hồi quy đa thức,nhiều biến.
Ví dụ: Bài toán về dự đoán lượng khí thải CO2 của ô tô theo trọng lượng (Weight) và kích thước dung tích năng lượng (Volume).
Giả sử chúng ta có danh sách dữ liệu của các ô tô trong file csv: cars.csv như sau:
Car | Model | Volume | Weight | CO2 |
---|---|---|---|---|
Toyota | Vios | 1000 | 780 | 99 |
Mitsubishi | Xpander | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | Cooper | 1500 | 1140 | 105 |
VW | Up! | 1000 | 929 | 105 |
Skoda | Fabia | 1400 | 1109 | 90 |
Mercedes | A-Class | 1500 | 1365 | 92 |
Ford | Fiesta | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Swift | 1300 | 990 | 101 |
Ford | Fiesta | 1000 | 1112 | 99 |
Honda | Civic | 1600 | 1252 | 94 |
Hundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Rapid | 1600 | 1119 | 104 |
Ford | Focus | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | Insignia | 2000 | 1428 | 99 |
Mercedes | C-Class | 2100 | 1365 | 99 |
Skoda | Octavia | 1600 | 1415 | 99 |
Volvo | S60 | 2000 | 1415 | 99 |
Mercedes | CLA | 1500 | 1465 | 102 |
Audi | A4 | 2000 | 1490 | 104 |
Audi | A6 | 2000 | 1725 | 114 |
Volvo | V70 | 1600 | 1523 | 109 |
BMW | 5 | 2000 | 1705 | 114 |
Mercedes | E-Class | 2100 | 1605 | 115 |
Volvo | XC70 | 2000 | 1746 | 117 |
Ford | B-Max | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
Yêu cầu của bài toán là dự đoán khí thải CO2 dựa vào trọng lượng (Weight) và kích thước dung tích năng lượng (Volume) của xe ô tô. Hãy dự đoán khí thải CO2 của ô tô có trọng lượng là 2300 kg và kích thước dung tích là 1300 cm3?
Như chúng ta nhận thấy đây là bài toán dự báo, dự đoán hồi quy đa thức, đa biến với biến các biến độc lập X là Weight , Volume và biến phụ thuộc y là CO2.
Chúng ta sẽ sử dụng hàm LinearRegression() trong thư viện sklearn để giải bài toán này.
Bước 1: Thu thập dữ liệu
Sử dụng thư viện pandas để thu tập dữ liệu từ file csv : cars.csv
import pandas as pd
df = pd.read_csv("cars.csv")
Bước 2: Phân tích dữ liệu
Lượng khí CO2 của ô tô thải ra phụ thuộc vào 2 yếu tố là trọng lượng (Weight) và kích thước (Volume).
Tập giá trị các biến độc lập X là trọng lượng (Weight) và kích thước dung tích (Volume).
X = df[['Weight','Volume']]
Giá trị biến phụ thuộc y chính là lượng khí CO2.
y = df['CO2']
Bước 3: Dự đoán
Sử dụng thuật toán Multiple Regression với hàm LinearRegression() trong thư viện sklearn để đào tạo và dự đoán lượng CO2.
from sklearn import linear_model
regr_model = linear_model.LinearRegression()
regr_model = regr_model.fit(X,y)
predictedCO2 = regr_model.predict([[2300, 1300]])
print(regr_model.intercept_)
Sau đây là toàn bộ Code Python: Thuật toán machine learning multiple regression sử dụng thư viện sklearn trong Python.
import pandas as pd
from sklearn import linear_model
# Thu thập dữ liệu từ file csv
df = pd.read_csv("cars.csv")
# Phân tích dữ liệu
X = df[['Weight','Volume']]
y = df['CO2']
# Sử dụng mô hình Linear Regression
regr_model = linear_model.LinearRegression()
regr_model = regr_model.fit(X,y)
# Dự đoán kết quả predict
predictedCO2 = regr_model.predict([[2300, 1300]])
print(predictedCO2 )
[107.48477193]
Như vậy chúng tôi đã dự đoán rằng một chiếc ô tô với trọng lượng 2300 kg và động cơ kích thước dung tích 1300 cm3 (1,3 lít), sẽ thải ra khoảng 107 gram CO2 cho mỗi km.
Thuật toán Multiple Regression được ứng dụng cho các bài toán dự đoán dựa vào nhiều tiêu chí.Ví dụ các bài toán dự báo giá nhà, dự báo lương, dự báo tài chính, dự báo phí taxi...