Hồi quy

Machine Learning với PySpark

Andrew Collier

Data Scientist, Fathom Data

Tiêu thụ vs khối lượng: phân tán

Biểu đồ phân tán tiêu thụ nhiên liệu theo khối lượng

Machine Learning với PySpark

Tiêu thụ vs khối lượng: đường khớp

Biểu đồ phân tán tiêu thụ nhiên liệu theo khối lượng với đường khớp tuyến tính

Machine Learning với PySpark

Tiêu thụ vs khối lượng: khớp thay thế

Biểu đồ phân tán tiêu thụ theo khối lượng với các đường khớp thay thế

Machine Learning với PySpark

Tiêu thụ vs khối lượng: phần dư

Biểu đồ phân tán tiêu thụ theo khối lượng với đường khớp và phần dư

Machine Learning với PySpark

Hàm mất mát

 

 

Hàm mất mát MSE

MSE = "Mean Squared Error"

Machine Learning với PySpark

Hàm mất mát: Giá trị quan sát

 

 

Hàm mất mát MSE

$y_i$ — giá trị quan sát

Machine Learning với PySpark

Hàm mất mát: Giá trị mô hình

 

 

Hàm mất mát MSE

$y_i$ — giá trị quan sát

$\hat{y_i}$ — giá trị mô hình

Machine Learning với PySpark

Hàm mất mát: Trung bình

 

 

Hàm mất mát MSE

$y_i$ — giá trị quan sát

$\hat{y_i}$ — giá trị mô hình

Machine Learning với PySpark

Ghép các biến dự báo

Dự đoán consumption bằng mass, cyltype_dummy.

Gộp các biến dự báo vào một cột.

+------+---+-------------+----------------------------+-----------+
|mass  |cyl|type_dummy   |features                    |consumption|
+------+---+-------------+----------------------------+-----------+
|1451.0|6  |(5,[0],[1.0])|(7,[0,1,2],[1451.0,6.0,1.0])|9.05       |
|1129.0|4  |(5,[2],[1.0])|(7,[0,1,4],[1129.0,4.0,1.0])|6.53       |
|1399.0|4  |(5,[2],[1.0])|(7,[0,1,4],[1399.0,4.0,1.0])|7.84       |
|1147.0|4  |(5,[1],[1.0])|(7,[0,1,3],[1147.0,4.0,1.0])|7.84       |
|1111.0|4  |(5,[3],[1.0])|(7,[0,1,5],[1111.0,4.0,1.0])|9.05       |
+------+---+-------------+----------------------------+-----------+
Machine Learning với PySpark

Xây dựng mô hình hồi quy

from pyspark.ml.regression import LinearRegression

regression = LinearRegression(labelCol='consumption')

Huấn luyện trên cars_train (tập huấn luyện).

regression = regression.fit(cars_train)

Dự đoán trên cars_test (tập kiểm tra).

predictions = regression.transform(cars_test)
Machine Learning với PySpark

Xem xét dự đoán

+-----------+------------------+
|consumption|prediction        |
+-----------+------------------+
|7.84       |8.92699470743403  |
|9.41       |9.379295891451353 |
|8.11       |7.23487264538364  |
|9.05       |9.409860194333735 |
|7.84       |7.059190923328711 |
|7.84       |7.785909738591766 |
|7.59       |8.129959405168547 |
|5.11       |6.836843743852942 |
|8.11       |7.17173702652015  |
+-----------+------------------+

Biểu đồ phân tán dự đoán so với thực tế

Machine Learning với PySpark

Tính RMSE

from pyspark.ml.evaluation import RegressionEvaluator

# Tính RMSE (Root Mean Squared Error)
RegressionEvaluator(labelCol='consumption').evaluate(predictions)
0.708699086182001

RegressionEvaluator cũng tính được:

  • mae (Mean Absolute Error)
  • r2 ($R^2$)
  • mse (Mean Squared Error).
Machine Learning với PySpark

Tiêu thụ vs khối lượng: hệ số chặn

Biểu đồ thể hiện hệ số chặn của mô hình

Machine Learning với PySpark

Xem hệ số chặn

regression.intercept
4.9450616833727095

Đây là mức tiêu thụ nhiên liệu trong trường hợp (giả định):

  • mass = 0
  • cyl = 0 và
  • loại xe là 'Van'.
Machine Learning với PySpark

Tiêu thụ vs khối lượng: độ dốc

Biểu đồ thể hiện độ dốc của mô hình

Machine Learning với PySpark

Xem hệ số

regression.coefficients
DenseVector([0.0027, 0.1897, -1.309, -1.7933, -1.3594, -1.2917, -1.9693])
mass        0.0027
cyl         0.1897

Midsize    -1.3090
Small      -1.7933
Compact    -1.3594
Sporty     -1.2917
Large      -1.9693
Machine Learning với PySpark

Hồi quy cho dự đoán số

Machine Learning với PySpark

Preparing Video For Download...