การถดถอยโลจิสติก: การเพิ่มผลบวกจริง - การบวกเท็จ


9

ฉันมีโมเดลการถดถอยโลจิสติก (พอดีผ่าน glmnet ใน R พร้อมกับการทำให้เป็นมาตรฐานสุทธิ) และฉันต้องการเพิ่มความแตกต่างระหว่างผลบวกจริงและผลบวกปลอม ในการดำเนินการดังกล่าวขั้นตอนต่อไปนี้อยู่ในใจ:

  1. พอดีกับโมเดลการถดถอยโลจิสติกมาตรฐาน
  2. ใช้เกณฑ์การทำนายเป็น 0.5 ระบุการคาดการณ์ในเชิงบวกทั้งหมด
  3. กำหนดน้ำหนัก 1 สำหรับการสังเกตที่คาดการณ์ไว้ในเชิงบวก 0 สำหรับคนอื่น ๆ ทั้งหมด
  4. พอดีกับรูปแบบการถดถอยโลจิสติกถ่วงน้ำหนัก

อะไรคือข้อบกพร่องของวิธีนี้? อะไรจะเป็นวิธีที่ถูกต้องในการแก้ไขปัญหานี้

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

ฉันยอมรับว่าการตัด 0.5 นั้นเป็นการสุ่มโดยพลการและเมื่อฉันปรับรูปแบบจากขั้นตอนที่ 1 บนขีด จำกัด การทำนายซึ่งให้ผลต่างสูงสุดระหว่างความจริง / เท็จบวกจะกลายเป็นใกล้กว่า 0.4 ฉันคิดว่านี่เป็นเพราะลักษณะที่บิดเบือนของข้อมูลของฉัน - อัตราส่วนระหว่างเชิงลบและบวกเป็นเรื่องเกี่ยวกับ 1: 3

ตอนนี้ฉันกำลังทำตามขั้นตอนต่อไปนี้:

  1. แบ่งข้อมูลระหว่างการฝึกอบรม / ทดสอบ
  2. สร้างแบบจำลองให้พอดีกับการฝึกอบรมทำนายผลในชุดทดสอบและคำนวณความแตกต่างระหว่างผลบวกจริง / เท็จ
  3. พอดีกับแบบเต็มทำการทำนายในชุดทดสอบและคำนวณความแตกต่างระหว่างผลบวก / จริง

ความแตกต่างระหว่างผลบวก / ลบจริงมีขนาดเล็กกว่าในขั้นตอน # 3 กว่าในขั้นตอนที่ 2 แม้ว่าชุดฝึกอบรมจะเป็นชุดย่อยของชุดเต็ม เนื่องจากฉันไม่สนใจว่าโมเดลใน # 3 มีเนกาทีฟที่แท้จริงมากขึ้นและมีเนกาทีฟที่ผิดพลาดน้อยกว่าจึงมีอะไรที่ฉันสามารถทำได้โดยไม่เปลี่ยนฟังก์ชั่นโอกาส


ก่อนถามว่าข้อบกพร่องของวิธีนี้คืออะไรคุณควรเขียนว่าทำไมวิธีการนี้ถึงได้ผล ทำไมคุณคิดว่าขั้นตอนที่ 2-4 ปรับปรุงผลลัพธ์
user31264

นอกจากนี้ฉันถูกต้องไหมว่าในตอนท้ายคุณวางโมเดลจากขั้นตอนที่ 1 และใช้เฉพาะรุ่นจากขั้นตอนที่ 4 เท่านั้น
user31264

ใช่ฉันกำลังวางแผนที่จะใช้แบบจำลองที่พอดีกับชุดข้อมูลทั้งหมด แต่มันก็ไม่มีเหตุผลที่จะทำเช่นนั้นเพราะมันมีประสิทธิภาพต่ำกว่ารุ่นที่พอดีกับชุดการฝึกอบรม
tmakino

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

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

คำตอบ:


24

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

ก่อนอื่นสัญกรณ์ ตัวแปรที่ขึ้นต่อกันจะเป็น :Yi

Yi={1Purchase i was profitable0Purchase i was un-profitable

ตัวแปรอิสระ (สิ่งที่คุณใช้พยายามทำนายว่าคุณควรซื้อ) จะเป็น (เวกเตอร์) พารามิเตอร์ที่คุณพยายามประมาณจะเป็น (เวกเตอร์) คุณจะคาดการณ์เมื่อซื้อ 0 สำหรับการสังเกตคุณทำนายซื้อเมื่อหรือเมื่อฟังก์ชั่นตัวบ่งชี้ 1XiβXiβ>0iXiβ>01Xiβ>0=1

บวกความจริงที่เกิดขึ้นในการสังเกตเมื่อทั้งสองและ 1 บวกที่ผิดพลาดในการสังเกตเกิดขึ้นเมื่อและ 1 คุณต้องการค้นหาที่เพิ่มผลบวกจริงลบด้วยค่าบวกเท็จหรือ: iYi=11Xiβ>0=1iYi=01Xiβ>0=1β

maxβi=1NYi1Xiβ>0i=1N(1Yi)1Xiβ>0

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

i=1NYi1Xiβ>0i=1N(1Yi)1Xiβ>0=i=1NYi1Xiβ>0i=1N1Xiβ>0+i=1NYi1Xiβ>0=i=1NYi1Xiβ>0i=1N1Xiβ>0+i=1NYi1Xiβ>0+i=1N1i=1N1+i=1NYii=1NYi=i=1NYi1Xiβ>0+i=1N(1Yi)(11Xiβ>0)i=1N1+i=1NYi

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

maxβi=1NYi1Xiβ>0+i=1N(1Yi)(11Xiβ>0)

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

นี่เป็นวิธีที่ดีในการประมาณรูปแบบการตอบสนองแบบไม่ต่อเนื่อง (ไบนารี) ตัวประมาณมีความสอดคล้องเช่น (Manski, 1985, J ของเศรษฐมิติ) มีความแปลกประหลาดบางอย่างสำหรับตัวประมาณนี้ ครั้งแรกมันไม่ได้เป็นเอกลักษณ์ในกลุ่มตัวอย่างขนาดเล็ก เมื่อคุณได้พบหนึ่งซึ่งจะช่วยแก้สูงสุดแล้วอื่น ๆซึ่งจะทำให้การคาดการณ์เดียวกันแน่นอนในชุดข้อมูลของคุณจะแก้สูงสุด --- การดังนั้นหลายอย่างมากมาย s ใกล้กับคนที่คุณพบ นอกจากนี้ตัวประมาณค่าไม่ได้เป็นแบบอะซิมโทติคส์และมันมาบรรจบกันช้ากว่าตัวประมาณความน่าจะเป็นสูงสุดแบบทั่วไป --- คิวบ์รูทแทนรูตβββNNการลู่เข้า (Kim และ Pollard, 1990, Ann of Stat) ในที่สุดคุณไม่สามารถใช้ bootstrapping เพื่ออนุมานได้ (Abrevaya & Huang, 2005, Econometrica) มีเอกสารบางส่วนที่ใช้ตัวประมาณนี้ --- มีความสนุกเกี่ยวกับการทำนายผลในการแข่งขันบาสเก็ตบอล NCAA โดย Caudill, วารสารการพยากรณ์ระหว่างประเทศ, เมษายน 2003, 19. 2, pp. 313-17

ตัวประมาณที่เอาชนะปัญหาเหล่านี้ส่วนใหญ่คือตัวประมาณค่าคะแนนสูงสุดที่ราบเรียบของ Horowitz (Horowitz, 1992, Econometrica และ Horowitz, 2002, J of Econometrics) มันให้รูท -สอดคล้องกันแบบอะซิมโตโตติมิเตอร์ประมาณค่าเฉพาะซึ่งคล้อยตามการบูตสแตรป Horowitz ให้รหัสตัวอย่างเพื่อใช้ตัวประมาณของเขาในหน้าเว็บของเขาN


ขอขอบคุณที่รวมพีชคณิตเพื่อเปรียบเทียบฟังก์ชันต้นทุนของฉันกับตัวประเมินคะแนนสูงสุด ด้วยฟังก์ชันตัวบ่งชี้ที่กำหนดสำหรับนี่หมายความว่าฉันจะจำแนกเป็นค่าบวกเสมอและเป็นค่าลบหรือไม่ นอกจากนี้ยังมีการคำนวณ p (เอาต์พุตโมเดล) โดยใช้ฟังก์ชันโลจิสติกพร้อมอินพุตหรือไม่ แนวทางปัจจุบันที่ฉันใช้คือฟังก์ชันต้นทุน AUC จากนั้นปรับค่าตามเกณฑ์การทำนายเพื่อหาค่าที่มีความแตกต่างสูงสุดระหว่างค่าบวกจริงและค่าบวกเท็จ ฉันเข้าใจว่าคำตอบของคุณค้นหาความแตกต่างสูงสุดอย่างชัดเจนβTx>0p>0.5p<=0.5βTx
tmakino

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

1
น่าเสียดายที่ฉันไม่คุ้นเคยกับวิธี AUC มากนักดังนั้นฉันจึงไม่สามารถบอกได้ว่ามันเหมาะสมแค่ไหนที่นี่ ในการประมาณค่าคะแนนสูงสุดนั้นไม่ได้เป็นๆ เพราะคุณไม่ได้สมมติแบบจำลองโลจิสติก คุณเป็นเพียงการตัดสินใจที่จะคาดการณ์ 1 เมื่อแล้วหาสิ่งที่ดีที่สุด\pXiβ>0β
Bill

15

มีหลายสิ่งผิดปกติในวิธีการดังกล่าว ได้แก่ :

  • ค้นหาทางลัดสำหรับความน่าจะเป็นอย่างต่อเนื่อง
  • ใช้ cutoff โดยพลการของ 0.5
  • สมมติว่าค่าใช้จ่ายของ "บวกเท็จ" และ "ลบเชิงลบ" จะเหมือนกันสำหรับทุกวิชา
  • ใช้น้ำหนักที่ไม่เป็นเศษส่วน
  • ใช้น้ำหนักที่ประมาณไว้
  • การเอาชนะการประเมินความเป็นไปได้สูงสุด
  • ไม่ใช้ทฤษฎีการตัดสินใจของเบย์ที่เหมาะสมซึ่งกำหนดว่าการตัดสินใจที่เหมาะสมจะขึ้นอยู่กับข้อมูลเต็มรูปแบบ

1
ขอบคุณมีวิธีที่จะบรรลุเป้าหมายนี้ในขณะที่ติดกับการถดถอยโลจิสติก (เช่นโดยไม่ต้องสัมผัสฟังก์ชั่นโอกาส)?
tmakino

ขึ้นอยู่กับว่า "นี่" คืออะไร เป้าหมายสูงสุดคืออะไรและจะใช้โมเดลนี้อย่างไร
Frank Harrell

ฉันแก้ไขคำถามเพื่อให้รายละเอียดเกี่ยวกับสิ่งที่ฉันพยายามทำ
tmakino

1
ถ้าฉันไม่มีอะไรขาดหายไปไม่มีอะไรที่คุณเพิ่มเข้ามาจะหมายถึงการใช้จุดตัด โปรดทราบว่าความน่าจะเป็นที่คาดการณ์ให้อัตราความผิดพลาดของตัวเอง
Frank Harrell

8

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

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

โดยใช้สูตรดั้งเดิมของแบบจำลองการถดถอยโลจิสติก

logit Pr(Y=1|X)=α+βX

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


1
ฉันคิดว่า AUC ไม่ดีที่สุดที่นี่เพราะมีการสูญเสียเล็กน้อยสำหรับการลบที่เป็นเท็จ แต่การสูญเสียที่มากสำหรับการบวกที่ผิดพลาด
ความน่าจะเป็นทางการ

ปัญหาที่แท้จริงคือ OP มีผลต่อเนื่อง (ROI) และแบ่งขั้วเป็นขาดทุน / กำไร แต่การแยกเส้นขนออกด้วยการถดถอยแบบ ROC โดยทั่วไปบริเวณที่ตัดเครื่องหมาย "โง่" โดยทั่วไปนับรวมไปยัง AUC คุณสามารถใช้ AUC บางส่วนได้หากคุณ prespecify สิ่งที่นับว่ามีความหมายกับค่าของตัวทำเครื่องหมายที่โง่และการถดถอย AUC บางส่วนมีความสามารถในการปฏิบัติงานเดียวกันทั้งหมด (และปัญหา)
AdamO
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.