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


8

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

พารามิเตอร์บางอย่างที่ฉันปรับจูน ได้แก่ :

  • จำนวนต้นไม้ / การวนซ้ำ;
  • การเรียนรู้เชิงลึก
  • และอัตราการเรียนรู้

เปอร์เซ็นต์ของค่าลบดูเหมือนสูงสุดที่ ~ 2% ความลึกของการเรียนรู้ที่ 1 (ตอไม้) ดูเหมือนจะมีค่า% ที่ใหญ่ที่สุด เปอร์เซ็นต์นี้ดูเหมือนจะเพิ่มขึ้นด้วยต้นไม้มากขึ้นและอัตราการเรียนรู้ที่น้อยลง ชุดข้อมูลมาจากหนึ่งในการแข่งขันสนามเด็กเล่น kaggle

รหัสของฉันเป็นสิ่งที่ชอบ:

from sklearn.ensemble import GradientBoostingRegressor

X_train, X_test, y_train, y_test = train_test_split(X, y)

reg = GradientBoostingRegressor(n_estimators=8000, max_depth=1, loss = 'ls', learning_rate = .01)

reg.fit(X_train, y_train)

ypred = reg.predict(X_test)

1
โอกาสของตัวอย่างที่ทำซ้ำได้ด้วยรหัสและข้อมูลใด ๆ
Spacedman

2
การแข่งขันในสนามเด็กเล่นแบบไหน?
TheAxeR

คำตอบ:


8

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

X     Y
10    0
20    1
30    2

มันมีเหตุผลที่จะสร้างแบบจำลองf(x) = x/10-1ซึ่งใช้สำหรับx<10คืนค่าลบ

เช่นเดียวกับการใช้ "ในระหว่าง" จุดข้อมูลของคุณเป็นไปได้เสมอว่าเนื่องจากความน่าเชื่อถือของฟังก์ชัน (ซึ่งสามารถจำลองได้ด้วยวิธีการเฉพาะ) คุณจะได้รับค่า "จากตัวอย่างการฝึกอบรมของคุณ"

คุณสามารถคิดเกี่ยวกับสิ่งนี้ในอีกทางหนึ่ง - "มีอะไรพิเศษเกี่ยวกับค่าลบ?" ทำไมคุณถึงพบว่ามีค่าลบแปลก ๆ (ถ้าไม่ได้ระบุไว้ในชุดฝึกอบรม) ในขณะที่คุณไม่ตื่นตระหนก .. ค่า 2131.23? หากไม่ได้รับการพัฒนาในลักษณะนี้ไม่มีตัวแบบใดที่จะรักษาค่าลบ "แตกต่าง" มากกว่าค่าบวก นี่เป็นเพียงองค์ประกอบตามธรรมชาติของมูลค่าที่แท้จริงซึ่งสามารถบรรลุได้เช่นเดียวกับค่าอื่น ๆ


เกี่ยวกับชุดคำถามของคุณฉันคิดว่าเป็นค่าลบได้ง่ายกว่าที่จะระบุว่าเป็นความผิดปกติเพราะพวกเขามี "-" อยู่ข้างหน้าพวกเขาหรือชัดเจนไปด้านล่างเป็นศูนย์ในกราฟ คำถามอาจเป็นได้ง่ายๆว่า "เหตุใดการไล่ระดับสีแบบไล่ระดับสีจึงคาดการณ์ค่าที่มองไม่เห็นก่อนหน้านี้" บางทีคุณอาจลองขยายมัน แน่นอนคุณจะได้รับการโหวตจากฉัน
josh

@lejlot - โดยทั่วไปการพูดสิ่งนี้ไม่เป็นความจริง ตัวแบบการถดถอยที่มีการเปิดใช้งานโลจิสติกส์หรือ tanh มักจะรับประกันว่าจะมีเอาต์พุตภายในขอบเขต
user48956

@ user48956 คำตอบ "สามารถทำงานในลักษณะที่กำหนดเอง" ฉันไม่ได้อ้างว่าคุณไม่สามารถบังคับข้อ จำกัด บางอย่างได้แน่นอนคุณสามารถตอบได้โดยระบุว่าไม่มีข้อ จำกัด "ขึ้นอยู่กับข้อมูล" (เว้นแต่คุณจะมีรูปแบบที่เฉพาะเจาะจงมาก สร้างขึ้นในตัว) - ถ้าคุณเพิ่มสิ่งนี้ด้วยตนเองในฐานะผู้เชี่ยวชาญ - มันขึ้นอยู่กับคุณ
lejlot

5

โปรดจำไว้ว่าGradientBoostingRegressor(สมมติว่าฟังก์ชั่นการสูญเสียความผิดพลาดกำลังสอง) ต่อเนื่องเหมาะสมกับต้นไม้การถดถอยกับส่วนที่เหลือของขั้นตอนก่อนหน้า ทีนี้ถ้า Tree ใน stage i ทำนายค่าที่ใหญ่กว่าตัวแปรเป้าหมายสำหรับตัวอย่างการฝึกอบรมเฉพาะส่วนที่เหลือของ stage i สำหรับตัวอย่างนั้นจะเป็นค่าลบดังนั้นต้นไม้ถดถอยที่ stage i + 1 จะเผชิญกับค่าเป้าหมายเชิงลบ (ซึ่งเป็นของเหลือจากเวที i) เนื่องจากอัลกอริทึมการเร่งเพิ่มต้นไม้เหล่านี้ทั้งหมดเพื่อให้การคาดการณ์สุดท้ายฉันเชื่อว่านี่สามารถอธิบายได้ว่าทำไมคุณถึงลงเอยด้วยการทำนายเชิงลบแม้ว่าค่าเป้าหมายทั้งหมดในชุดฝึกอบรมจะเป็นค่าบวกโดยเฉพาะอย่างยิ่งเมื่อคุณกล่าวถึงว่า บ่อยครั้งเมื่อคุณเพิ่มจำนวนต้นไม้


นี่คือคำตอบที่ถูกต้อง
hahdawg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.