วิธีลดตัวทำนายวิธีที่ถูกต้องสำหรับตัวแบบการถดถอยโลจิสติก


9

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

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

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

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

แก้ไข:

ก่อนอื่นขนาดตัวอย่างของฉันคือ +1000 ผู้ป่วย (ซึ่งมีจำนวนมากในสาขาของฉัน) และจากจำนวนที่มีการตอบรับในเชิงบวกระหว่าง 70-170 (เช่น 170 ใช่การตอบสนองเทียบกับประมาณ 900 ไม่มีการตอบสนองในกรณีใดกรณีหนึ่ง) . โดยพื้นฐานแล้วแนวคิดคือการทำนายความเป็นพิษหลังการรักษาด้วยรังสี ฉันมีข้อมูลตอบกลับแบบไบนารีที่คาดหวัง (เช่นความเป็นพิษไม่ว่าคุณจะมี (1) หรือคุณไม่มี (0) และจากนั้นฉันก็มีการวัดหลายประเภท ตัวชี้วัดบางตัวมีความเฉพาะเจาะจงของผู้ป่วยเช่นอายุยาที่ใช้ปริมาณอวัยวะและเป้าหมายเบาหวาน ฯลฯ จากนั้นฉันก็มีตัวชี้วัดเฉพาะด้านการรักษาบางอย่างตามเขตการรักษาจำลองสำหรับเป้าหมาย จากนั้นฉันสามารถดึงตัวทำนายหลายตัวซึ่งมักมีความเกี่ยวข้องอย่างมากในสาขาของฉันเนื่องจากความเป็นพิษส่วนใหญ่มีความสัมพันธ์อย่างมากกับปริมาณรังสีที่ได้รับ (iedose) ที่ได้รับ ตัวอย่างเช่นถ้าฉันรักษาเนื้องอกปอดมีความเสี่ยงของการกดปุ่มหัวใจด้วยปริมาณบางส่วน จากนั้นฉันสามารถคำนวณปริมาณปริมาณหัวใจ x ที่ได้รับปริมาณรังสี x เช่น " ไม่เพียงแค่เลือกอย่างใดอย่างหนึ่งเพื่อเริ่มต้นด้วย (แม้ว่าจะเป็นสิ่งที่การทดลองที่ผ่านมาได้พยายามแน่นอนและสิ่งที่ฉันต้องการจะทำเช่นกัน) เพราะฉันจำเป็นต้องรู้ว่า "แน่นอน" ที่ระดับจริงมีความสัมพันธ์ระหว่างความเป็นพิษต่อหัวใจ และปริมาณปริมาณ (อีกครั้งเป็นตัวอย่างมีตัวชี้วัดที่คล้ายกันอื่น ๆ ที่ใช้กลยุทธ์เดียวกัน) ใช่นั่นเป็นลักษณะของชุดข้อมูลของฉัน ตัวชี้วัดที่แตกต่างกันและตัวชี้วัดบางตัวที่ค่อนข้างคล้ายกัน ไม่เพียงแค่เลือกอย่างใดอย่างหนึ่งเพื่อเริ่มต้นด้วย (แม้ว่าจะเป็นสิ่งที่การทดลองที่ผ่านมาได้พยายามแน่นอนและสิ่งที่ฉันต้องการจะทำเช่นกัน) เพราะฉันจำเป็นต้องรู้ว่า "แน่นอน" ที่ระดับจริงมีความสัมพันธ์ระหว่างความเป็นพิษต่อหัวใจ และปริมาณปริมาณ (อีกครั้งเป็นตัวอย่างมีตัวชี้วัดที่คล้ายกันอื่น ๆ ที่ใช้กลยุทธ์เดียวกัน) ใช่นั่นเป็นลักษณะของชุดข้อมูลของฉัน ตัวชี้วัดที่แตกต่างกันและตัวชี้วัดบางตัวที่ค่อนข้างคล้ายกัน มันดูเหมือนว่าชุดข้อมูลของฉันจะเป็นอย่างไร ตัวชี้วัดที่แตกต่างกันและตัวชี้วัดบางตัวที่ค่อนข้างคล้ายกัน มันดูเหมือนว่าชุดข้อมูลของฉันจะเป็นอย่างไร ตัวชี้วัดที่แตกต่างกันและตัวชี้วัดบางตัวที่ค่อนข้างคล้ายกัน

สิ่งที่ฉันต้องการทำคือสร้างแบบจำลองการคาดการณ์เพื่อที่ฉันจะสามารถคาดเดาได้ว่าผู้ป่วยรายใดที่มีความเสี่ยงต่อการได้รับพิษบางชนิด และเนื่องจากข้อมูลการตอบสนองเป็นแบบไบนารีแนวคิดหลักของฉันก็คือแน่นอนว่าต้องใช้ตัวแบบการถดถอยแบบโลจิสติกส์ อย่างน้อยนั่นคือสิ่งที่คนอื่น ๆ ได้ทำในสาขาของฉัน อย่างไรก็ตามเมื่ออ่านเอกสารเหล่านี้จำนวนมากซึ่งสิ่งนี้ได้ทำไปแล้วบางส่วนก็ดูเหมือนผิดปกติ (อย่างน้อยเมื่ออ่านหนังสือทำแบบจำลองประเภทนี้เช่น F. Harrel) หลายคนใช้การวิเคราะห์การถดถอยแบบ univariate เพื่อเลือกตัวทำนายและใช้พวกมันในการวิเคราะห์หลายตัวแปร (สิ่งที่แนะนำถ้าไม่เข้าใจผิด) และหลายคนก็ใช้เทคนิคขั้นตอนที่ชาญฉลาดเพื่อลดจำนวนตัวทำนาย แน่นอนมันไม่ได้เลวร้ายทั้งหมด หลายคนใช้ LASSO, PCA, การตรวจสอบข้าม, การบูตสแตรป ฯลฯ แต่สิ่งที่ฉันได้ดู

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

ขออภัยสำหรับการแก้ไขและมันใช้เวลานานมาก

แก้ไข 2: เป็นเพียงตัวอย่างสั้น ๆ เกี่ยวกับลักษณะของข้อมูลของฉัน:

'data.frame':   1151 obs. of  100 variables:
 $ Toxicity              : Factor w/ 2 levels "0","1": 2 1 1 1 1 1 1 1 1 1 ...
 $ Age                   : num  71.9 64 52.1 65.1 63.2 ...
 $ Diabetes              : Factor w/ 2 levels "n","y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Risk.Category         : Ord.factor w/ 3 levels "LOW"<"INTERMEDIATE"<..: 1 1 1 1 2 1 1 1 1 3 ...
 $ Organ.Volume.CC       : num  136.1 56.7 66 136.6 72.8 ...
 $ Target.Volume.CC      : num  102.7 44.2 58.8 39.1 56.3 ...
 $ D1perc                : num  7961 7718 7865 7986 7890 ...
 $ D1.5CC                : num  7948 7460 7795 7983 7800 ...
 $ D1CC                  : num  7996 7614 7833 7997 7862 ...
 $ D2perc                : num  7854 7570 7810 7944 7806 ...
 $ D2.5CC                : num  7873 7174 7729 7952 7604 ...
 $ D2CC                  : num  7915 7313 7757 7969 7715 ...
 $ D3perc                : num  7737 7379 7758 7884 7671 ...
 $ D3.5CC                : num  7787 6765 7613 7913 7325 ...
 $ D3CC                  : num  7827 6953 7675 7934 7480 ...
 $ D4perc                : num  7595 7218 7715 7798 7500 ...
 $ D5perc                : num  7428 7030 7638 7676 7257 ...
 $ DMEAN                 : num  1473 1372 1580 1383 1192 ...
 $ V2000CGY              : num  24.8 23.7 25.9 22.3 19.3 ...
 $ V2000CGY_CC           : num  33.7 13.4 17.1 30.4 14 ...
 $ V2500CGY              : num  22.5 21.5 24 20.6 17.5 ...
 $ V2500CGY_CC           : num  30.7 12.2 15.9 28.2 12.7 ...
 $ V3000CGY              : num  20.6 19.6 22.4 19.1 15.9 ...
 $ V3000CGY_CC           : num  28.1 11.1 14.8 26.2 11.6 ...
 $ V3500CGY              : num  18.9 17.8 20.8 17.8 14.6 ...
 $ V3500CGY_CC           : num  25.7 10.1 13.7 24.3 10.6 ...
 $ V3900CGY              : num  17.5 16.5 19.6 16.7 13.6 ...
 $ V3900CGY_CC           : num  23.76 9.36 12.96 22.85 9.91 ...
 $ V4500CGY              : num  15.5 14.4 17.8 15.2 12.2 ...
 $ V4500CGY_CC           : num  21.12 8.18 11.76 20.82 8.88 ...
 $ V5000CGY              : num  13.9 12.8 16.4 14 11 ...
 $ V5000CGY_CC           : num  18.91 7.25 10.79 19.09 8.03 ...
 $ V5500CGY              : num  12.23 11.14 14.84 12.69 9.85 ...
 $ V5500CGY_CC           : num  16.65 6.31 9.79 17.33 7.17 ...
 $ V6000CGY              : num  10.56 9.4 13.19 11.34 8.68 ...
 $ V6000CGY_CC           : num  14.37 5.33 8.7 15.49 6.32 ...
 $ V6500CGY              : num  8.79 7.32 11.35 9.89 7.44 ...
 $ V6500CGY_CC           : num  11.96 4.15 7.49 13.51 5.42 ...
 $ V7000CGY              : num  6.76 5.07 9.25 8.27 5.86 ...
 $ V7000CGY_CC           : num  9.21 2.87 6.1 11.3 4.26 ...
 $ V7500CGY              : num  4.61 2.37 6.22 6.13 4 ...
 $ V7500CGY_CC           : num  6.27 1.34 4.11 8.38 2.91 ...
 $ V8000CGY              : num  0.7114 0.1521 0.0348 0.6731 0.1527 ...
 $ V8000CGY_CC           : num  0.9682 0.0863 0.023 0.9194 0.1112 ...
 $ V8200CGY              : num  0.087 0 0 0 0 ...
 $ V8200CGY_CC           : num  0.118 0 0 0 0 ...
 $ V8500CGY              : num  0 0 0 0 0 0 0 0 0 0 ...
 $ V8500CGY_CC           : num  0 0 0 0 0 0 0 0 0 0 ...
 $ n_0.02                : num  7443 7240 7371 7467 7350 ...
 $ n_0.03                : num  7196 6976 7168 7253 7112 ...
 $ n_0.04                : num  6977 6747 6983 7055 6895 ...
 $ n_0.05                : num  6777 6542 6811 6871 6693 ...
 $ n_0.06                : num  6592 6354 6649 6696 6503 ...
 $ n_0.07                : num  6419 6180 6496 6531 6325 ...
 $ n_0.08                : num  6255 6016 6350 6374 6155 ...
 $ n_0.09                : num  6100 5863 6211 6224 5994 ...
 $ n_0.1                 : num  5953 5717 6078 6080 5840 ...
 $ n_0.11                : num  5813 5579 5950 5942 5692 ...
 $ n_0.12                : num  5679 5447 5828 5809 5551 ...
 $ n_0.13                : num  5551 5321 5709 5681 5416 ...
 $ n_0.14                : num  5428 5201 5595 5558 5285 ...
 $ n_0.15                : num  5310 5086 5485 5439 5160 ...
 $ n_0.16                : num  5197 4975 5378 5324 5039 ...
 $ n_0.17                : num  5088 4868 5275 5213 4923 ...
 $ n_0.18                : num  4982 4765 5176 5106 4811 ...
 $ n_0.19                : num  4881 4666 5079 5002 4702 ...
 $ n_0.2                 : num  4783 4571 4985 4901 4597 ...
 $ n_0.21                : num  4688 4478 4894 4803 4496 ...
 $ n_0.22                : num  4596 4389 4806 4708 4398 ...
 $ n_0.23                : num  4507 4302 4720 4616 4303 ...
 $ n_0.24                : num  4421 4219 4636 4527 4210 ...
 $ n_0.25                : num  4337 4138 4555 4440 4121 ...
 $ n_0.26                : num  4256 4059 4476 4355 4035 ...
 $ n_0.27                : num  4178 3983 4398 4273 3951 ...
 $ n_0.28                : num  4102 3909 4323 4193 3869 ...
 $ n_0.29                : num  4027 3837 4250 4115 3790 ...
 $ n_0.3                 : num  3955 3767 4179 4039 3713 ...
 $ n_0.31                : num  3885 3699 4109 3966 3639 ...
 $ n_0.32                : num  3817 3633 4041 3894 3566 ...
 $ n_0.33                : num  3751 3569 3975 3824 3496 ...
 $ n_0.34                : num  3686 3506 3911 3755 3427 ...
 $ n_0.35                : num  3623 3445 3847 3689 3361 ...
 $ n_0.36                : num  3562 3386 3786 3624 3296 ...
 $ n_0.37                : num  3502 3328 3725 3560 3233 ...
 $ n_0.38                : num  3444 3272 3666 3498 3171 ...
 $ n_0.39                : num  3387 3217 3609 3438 3111 ...
 $ n_0.4                 : num  3332 3163 3553 3379 3053 ...
 $ n_0.41                : num  3278 3111 3498 3321 2996 ...
 $ n_0.42                : num  3225 3060 3444 3265 2941 ...
 $ n_0.43                : num  3173 3010 3391 3210 2887 ...
 $ n_0.44                : num  3123 2961 3339 3156 2834 ...
 $ n_0.45                : num  3074 2914 3289 3103 2783 ...
 $ n_0.46                : num  3026 2867 3239 3052 2733 ...
 $ n_0.47                : num  2979 2822 3191 3002 2684 ...
 $ n_0.48                : num  2933 2778 3144 2953 2637 ...
 $ n_0.49                : num  2889 2734 3097 2905 2590 ...

และถ้าฉันรันtable(data$Toxicity)เอาต์พุตคือ:

> table(data$Toxicity)
   0    1 
1088   63 

อีกครั้งนี่คือความเป็นพิษชนิดหนึ่ง ฉันมี 3 คนเช่นกัน


1
คุณตั้งใจจะทำอะไร การทำนายหรือการอนุมานหรืออย่างอื่น?
เตฟาน Kolassa

นี้เรียกว่าการเลือกคุณลักษณะ หากคุณต้องใช้การถดถอยคุณสมบัติการจัดหมวดหมู่จะเป็นแบบ one-hotted แต่สำหรับวิธีการแบบทรีคุณสามารถใช้ตามที่เป็นอยู่ได้ คุณยังสามารถเข้าใจถึงการโต้ตอบระหว่าง n-way หรือเงื่อนไขการเชื่อมโยงที่คาดเดาได้มากที่สุด
smci

"ฉันต้องนั่งคุยกับคนอื่น ๆ และคิดเกี่ยวกับ / ทำนายตัวทำนายอันดับต้น ๆ หรือไม่?" ไม่เลยสัญชาตญาณเป็นจุดเริ่มต้น แต่นั่นเป็นเหตุผลว่าทำไมจึงมีวิธีการเลือกคุณสมบัติ ผลลัพธ์จากการทดลองจำนวนมาก
smci

1
@smci ขออภัยที่ไม่ชัดเจน ดังนั้นในสาขาของฉัน (รังสีรักษา) เราทำการวางแผนการรักษาซึ่งโดยพื้นฐานแล้วเป็นการแสดงแบบ 3 มิติว่ามีการกระจายรังสี / ปริมาณรังสีไปรอบ ๆ เป้าหมายอย่างไร น่าเสียดายที่สิ่งนี้ไม่สามารถทำได้หากไม่ได้รับเนื้อเยื่อที่มีสุขภาพอย่างน้อยจำนวนหนึ่ง ดังนั้นจากแผนที่ 3 มิตินี้เพื่อพูดฉันสามารถรับข้อมูลเกี่ยวกับปริมาณที่มากได้รับปริมาณรังสี x / ปริมาณ แต่อย่างที่คุณจินตนาการได้ฉันสามารถ "ถาม" ในขั้นตอนเช่น "ปริมาณรังสีที่ได้รับ 1% ของโครงสร้างนี้ได้รับปริมาณเท่าใด" จากนั้น 2%, 3% โดยหลักการแล้วค่าจะค่อนข้างคล้ายกัน
Denver Dang

1
@smci หากการทำนายเป็นเป้าหมายของ OPs ความสัมพันธ์ก็ไม่ควรกังวล ความสัมพันธ์ที่สูงระหว่างตัวแปรจะเป็นเรื่องที่น่ากังวลอย่างมากเมื่อพยายามตีความตัวแปรที่รวมอยู่ในตัวแบบ
StatsStudent

คำตอบ:


4

คำตอบบางส่วนที่คุณได้รับจากการเลือกคุณสมบัติการกดนั้นไม่ได้อยู่ในฐาน

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

เนื้อหาข้อมูลในชุดข้อมูลของคุณอยู่ไกลเกินไปต่ำเกินไปสำหรับอัลกอริทึมการเลือกคุณลักษณะใด ๆ ที่จะเชื่อถือได้


ก่อนอื่นขอขอบคุณที่สละเวลาแสดงความคิดเห็น ประการที่สองถ้าฉันไม่เข้าใจผิดการเรียนรู้ที่ไม่ได้สำรองคือเมื่อคุณไม่ได้ใช้ (หรือไม่มี) ของการตอบสนองเฉพาะของตัวแปรตอบสนอง (เช่น 1 หรือ 0) และทำให้คอมพิวเตอร์ "เดา "วิธีแบ่งการแจกแจงควร แต่การถดถอยโลจิสติก (และเชิงเส้น) นั้นได้รับการดูแลเท่าที่ฉันรู้ ดังนั้นคุณแนะนำคือการละทิ้งวิธีการที่? ในอีกด้านหนึ่งฉันชอบความคิด แต่ในอีกด้านหนึ่งการถดถอยแบบโลจิสติกและโปรบิทคือกระดาษแบบจำลองเกือบทุกชิ้นในสาขาของฉัน (ข้อมูลคล้ายกับของฉัน) ได้ทำไปแล้ว
Denver Dang

ดังนั้นฉันจะไม่ออกไปไหนกับกิ่งไม้ที่นี่หรือฉันแค่คิดเอาเองว่าคนอื่นทำผิดไปตลอดกาล?
Denver Dang

3
ไม่ใช่ทุกคน แต่คนส่วนใหญ่ทำผิดอย่างแน่นอน นี้เป็นแรงผลักดันที่สำคัญสำหรับการเขียนถดถอยกลยุทธ์การสร้างแบบจำลอง เป้าหมายของการลดข้อมูลคือการลดจำนวนของการเรียนรู้แบบมีผู้ควบคุมซึ่งการถดถอยโลจิสติกจะถูกขอให้ทำ ตัวอย่างเช่นคุณอาจลดคุณสมบัติผู้สมัคร 100 คนให้ได้ 5 คะแนนกลุ่มอย่างมีประสิทธิภาพจากนั้นต้องประเมินเพียง 5 พารามิเตอร์ + การสกัดกั้น
Frank Harrell

2
คุณรู้สึกอย่างไรเกี่ยวกับแบบจำลองสัมประสิทธิ์ที่แตกต่างกันในกรณีนี้ (ตามที่ฉันเพิ่มในคำตอบของฉัน)?
Ben Bolker

@ FrankHarrell มันฟังดูค่อนข้างน่าสนใจ แต่ขออภัยที่ถามว่าเหตุใดการเรียนรู้แบบมีผู้สอนจึงไม่ดีหรืออย่างน้อยก็แย่เหมือนที่คุณพูดถึง
Denver Dang

8

+1 สำหรับ "บางครั้งดูเหมือนจะท่วมท้นไปหน่อย" มันขึ้นอยู่กับ (ตามที่ Harrell ระบุไว้อย่างชัดเจนให้ดูหัวข้อท้ายบทที่ 4) ว่าคุณต้องการทำอะไร

  • การวิเคราะห์เชิงยืนยัน ลดความซับซ้อนของระบบพยากรณ์ของคุณให้อยู่ในระดับที่เหมาะสมโดยไม่ต้องดูคำตอบโดยพิจารณาจาก PCA หรือการพิจารณาหัวเรื่องหรือ ... )
  • การวิเคราะห์เชิงทำนายใช้วิธีการลงโทษที่เหมาะสม) Lasso สามารถทำงานได้ดีกับตัวทำนาย 100 ตัวถ้าคุณมีตัวอย่างขนาดใหญ่พอสมควร การเลือกคุณสมบัติจะไม่เสถียร แต่ก็ไม่เป็นไรหากสิ่งที่คุณใส่ใจคือการคาดการณ์ ฉันมีความชอบส่วนตัวสำหรับวิธีที่คล้ายสันเขาที่ไม่มีเทคนิค "เลือกคุณสมบัติ" (เพราะพวกเขาไม่เคยลดพารามิเตอร์ใด ๆ ให้เหลือศูนย์) แต่ไม่ว่าอะไรก็ตาม ...

    คุณจะต้องใช้การตรวจสอบข้ามเพื่อเลือกระดับของการลงโทษซึ่งจะทำลายความสามารถของคุณในการอนุมาน (สร้างช่วงความมั่นใจในการทำนาย) เว้นแต่คุณจะใช้วิธีการอนุมานมิติสูงที่ทันสมัย ​​(เช่นDezeure et al 2015 ; I ยังไม่ได้ลองวิธีการเหล่านี้ แต่ดูเหมือนสมเหตุสมผล ... )

  • การวิเคราะห์เชิงสำรวจ : สนุกมีความโปร่งใสและซื่อสัตย์อย่าอ้างถึงค่า p ใด ๆ

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


ขนาดตัวอย่างของฉันคือ +1000 และขึ้นอยู่กับตัวแปรตอบสนอง (ฉันมี 4) ฉันมี 75-170 บวก (หรือลบขึ้นอยู่กับว่าคุณดูอย่างไร) การตอบสนองของ +1000 ฉันไม่ทราบว่าสิ่งนั้นจะทำให้ง่ายขึ้นหรือไม่เช่นฉันสามารถยกเลิกบางขั้นตอนได้เนื่องจากชุดตัวอย่างมีขนาดค่อนข้างใหญ่ (อย่างน้อยในสาขาของฉัน)
Denver Dang

การตรวจสอบข้ามจะทำลายความสามารถในการอนุมานหรือไม่ อาจจะ. ฉันคิดว่าสามารถเริ่มต้นระบบก่อนการตรวจสอบข้ามเพื่อให้ได้ช่วงความมั่นใจสำหรับการคาดการณ์ สิ่งนี้อาจเป็นไปได้ด้วยการสังเกต 1,000 ครั้ง
JTH

การอนุมานภายหลังการเลือกนั้นยากมาก หากคุณใช้ชุดข้อมูลทั้งหมดเพื่อปรับแต่งพารามิเตอร์หลายมิติ (เช่นความแข็งแกร่งของการลงโทษ) แสดงว่าคุณอยู่ในสถานการณ์เดียวกัน คุณจะต้องร่างบูตวิธี + ประวัติส่วนตัวของคุณก่อนที่ผมสามารถพูดได้ว่าฉันเชื่อว่ามันสามารถทำงาน ...
เบน Bolker

0

มีวิธีการที่แตกต่างกันมากมาย สิ่งที่ฉันอยากจะแนะนำคือลองใช้วิธีง่ายๆตามลำดับต่อไปนี้:

  • การทำให้เป็นมาตรฐาน L1 (ด้วยบทลงโทษที่เพิ่มมากขึ้น, ค่าสัมประสิทธิ์การทำให้เป็นปกติที่ใหญ่ขึ้น, คุณสมบัติมากขึ้นจะถูกกำจัด)
  • การกำจัดคุณลักษณะแบบเรียกซ้ำ ( https://scikit-learn.org/stable/modules/feature_selection.html#recursive-feature-elimination ) - ลบคุณลักษณะที่เพิ่มขึ้นโดยกำจัดคุณลักษณะที่เกี่ยวข้องกับสัมประสิทธิ์โมเดลที่เล็กที่สุด (สมมติว่าสิ่งเหล่านั้นมีค่าน้อยที่สุด สำคัญครั้งเดียวเห็นได้ชัดว่ามันสำคัญมากที่นี่เพื่อทำให้ปกติคุณสมบัติอินพุต)
  • การเลือกคุณสมบัติตามลำดับ ( http://rasbt.github.io/mlxtend/user_guide/feature_selection/SequentialFeatureSelector/ ) - ลบคุณลักษณะตามความสำคัญสำหรับประสิทธิภาพการทำนาย

1
ฉันเชื่อว่าวิธีการทั้งสามนี้จะไม่เสถียร
Frank Harrell

ขึ้นอยู่กับว่าคุณให้คำจำกัดความไม่แน่นอนอย่างไร ในทางปฏิบัติคุณมักจะใช้การตรวจสอบความถูกต้องบางอย่างเช่น k-fold หรือ left-one-out และตัดสินโดยพิจารณาจากประสิทธิภาพโดยรวม + ความแปรปรวน (หรือที่รู้จักกันว่าวิธี 1SE) ซึ่งคุณจะต้องเลือก
resnet

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