ฉันจะอธิบายปัญหาด้วยตัวอย่าง สมมติว่าคุณต้องการที่จะทำนายรายได้ของแต่ละบุคคลที่มีคุณลักษณะบางอย่าง: {อายุ, เพศ, ประเทศ, ภูมิภาค, เมือง} คุณมีชุดข้อมูลการฝึกอบรมเช่นนั้น
train <- data.frame(CountryID=c(1,1,1,1, 2,2,2,2, 3,3,3,3),
RegionID=c(1,1,1,2, 3,3,4,4, 5,5,5,5),
CityID=c(1,1,2,3, 4,5,6,6, 7,7,7,8),
Age=c(23,48,62,63, 25,41,45,19, 37,41,31,50),
Gender=factor(c("M","F","M","F", "M","F","M","F", "F","F","F","M")),
Income=c(31,42,71,65, 50,51,101,38, 47,50,55,23))
train
CountryID RegionID CityID Age Gender Income
1 1 1 1 23 M 31
2 1 1 1 48 F 42
3 1 1 2 62 M 71
4 1 2 3 63 F 65
5 2 3 4 25 M 50
6 2 3 5 41 F 51
7 2 4 6 45 M 101
8 2 4 6 19 F 38
9 3 5 7 37 F 47
10 3 5 7 41 F 50
11 3 5 7 31 F 55
12 3 5 8 50 M 23
ตอนนี้สมมติว่าฉันต้องการทำนายรายได้ของคนใหม่ที่อาศัยอยู่ในเมือง 7 ชุดการฝึกอบรมของฉันมีตัวอย่างจำนวน 3 ชุดกับผู้คนในเมือง 7 (สมมติว่านี่เป็นจำนวนมาก) ดังนั้นฉันจึงอาจใช้รายได้เฉลี่ยในเมือง 7 ทำนายรายได้ของบุคคลใหม่นี้
ตอนนี้สมมติว่าฉันต้องการทำนายรายได้ของคนใหม่ที่อาศัยอยู่ในเมือง 2 ชุดการฝึกอบรมของฉันมีเพียง 1 ตัวอย่างที่มี 2 เมืองดังนั้นรายได้เฉลี่ยในเมือง 2 อาจไม่ใช่ตัวทำนายที่เชื่อถือได้ แต่ฉันอาจใช้รายได้เฉลี่ยในภูมิภาคที่ 1
การคาดการณ์ความคิดนี้เล็กน้อยฉันสามารถเปลี่ยนชุดข้อมูลการฝึกอบรมของฉันเป็น
Age Gender CountrySamples CountryIncome RegionSamples RegionIncome CitySamples CityIncome
1: 23 M 4 52.25 3 48.00 2 36.5000
2: 48 F 4 52.25 3 48.00 2 36.5000
3: 62 M 4 52.25 3 48.00 1 71.0000
4: 63 F 4 52.25 1 65.00 1 65.0000
5: 25 M 4 60.00 2 50.50 1 50.0000
6: 41 F 4 60.00 2 50.50 1 51.0000
7: 45 M 4 60.00 2 69.50 2 69.5000
8: 19 F 4 60.00 2 69.50 2 69.5000
9: 37 F 4 43.75 4 43.75 3 50.6667
10: 41 F 4 43.75 4 43.75 3 50.6667
11: 31 F 4 43.75 4 43.75 3 50.6667
12: 50 M 4 43.75 4 43.75 1 23.0000
ดังนั้นเป้าหมายคือการรวม CityIncome, RegionIncome และ CountryIncome โดยเฉลี่ยในขณะที่ใช้จำนวนตัวอย่างการฝึกอบรมสำหรับแต่ละคนเพื่อให้น้ำหนัก / ความน่าเชื่อถือกับแต่ละค่า (เป็นการดียังคงรวมถึงข้อมูลจากอายุและเพศ)
เคล็ดลับในการแก้ไขปัญหาประเภทนี้คืออะไร ฉันชอบที่จะใช้แบบจำลองที่มีโครงสร้างเป็นต้นไม้เช่นฟอเรสต์แบบสุ่มหรือการเพิ่มระดับความลาดชัน แต่ฉันมีปัญหาในการทำให้สิ่งเหล่านี้ทำงานได้ดี
UPDATE
สำหรับทุกคนยินดีที่จะใช้แทงที่ปัญหานี้ผมได้สร้างข้อมูลตัวอย่างในการทดสอบโซลูชั่นที่นำเสนอของคุณที่นี่