ฉันควรเพิ่มความแตกต่างใหม่ (z = x1-x2) ในโมเดลหรือไม่?

Aug 17 2020

เมื่อเร็ว ๆ นี้ฉันกำลังคิดถึงคำถามนี้: ฉันควรเพิ่มคุณสมบัติใหม่ตามความแตกต่างของคุณสมบัติดิบหรือไม่?

การตั้งค่า

สมมติว่าฉันมีข้อมูล 50k และคุณสมบัติ 20 รายการและเป็นงานถดถอย ในทางปฏิบัติด้านวิทยาศาสตร์ข้อมูลเรามักจะเพิ่มคุณลักษณะใหม่ ๆ ตามคุณลักษณะดิบ แต่ผมไม่ทราบว่าเมื่อเราควรจะเพิ่มใหม่คุณลักษณะ Z (Z = x1 - x2) ลงของเรารุ่น

เส้นทางของฉัน

นี่คือความเข้าใจของฉัน: เนื่องจากคุณลักษณะกำลังจะถูกทิ้งในแบบจำลองดังนั้นการที่คุณลักษณะจะทำงานได้ดีขึ้นอยู่กับทั้งคุณลักษณะและรุ่น

ลองใช้การถดถอยเชิงเส้นเป็นตัวอย่าง:

head(mtcars)
fit1 = lm(mpg~ cyl+disp +hp +vs, data = mtcars)
summary(fit1)$adj.r.squared

data_add = cbind(mtcars,'c1' = mtcars$disp - mtcars$hp)
fit2 = lm(mpg~ cyl+disp + hp +vs + c1, data = data_add)
summary(fit2)$adj.r.squared
summary(fit2)

add_noise <- function(n){
  res = NULL
  for(i in 1:n){
    data_add_noise = cbind(mtcars,'c1' = mtcars$disp - mtcars$hp + rnorm(nrow(mtcars),0,1))
    fit3 = lm(mpg~ cyl+disp + hp +vs + c1, data = data_add_noise)
    res = c(res,summary(fit3)$adj.r.squared)
  }  
  return(mean(res))
}
add_noise(10000)

ผลลัพธ์:

> summary(fit1)$adj.r.squared
[1] 0.7359967
> summary(fit2)$adj.r.squared
[1] 0.7359967
> add_noise(10000)
[1] 0.7359121

ในการถดถอยเชิงเส้นถ้าเราใส่ z = x1-x2 ในโมเดลของเราเราจะได้เมทริกซ์การออกแบบเอกพจน์ซึ่งหมายความว่า R จะไม่ใช้ z เพื่อให้พอดีกับสัมประสิทธิ์ กล่าวอีกนัยหนึ่งคุณลักษณะใหม่ z จะไม่ช่วยเพิ่มประสิทธิภาพโมเดลของเรา

หากเราใช้ z = x1- x2 + rnorm (n = 1, mean = 0, sd = 1) ในโมเดลของเราเราจะลดประสิทธิภาพโมเดลของเราเนื่องจากเรานำสัญญาณรบกวนเพิ่มเติมเข้ามาในโมเดลของเรา

อย่างไรก็ตามหากเราใช้โมเดล lgbm / xgboost / rf เนื่องจากโหนดแบบจำลองต้นไม้แบ่งตามอัตราการเพิ่มของข้อมูล / อัตราส่วนการได้รับข้อมูล / ความไม่บริสุทธิ์ของ gini คุณลักษณะใหม่ของเรา z = x1 - x2 อาจช่วยในเรื่องประสิทธิภาพของโมเดลของเรา

สรุป

เราควรเพิ่มคุณสมบัติความแตกต่างใหม่ (z = x1- x2) ลงในโมเดลของเราหรือไม่นั้นขึ้นอยู่กับรุ่นที่เราใช้ ฉันจะขอบคุณมากที่ได้เห็นแนวคิดอื่น ๆ !

คำตอบ

5 Sycorax Aug 17 2020 at 20:26

ลักษณะที่กำหนดของแบบจำลองเชิงเส้นคือเป็นแบบเชิงเส้น ซึ่งหมายความว่าผล$y$ถูกจำลองเป็นฟังก์ชันเชิงเส้นของคุณสมบัติที่ไม่มีเสียง$x_1, x_2$.

$$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon $$

สมมติว่าเราเพิ่มคุณสมบัติที่ไม่มีเสียง $x_3=x_1 - x_2$. หากเราดูว่าโมเดลนี้แสดงออกอย่างไรก็น่าจะเห็นได้ชัดว่านี่ไม่ได้แตกต่างไปจากโมเดลเดิมของเรา $$\begin{align} y &= \beta_0 + \tilde{\beta}_1 x_1 + \tilde{\beta}_2 x_2 + {\beta}_3 (x_1 - x_2)+ \epsilon \\ y &= \beta_0 + (\tilde{\beta}_1 + {\beta}_3) x_1 + (\tilde{\beta}_2 - {\beta}_3) x_2+ \epsilon \\ y &= \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon \\ \end{align}$$ กล่าวอีกนัยหนึ่งค่าสัมประสิทธิ์ของ $x_3$ ไม่ได้ระบุในโมเดลนี้เนื่องจากเป็นการรวมเชิงเส้นของ $x_1$ และ $x_2$.

ตัวอย่างของคุณใช้สัญญาณรบกวน $x_3 = x_1 - x_2 + \eta$เพื่อหลีกเลี่ยงการไม่ระบุตัวตน อย่างไรก็ตามจำนวนนี้จะเพิ่มค่าสัมประสิทธิ์สำหรับเสียงรบกวน$\eta$: $$\begin{align} y &= \beta_0 + \tilde{\beta}_1 x_1 + \tilde{\beta}_2 x_2 + {\beta}_3 (x_1 - x_2 + \eta) + \epsilon\\ y &= \beta_0 + (\tilde{\beta}_1 + {\beta}_3) x_1 + (\tilde{\beta}_2 - {\beta}_3) x_2 + {\beta}_3\eta + \epsilon \\ y &= \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 \eta + \epsilon \\ \end{align}$$

กล่าวอีกนัยหนึ่งเสียงดัง $\eta$เป็นคุณสมบัติที่สามที่มีให้กับรุ่นนี้ ถือว่าเสียงรบกวนไม่เกี่ยวข้องกับ$y$เราจึงรู้ว่าผลที่แท้จริงของ $\eta$ บน $y$เป็นศูนย์ ได้แก่$\eta$ มีแนวโน้มที่จะทำร้ายการคาดการณ์ทุกครั้ง $\hat{\beta}_3 \neq 0$.

สรุป : ไม่ต้องเพิ่ม$x_1-x_2+\eta$ เป็นแบบจำลองการถดถอยเชิงเส้นเนื่องจากไม่มีข้อมูลใหม่เกี่ยวกับ $y$.


แบบจำลองวงต้นไม้ (สุ่มฟอเรสต์ xgboost) ไม่เชิงเส้น: สำหรับการแยกไบนารีใด ๆ โหนดลูกสาวจะให้ฟังก์ชันคงที่ที่แตกต่างกัน ผลของการแยกไบนารีจำนวนมากดังกล่าวคือการแบ่งพื้นที่คุณลักษณะออกเป็นรูปสี่เหลี่ยมแนวแกนจำนวนหนึ่งซึ่งแต่ละอันมีค่าประมาณที่แตกต่างกัน

การแบ่งแบบไบนารีจำนวนมากตามแนวแกนสามารถประมาณขอบเขตที่ซับซ้อนได้โดยใช้รูปทรงที่เรียบง่ายกว่า ตัวอย่างคลาสสิกคือการพิจารณางานการจัดประเภทไบนารีที่มีขอบเขตการตัดสินใจเชิงเส้นที่สมบูรณ์แบบบนเส้น$x_1 - x_2 > c$. สิ่งนี้แสดงให้เห็นเป็นรอยแยกในแนวทแยง เห็นได้ชัดว่าเดียวแยกแกนชิดไม่สามารถใกล้เคียงกับเส้นทแยงมุมได้เป็นอย่างดี แต่หลายแกนชิดแยกคุณสามารถทำให้ "ขั้นบันได" รูปทรงที่สามารถใกล้เคียงกับเส้นทแยงมุมพลดี ในทำนองเดียวกันก็เป็นจริงเช่นเดียวกันสำหรับการประมาณความสัมพันธ์เช่นลอการิทึมกำลังสองไซนัสเป็นต้น

ในทางกลับกันการเพิ่มคุณสมบัติ $x_1 - x_2$ ไปยังชุดคุณลักษณะสามารถปรับปรุงโมเดลได้เนื่องจากการแยกไบนารีจะสามารถกู้คืนได้ทั้งหมด $x_1 - x_2 > c$. วิศวกรรมคุณลักษณะแบบนี้สามารถปรับปรุงโมเดลได้เมื่อคุณทราบล่วงหน้าว่าคุณลักษณะนี้มีประโยชน์ ในทางกลับกันจุดรวมของการใช้โมเดลขั้นสูงเช่นฟอเรสต์แบบสุ่มหรือต้นไม้ที่ได้รับการส่งเสริมคือการกู้คืนฟังก์ชันที่มีประโยชน์เมื่อเราไม่ทราบแน่ชัดว่าคุณลักษณะทั้งหมดเกี่ยวข้องกับผลลัพธ์อย่างไร

สรุป : การเพิ่ม$x_1 - x_2$ สามารถปรับปรุงโมเดลได้หาก $x_1 - x_2 > c$ มีความสำคัญต่อ $y$.

ข้อมูลเพิ่มเติม: ผลที่ตามมาของการเพิ่มคอลัมน์คุณสมบัติที่เปลี่ยนแปลงสำหรับฟอเรสต์แบบสุ่มและบ่วงบาศ?