การถดถอย

Machine Learning with PySpark

Andrew Collier

Data Scientist, Fathom Data

การสิ้นเปลืองเชื้อเพลิงเทียบกับมวล: scatter

กราฟ scatter แสดงความสัมพันธ์ระหว่างการสิ้นเปลืองเชื้อเพลิงกับมวล

Machine Learning with PySpark

การสิ้นเปลืองเชื้อเพลิงเทียบกับมวล: เส้นฟิต

กราฟ scatter แสดงการสิ้นเปลืองเชื้อเพลิงเทียบกับมวล พร้อมเส้น linear fit

Machine Learning with PySpark

การสิ้นเปลืองเชื้อเพลิงเทียบกับมวล: เส้นฟิตทางเลือก

กราฟ scatter แสดงการสิ้นเปลืองเชื้อเพลิงเทียบกับมวล พร้อมเส้นฟิตหลักและทางเลือกอื่น

Machine Learning with PySpark

การสิ้นเปลืองเชื้อเพลิงเทียบกับมวล: ค่าความคลาดเคลื่อน

กราฟ scatter แสดงการสิ้นเปลืองเชื้อเพลิงเทียบกับมวล พร้อมเส้นฟิตและค่าความคลาดเคลื่อน

Machine Learning with PySpark

ฟังก์ชัน loss

 

 

ฟังก์ชัน loss แบบ Mean Square Error

MSE = "Mean Squared Error"

Machine Learning with PySpark

ฟังก์ชัน loss: ค่าที่สังเกตได้

 

 

ฟังก์ชัน loss แบบ Mean Square Error

$y_i$ — ค่าที่สังเกตได้

Machine Learning with PySpark

ฟังก์ชัน loss: ค่าจากโมเดล

 

 

ฟังก์ชัน loss แบบ Mean Square Error

$y_i$ — ค่าที่สังเกตได้

$\hat{y_i}$ — ค่าจากโมเดล

Machine Learning with PySpark

ฟังก์ชัน loss: ค่าเฉลี่ย

 

 

ฟังก์ชัน loss แบบ Mean Square Error

$y_i$ — ค่าที่สังเกตได้

$\hat{y_i}$ — ค่าจากโมเดล

Machine Learning with PySpark

รวม predictor

พยากรณ์ consumption โดยใช้ mass, cyl และ type_dummy

รวม predictor ทั้งหมดเข้าเป็นคอลัมน์เดียว

+------+---+-------------+----------------------------+-----------+
|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 with PySpark

สร้างโมเดล regression

from pyspark.ml.regression import LinearRegression

regression = LinearRegression(labelCol='consumption')

ฟิตกับ cars_train (ข้อมูล training)

regression = regression.fit(cars_train)

พยากรณ์บน cars_test (ข้อมูล testing)

predictions = regression.transform(cars_test)
Machine Learning with PySpark

ตรวจสอบค่าพยากรณ์

+-----------+------------------+
|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  |
+-----------+------------------+

กราฟ scatter แสดงค่าพยากรณ์เทียบกับค่าจริง

Machine Learning with PySpark

คำนวณ RMSE

from pyspark.ml.evaluation import RegressionEvaluator

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

RegressionEvaluator คำนวณเมตริกต่อไปนี้ได้ด้วย

  • mae (Mean Absolute Error)
  • r2 ($R^2$)
  • mse (Mean Squared Error)
Machine Learning with PySpark

การสิ้นเปลืองเชื้อเพลิงเทียบกับมวล: intercept

กราฟแสดง intercept ของโมเดล

Machine Learning with PySpark

ตรวจสอบ intercept

regression.intercept
4.9450616833727095

นี่คือการสิ้นเปลืองเชื้อเพลิงในกรณี (สมมติ) ที่:

  • mass = 0
  • cyl = 0 และ
  • ประเภทรถคือ 'Van'
Machine Learning with PySpark

การสิ้นเปลืองเชื้อเพลิงเทียบกับมวล: slope

กราฟแสดง slope ของโมเดล

Machine Learning with PySpark

ตรวจสอบค่าสัมประสิทธิ์

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 with PySpark

การถดถอยสำหรับการพยากรณ์ค่าตัวเลข

Machine Learning with PySpark

Preparing Video For Download...