การรวมโมเดล

การแข่งขัน Kaggle ด้วย Python

Yauhen Babakhin

Kaggle Grandmaster

การรวมโมเดล

การออกแบบ ensemble ของโซลูชันที่ชนะการแข่งขัน Kaggle

การแข่งขัน Kaggle ด้วย Python

Model blending

  • ปัญหา Regression
  • เทรนโมเดลสองตัวที่แตกต่างกัน: A และ B
  • ทำนายผลบนข้อมูลทดสอบ:
Test ID ค่าทำนายโมเดล A ค่าทำนายโมเดล B
1 1.2 1.5
2 0.1 0.4
3 5.4 7.2
การแข่งขัน Kaggle ด้วย Python

Model blending

 

Test ID ค่าทำนายโมเดล A ค่าทำนายโมเดล B ค่าเฉลี่ยเลขคณิต
1 1.2 1.5 1.35
2 0.1 0.4 0.25
3 5.4 7.2 6.30
การแข่งขัน Kaggle ด้วย Python

Model blending

 

ค่าเฉลี่ยเลขคณิต

$$arithmetic = \frac{1}{n}\sum_{i=1}^{n}{x_i}$$

ค่าเฉลี่ยเรขาคณิต

$$geometric = \Bigg({\prod_{i=1}^{n}{x_i}}\Bigg)^{\frac{1}{n}}$$

การแข่งขัน Kaggle ด้วย Python

Model stacking

 

  1. แบ่งข้อมูลเทรนออกเป็นสองส่วน
  2. เทรนหลายโมเดลบนส่วนที่ 1
  3. ทำนายผลบนส่วนที่ 2
  4. ทำนายผลบนข้อมูลทดสอบ
  5. เทรนโมเดลใหม่บนส่วนที่ 2 โดยใช้ค่าทำนายเป็น feature
  6. ทำนายผลบนข้อมูลทดสอบด้วยโมเดลระดับที่ 2
การแข่งขัน Kaggle ด้วย Python

ตัวอย่าง Stacking

Train ID feature_1 ... feature_N Target
1 0.55 ... 1.37 1
2 0.12 ... -2.50 0
3 0.65 ... 3.14 0
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0
Test IDs feature_1 ... feature_N Target
11 0.49 ... -2.32 ?
12 0.32 ... 1.15 ?
13 0.91 ... 0.81 ?
การแข่งขัน Kaggle ด้วย Python

ตัวอย่าง Stacking

Train ID feature_1 ... feature_N Target
1 0.55 ... 1.37 1
2 0.12 ... -2.50 0
3 0.65 ... 3.14 0

 

Train ID feature_1 ... feature_N Target
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0
การแข่งขัน Kaggle ด้วย Python

ตัวอย่าง Stacking

Train ID feature_1 ... feature_N Target
1 0.55 ... 1.37 1
2 0.12 ... -2.50 0
3 0.65 ... 3.14 0

 

Train ID feature_1 ... feature_N Target
4 0.10 ... 2.87 1
5 0.54 ... -0.10 0

เทรนโมเดล A, B, C บนส่วนที่ 1

การแข่งขัน Kaggle ด้วย Python

ตัวอย่าง Stacking

Train ID feature_1 ... feature_N Target A_pred B_pred C_pred
4 0.10 ... 2.87 1 0.71 0.52 0.98
5 0.54 ... -0.10 0 0.45 0.32 0.24

 

Test IDs feature_1 ... feature_N Target A_pred B_pred C_pred
11 0.49 ... -2.32 ? 0.62 0.45 0.81
12 0.32 ... 1.15 ? 0.31 0.52 0.41
13 0.91 ... 0.81 ? 0.74 0.55 0.92
การแข่งขัน Kaggle ด้วย Python

ตัวอย่าง Stacking

Train ID Target A_pred B_pred C_pred
4 1 0.71 0.52 0.98
5 0 0.45 0.32 0.24

 

Test IDs Target A_pred B_pred C_pred
11 ? 0.62 0.45 0.81
12 ? 0.31 0.52 0.41
13 ? 0.74 0.55 0.92
การแข่งขัน Kaggle ด้วย Python

ตัวอย่าง Stacking

Train ID Target A_pred B_pred C_pred
4 1 0.71 0.52 0.98
5 0 0.45 0.32 0.24

 

Test IDs Target A_pred B_pred C_pred
11 ? 0.62 0.45 0.81
12 ? 0.31 0.52 0.41
13 ? 0.74 0.55 0.92

เทรนโมเดลระดับที่ 2 บนส่วนที่ 2

การแข่งขัน Kaggle ด้วย Python

ตัวอย่าง Stacking

Train ID Target A_pred B_pred C_pred
4 1 0.71 0.52 0.98
5 0 0.45 0.32 0.24

 

Test IDs Target A_pred B_pred C_pred ค่าทำนาย Stacking
11 ? 0.62 0.45 0.81 0.73
12 ? 0.31 0.52 0.41 0.35
13 ? 0.74 0.55 0.92 0.88
การแข่งขัน Kaggle ด้วย Python

มาฝึกกันเถอะ!

การแข่งขัน Kaggle ด้วย Python

Preparing Video For Download...