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


10

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

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


หากคุณมีตัวทำนายมากกว่า 1 ตัวอาจเป็นเรื่องยากหากไม่มีตัวแบบการถดถอย สิ่งที่คุณมีในใจ? เพียงแค่ตารางความต่อเนื่องมิติขนาดใหญ่( kคือจำนวนผู้ทำนาย) kk
แมโคร

หมวดหมู่ตัวทำนายแบ่งออกเป็นมากกว่าหนึ่งปัจจัยหรือไม่และถ้าเป็นเช่นนั้นจะข้ามหรือซ้อนกันหรือไม่ นอกจากนี้คุณสนใจทำข้อความบรรยายหรือไม่? ถ้าข้อมูลของคุณมีความซับซ้อนแบบ LR อาจจะสะดวกกว่าและถ้าคุณต้องการทำการอนุมาน LR เป็นที่ต้องการอย่างยิ่งฉันคิดว่า
gung - Reinstate Monica

@Macro - ใช่ฉันคิดว่ามันจะเป็นตารางขนาดใหญ่โดยมีหนึ่งคอลัมน์แสดง # ของตัวอย่างคะแนนที่สอดคล้องกับสถานการณ์และอีกคอลัมน์หนึ่งแสดงสัดส่วนของ 1 ฉันมีตัวทำนายห้าหมวดโดยแต่ละคนมีค่าที่เป็นไปได้ 10-30 ค่าดังนั้นฉันจึงรู้ว่ารายการสถานการณ์จะสูง ฉันคิดว่าจะเขียนสคริปต์วนรอบใน R ที่ผ่านแต่ละผลลัพธ์ผลลัพธ์ที่สำคัญ (สัดส่วนที่สูงของคะแนนตัวอย่างจำนวน 1 บวก # จำนวนมากในสถานการณ์)
Rachel

@gung - ปัจจัยถูกข้ามเพียงบางส่วนเท่านั้น ไม่มีปัจจัยใดที่จะถูกพิจารณาว่าซ้อนกัน ฉันสนใจที่จะค้นหาการรวมกันของปัจจัยต่าง ๆ (เช่นรัฐ, ลูกค้า, พนักงาน) ที่น่าจะมีความน่าจะเป็นสูงที่ตัวแปรตอบสนองจะเท่ากับ 1
Rachel

1
@EmreA - น่าเสียดายที่ตัวแปรจัดหมวดหมู่ไม่ได้เป็นอิสระโดยสิ้นเชิง ชุดค่าผสมบางชุดมีแนวโน้มมากกว่าชุดค่าผสมอื่น ๆ ...
ราเชล

คำตอบ:


11

การถดถอยแบบลอจิสติกจะเท่ากับตัวเลขที่ไม่ถูกต้อง ดังนั้นหากตัวแปรอิสระของคุณเป็นวัตถุปัจจัยfactor1ฯลฯ และผลลัพธ์ที่ขึ้นต่อกัน (0 และ 1) คือxคุณสามารถได้รับผลกระทบด้วยนิพจน์เช่น

aggregate(x, list(factor1, <etc>), FUN=mean)

เปรียบเทียบสิ่งนี้กับ

glm(x ~ factor1 * <etc>, family=binomial(link="logit"))

ตัวอย่างเช่นเรามาสร้างข้อมูลสุ่ม:

set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))

สรุปได้ด้วย

aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results

มันรวมถึงการส่งออก

   Group.1 Group.2 Group.3         x
1        0       0       0 0.5128205
2        1       0       0 0.4210526
3        0       1       0 0.5454545
4        1       1       0 0.6071429
5        0       2       0 0.4736842
6        1       2       0 0.5000000
...
24       1       2       3 0.5227273

สำหรับการอ้างอิงในอนาคตการประมาณการปัจจัยที่ระดับ (1,2,0) ในแถวที่ 6 ของผลลัพธ์คือ 0.5

การถดถอยโลจิสติกให้ค่าสัมประสิทธิ์แบบนี้:

model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients

ในการใช้พวกเราต้องการฟังก์ชันลอจิสติก:

logistic <- function(x) 1 / (1 + exp(-x))

ที่จะได้รับเช่นประมาณการสำหรับปัจจัยที่ระดับ (1,2,0) คำนวณ

logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])

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

(Intercept) 
        0.5

aggregateเห็นด้วยกับผลการ (ส่วนหัว "(ตัด)" ในเอาต์พุตเป็นร่องรอยของอินพุตและไม่มีความหมายสำหรับการคำนวณนี้)


tableข้อมูลเดียวกันในอีกรูปแบบที่ปรากฏในการส่งออกของ เช่นผลลัพธ์ (ความยาว) ของ

table(x, factor1, factor2, factor3)

รวมถึงแผงนี้:

, , factor2 = 2, factor3 = 0

   factor1
x    0  1
  0 20 21
  1 18 21

factor121/(21+21)=0.5x1aggregateglm


ในที่สุดการรวมกันของปัจจัยที่ให้สัดส่วนที่สูงที่สุดในชุดข้อมูลจะได้รับจากการส่งออกของaggregate:

> aggregate.results[which.max(aggregate.results$x),]
  Group.1 Group.2 Group.3         x
4       1       1       0 0.6071429

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

(+1), ปิดข้อมือฉันสงสัยว่าข้อผิดพลาดมาตรฐานในบริบทนี้จากการถดถอยโลจิสติกสามารถรวมเข้ากับบทสรุปของแผนโมเสคแบบกราฟิกที่ฉันแนะนำ ฉันยังสงสัยว่านี่อาจเป็นวิธีที่ดีในการ "กรอง" ผลการโต้ตอบที่น่าสนใจได้อย่างรวดเร็ว (นี่เป็นเพียงเพลงของฉัน!)
Andy W

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

@ Neil แน่ใจว่ามันสามารถเข้ารหัส "ความสัมพันธ์" ทั้งหมด (การรวมกันของปัจจัย): ใช้การโต้ตอบที่เป็นไปได้ทั้งหมด ดูตัวอย่างรหัส R เมื่อปัจจัยมีมากมายในทางปฏิบัติจะมีชุดค่าผสมที่ว่างเปล่าจำนวนมาก แต่ซอฟต์แวร์ที่เหมาะสมจะไม่มีปัญหาในการจัดการกับสิ่งนั้น ซอฟต์แวร์ที่ดียิ่งขึ้นจะจัดการชุดค่าผสมโดยไม่มีการตอบสนองที่เปลี่ยนแปลง
whuber

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

6

หาอย่างรวดเร็วได้อย่างรวดเร็วในสัดส่วนของการตอบสนองไบนารีในแต่ละประเภทและ / หรือเงื่อนไขในหลายหมวดหมู่ที่แปลงกราฟิกสามารถให้บริการ โดยเฉพาะอย่างยิ่งไปพร้อม ๆ กันเห็นภาพสัดส่วนปรับอากาศในหลายตัวแปรอิสระเด็ดขาดฉันขอแนะนำให้พล็อโมเสค

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

เนื้อเรื่องโมเสกของไททานิค
(ที่มา: theusrus.de )

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

โมเสกเงื่อนไขตามตัวแปรที่สาม
(ที่มา: theusrus.de )

มันน่าทึ่งมากที่มีข้อมูลปรากฏขึ้นซึ่งเป็นสัดส่วนในสี่มิติ (คลาสผู้ใหญ่ / เด็กเพศและสัดส่วนของผู้รอดชีวิต)!

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


+1 นี่คือจุดที่ฉันพยายามทำในความคิดเห็นของฉันด้านบนว่าเป้าหมายนั้นเป็นคำอธิบายหรือการอนุมานที่เรียบง่าย นั่นเป็นจุดที่ชัดเจนและสร้างตัวเลขได้ดีกว่า!
gung - Reinstate Monica

@ gung ขอบคุณสิ่งที่Nbยืนสำหรับ ฉันมักจะพูดได้ดีขึ้นกับตัวเลขเช่นกัน!
Andy W

2
ไม่มีอะไรเกี่ยวข้องกับสถิติ "nb" ย่อมาจากnota beneซึ่งในทางกลับกันคือละตินสำหรับ 'note well' (ตัวอักษร) หรือ 'note that' / 'notice' (เพิ่มเติมเรียกขาน)
gung - Reinstate Monica

3

ขึ้นอยู่กับความต้องการของคุณคุณอาจพบว่าการแบ่งส่วนแบบเรียกซ้ำนั้นเป็นวิธีที่ง่ายต่อการตีความเพื่อทำนายตัวแปรผลลัพธ์ สำหรับข้อมูลเบื้องต้นเกี่ยวกับวิธีการRให้ดูที่หน้าแบบจำลองทรีของ Quick-R โดยทั่วไปแล้วผมชอบctree()การใช้งานใน `แพคเกจปาร์ตี้ของ R เนื่องจากไม่ต้องกังวลเรื่องการตัดแต่งกิ่ง

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


2

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

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

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

โดยสรุปการถดถอยโลจิสติกทำให้สมมติฐานเกี่ยวกับอิทธิพลอิสระของตัวทำนายซึ่งช่วยลดจำนวนของพารามิเตอร์แบบจำลองและให้รูปแบบที่ง่ายต่อการเรียนรู้


1

คุณควรดูอัลกอริธึมการเลือกคุณลักษณะ หนึ่งที่เหมาะสำหรับกรณีของคุณ (การจำแนกไบนารี, ตัวแปรเด็ดขาด) คือ "วิธีการลดความซ้ำซ้อนสูงสุดขั้นต่ำ" (mRMR) คุณสามารถลองออนไลน์ได้อย่างรวดเร็วที่http://penglab.janelia.org/proj/mRMR/


เป็นไปได้หรือไม่ที่จะรันโปรแกรมนี้โดยใช้ตัวทำนายหมวดหมู่มากกว่าหนึ่งอัน? ในหน้าอัปโหลดดูเหมือนว่าคอลัมน์แรกเท่านั้นที่สามารถเป็น "คลาส" ของข้อมูล ... บางทีฉันอาจไม่เข้าใจว่าควรจัดรูปแบบข้อมูลอย่างไร
Rachel

หรือ "คลาส" ควรจะเป็นตัวแปรเอาต์พุตในกรณีนี้คือ 0 หรือ 1 ถ้าเป็นเช่นนั้นเป็นสิ่งสำคัญหรือไม่ที่จะเปลี่ยนตัวแปรเด็ดขาดเป็นตัวแปรดัมมี่เพื่อแสดงตัวบ่งชี้สำหรับแต่ละตัว?
Rachel

คุณสามารถทำนายได้มากเท่าที่คุณต้องการ แถวแรกของไฟล์ข้อมูลของคุณต้องเป็นชื่อสถานที่และคอลัมน์แรกจะต้องเป็นคลาส (ตัวแปรตอบกลับ) สำหรับตัวอย่าง ตัวอย่างเช่น: response,predictor1,predictor2,predictor3 <line break here> 1,5,4,3 <line break here> 0,5,3,-1 <line break here> 1,1,2,3
emrea

1

ฉันทำงานในด้านการให้คะแนนเครดิตซึ่งสิ่งที่นี่ถูกนำเสนอเป็นกรณีที่แปลกคือบรรทัดฐาน

เราใช้การถดถอยโลจิสติกและแปลงตัวแปรทั้งหมวดหมู่และต่อเนื่องเป็นน้ำหนักของหลักฐาน (WOEs) ซึ่งจะใช้เป็นตัวทำนายในการถดถอย ใช้เวลานานมากในการจัดกลุ่มตัวแปรเด็ดขาดและแยกแยะตัวแปรต่อเนื่อง

น้ำหนักของหลักฐานเป็นการคำนวณอย่างง่าย มันเป็นบันทึกของอัตราต่อรองสำหรับชั้นเรียนน้อยลงบันทึกอัตราต่อรองสำหรับประชากร:
WOE = ln (ดี (คลาส) / ไม่ดี (ระดับ)) - ln (ดี (ทั้งหมด) / ไม่ดี (ทั้งหมด) นี่คือ ระเบียบวิธีการแปลงมาตรฐานสำหรับแบบจำลองการให้คะแนนเครดิตเกือบทั้งหมดที่สร้างขึ้นโดยใช้การถดถอยโลจิสติก คุณสามารถใช้ตัวเลขเดียวกันในวิธีการตามเข็มนาฬิกา

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


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