กำลังสองน้อยที่สุดบางส่วนใน r (ทีละขั้นตอน)


ปัญหาที่พบบ่อยที่สุดประการหนึ่งที่คุณจะพบในการเรียนรู้ของเครื่องคือ ความเป็นหลายส่วน สิ่งนี้เกิดขึ้นเมื่อตัวแปรทำนายตั้งแต่สองตัวขึ้นไปในชุดข้อมูลมีความสัมพันธ์กันสูง

เมื่อสิ่งนี้เกิดขึ้น แบบจำลองอาจพอดีกับชุดข้อมูลการฝึกได้ดี แต่อาจทำงานได้ไม่ดีกับชุดข้อมูลใหม่ที่ไม่เคยเห็นมาก่อน เนื่องจาก เกิน ชุดข้อมูลการฝึก ชุดฝึกซ้อม

วิธีหนึ่งในการแก้ไขปัญหานี้คือการใช้วิธีที่เรียกว่า กำลังสองน้อยที่สุดบางส่วน ซึ่งได้ผลดังนี้:

  • สร้างมาตรฐานให้กับตัวแปรทำนายและการตอบสนอง
  • คำนวณชุดค่าผสมเชิงเส้น M (เรียกว่า “ส่วนประกอบ PLS”) ของ ตัวแปรทำนายดั้งเดิม p ที่อธิบายการเปลี่ยนแปลงจำนวนมากในตัวแปรตอบสนองและตัวแปรทำนาย
  • ใช้วิธีกำลังสองน้อยที่สุดเพื่อให้พอดีกับแบบจำลองการถดถอยเชิงเส้นโดยใช้ส่วนประกอบ PLS เป็นตัวทำนาย
  • ใช้ การตรวจสอบข้าม k-fold เพื่อค้นหาจำนวนส่วนประกอบ PLS ที่เหมาะสมที่สุดเพื่อเก็บไว้ในโมเดล

บทช่วยสอนนี้ให้ตัวอย่างทีละขั้นตอนของวิธีดำเนินการกำลังสองน้อยที่สุดบางส่วนใน R

ขั้นตอนที่ 1: โหลดแพ็คเกจที่จำเป็น

วิธีที่ง่ายที่สุดในการหากำลังสองน้อยที่สุดบางส่วนใน R คือการใช้ฟังก์ชันในแพ็คเกจ pls

 #install pls package (if not already installed)
install.packages(" pls ")

load pls package
library(pls)

ขั้นตอนที่ 2: ปรับโมเดลกำลังสองน้อยที่สุดบางส่วนให้พอดี

สำหรับตัวอย่างนี้ เราจะใช้ชุดข้อมูล R ในตัวที่เรียกว่า mtcars ซึ่งมีข้อมูลเกี่ยวกับรถยนต์ประเภทต่างๆ:

 #view first six rows of mtcars dataset
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

สำหรับตัวอย่างนี้ เราจะปรับโมเดลกำลังสองน้อยที่สุดบางส่วน (PLS) โดยใช้ hp เป็น ตัวแปรตอบสนอง และตัวแปรต่อไปนี้เป็นตัวแปรทำนาย:

  • mpg
  • แสดง
  • อึ
  • น้ำหนัก
  • คิววินาที

รหัสต่อไปนี้แสดงวิธีปรับโมเดล PLS ให้พอดีกับข้อมูลนี้ สังเกตข้อโต้แย้งต่อไปนี้:

  • scale=TRUE : สิ่งนี้จะบอก R ว่าตัวแปรแต่ละตัวในชุดข้อมูลควรได้รับการปรับขนาดให้มีค่าเฉลี่ย 0 และค่าเบี่ยงเบนมาตรฐานเป็น 1 สิ่งนี้ทำให้แน่ใจได้ว่าไม่มีตัวแปรตัวทำนายใดที่มีอิทธิพลมากเกินไปในแบบจำลองหากวัดในหน่วยที่แตกต่างกัน
  • validation=”CV” : สิ่งนี้จะบอก R ให้ใช้ การตรวจสอบข้าม k-fold เพื่อประเมินประสิทธิภาพของโมเดล โปรดทราบว่าสิ่งนี้ใช้ k=10 เท่าเป็นค่าเริ่มต้น โปรดทราบว่าคุณสามารถระบุ “LOOCV” แทนเพื่อทำการ ตรวจสอบข้ามแบบ Leave-One-Out
 #make this example reproducible
set.seed(1)

#fit PCR model
model <- plsr(hp~mpg+disp+drat+wt+qsec, data=mtcars, scale= TRUE , validation=" CV ")

ขั้นตอนที่ 3: เลือกจำนวนส่วนประกอบ PLS

เมื่อเราติดตั้งโมเดลแล้ว เราจำเป็นต้องกำหนดจำนวนส่วนประกอบ PLS ที่จะเก็บ

ในการดำเนินการนี้ เพียงดูที่ค่าความคลาดเคลื่อนกำลังสองเฉลี่ยของรูทการทดสอบ (ทดสอบ RMSE) ที่คำนวณโดยการตรวจสอบความถูกต้องของ k-cross:

 #view summary of model fitting
summary(model)

Data: 
	Y dimension: 32 1
Fit method: kernelpls
Number of components considered: 5

VALIDATION: RMSEP
Cross-validated using 10 random segments.
       (Intercept) 1 comp 2 comps 3 comps 4 comps 5 comps
CV 69.66 40.57 35.48 36.22 36.74 36.67
adjCV 69.66 40.41 35.12 35.80 36.27 36.20

TRAINING: % variance explained
    1 comp 2 comps 3 comps 4 comps 5 comps
X 68.66 89.27 95.82 97.94 100.00
hp 71.84 81.74 82.00 82.02 82.03

ผลลัพธ์มีตารางที่น่าสนใจสองตาราง:

1. การตรวจสอบความถูกต้อง: RMSEP

ตารางนี้บอกเราถึงการทดสอบ RMSE ที่คำนวณโดยการตรวจสอบข้าม k-fold เราสามารถเห็นสิ่งต่อไปนี้:

  • หากเราใช้เฉพาะคำดั้งเดิมในโมเดล RMSE ของการทดสอบคือ 69.66
  • หากเราเพิ่มองค์ประกอบ PLS แรก การทดสอบ RMSE จะลดลงเหลือ 40.57
  • หากเราเพิ่มองค์ประกอบ PLS ตัวที่สอง การทดสอบ RMSE จะลดลงเหลือ 35.48

เราจะเห็นว่าการเพิ่มส่วนประกอบ PLS เพิ่มเติมส่งผลให้ RMSE ของการทดสอบเพิ่มขึ้น ดังนั้นจึงดูเหมือนว่าการใช้ส่วนประกอบ PLS เพียงสองชิ้นในแบบจำลองสุดท้ายจะเป็นการเหมาะสมที่สุด

2. การฝึกอบรม: อธิบาย % ของความแปรปรวน

ตารางนี้บอกเราถึงเปอร์เซ็นต์ของความแปรปรวนในตัวแปรตอบสนองที่อธิบายโดยส่วนประกอบ PLS เราสามารถเห็นสิ่งต่อไปนี้:

  • การใช้เพียงองค์ประกอบ PLS แรกเท่านั้น เราสามารถอธิบายความแปรผันของตัวแปรตอบสนองได้ 68.66%
  • ด้วยการเพิ่มองค์ประกอบ PLS ที่สอง เราสามารถอธิบายความแปรผันของตัวแปรตอบสนองได้ 89.27%

โปรดทราบว่าเรายังคงสามารถอธิบายความแปรปรวนได้มากขึ้นโดยใช้องค์ประกอบ PLS มากขึ้น แต่เราเห็นว่าการเพิ่มองค์ประกอบ PLS มากกว่าสององค์ประกอบไม่ได้เพิ่มเปอร์เซ็นต์ของความแปรปรวนที่อธิบายไว้มากนัก

นอกจากนี้เรายังสามารถเห็นภาพการทดสอบ RMSE (พร้อมกับการทดสอบ MSE และ R-squared) เป็นฟังก์ชันของจำนวนส่วนประกอบ PLS โดยใช้ฟังก์ชัน validationplot()

 #visualize cross-validation plots
validationplot(model)
validationplot(model, val.type=" MSEP ")
validationplot(model, val.type=" R2 ") 

กำลังสองน้อยที่สุดบางส่วนใน R

การตรวจสอบข้าม MSE ใน R

การตรวจสอบข้ามสำหรับกำลังสองน้อยที่สุดบางส่วนใน R

ในแต่ละกราฟ เราจะเห็นว่าโมเดลพอดีได้รับการปรับปรุงโดยการเพิ่มองค์ประกอบ PLS สองตัว แต่มีแนวโน้มที่จะลดลงเมื่อเราเพิ่มส่วนประกอบ PLS เพิ่มเติม

ดังนั้น โมเดลที่เหมาะสมที่สุดจึงมีเพียงส่วนประกอบ PLS สองตัวแรกเท่านั้น

ขั้นตอนที่ 4: ใช้แบบจำลองสุดท้ายเพื่อคาดการณ์

เราสามารถใช้แบบจำลองสุดท้ายกับองค์ประกอบ PLS สองส่วนเพื่อคาดการณ์เกี่ยวกับการสังเกตใหม่ๆ

รหัสต่อไปนี้แสดงวิธีแยกชุดข้อมูลดั้งเดิมออกเป็นชุดการฝึกและชุดทดสอบ และใช้โมเดลสุดท้ายที่มีส่วนประกอบ PLS สองรายการเพื่อคาดการณ์ชุดทดสอบ

 #define training and testing sets
train <- mtcars[1:25, c("hp", "mpg", "disp", "drat", "wt", "qsec")]
y_test <- mtcars[26: nrow (mtcars), c("hp")]
test <- mtcars[26: nrow (mtcars), c("mpg", "disp", "drat", "wt", "qsec")]
    
#use model to make predictions on a test set
model <- plsr(hp~mpg+disp+drat+wt+qsec, data=train, scale= TRUE , validation=" CV ")
pcr_pred <- predict(model, test, ncomp= 2 )

#calculate RMSE
sqrt ( mean ((pcr_pred - y_test)^2))

[1] 54.89609

เราจะเห็นว่า RMSE ของการทดสอบกลายเป็น 54.89609 นี่คือค่าเบี่ยงเบนเฉลี่ยระหว่างค่า HP ที่คาดการณ์ไว้กับค่า HP ที่สังเกตได้สำหรับการสังเกตชุดทดสอบ

โปรดทราบว่า แบบจำลองการถดถอยขององค์ประกอบหลักที่เทียบเท่า กับองค์ประกอบหลัก 2 องค์ประกอบทำให้เกิดการทดสอบ RMSE ที่ 56.86549 ดังนั้น โมเดล PLS จึงมีประสิทธิภาพเหนือกว่าโมเดล PCR สำหรับชุดข้อมูลนี้เล็กน้อย

การใช้งานโค้ด R อย่างเต็มรูปแบบในตัวอย่างนี้สามารถพบได้ ที่นี่

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *