Logistic Regression ใน R: สมการอนุพันธ์ [พร้อมตัวอย่าง]
เผยแพร่แล้ว: 2020-07-28ในบทความนี้ เราจะพูดถึงหนึ่งในแนวคิดที่พบบ่อยที่สุดแต่ท้าทายในการเรียนรู้ของเครื่อง การถดถอยโลจิสติก คุณจะพบว่าการถดถอยโลจิสติกคืออะไรและการได้มาของสมการถดถอยโลจิสติกในบทความโดยละเอียดนี้
เรายังได้แบ่งปันตัวอย่างของการถดถอยโลจิสติกใน R เพื่อให้เข้าใจแนวคิดได้อย่างง่ายดาย อย่างไรก็ตาม ตรวจสอบให้แน่ใจว่าคุณทราบแนวคิดทั้งหมดอย่างสมเหตุสมผลก่อนที่จะดำเนินการกับตัวอย่าง มันจะเป็นประโยชน์ถ้าคุณคุ้นเคยกับ การถดถอยเชิงเส้น เพราะแนวคิดทั้งสองนี้เชื่อมโยงกัน
สารบัญ
การถดถอยโลจิสติกคืออะไร?
การถดถอยโลจิสติกทำนายผลลัพธ์ไบนารีตามชุดของตัวแปรอิสระ เป็นอัลกอริธึมการจำแนกประเภทที่คาดการณ์ความน่าจะเป็นของเหตุการณ์โดยใช้ฟังก์ชันบันทึกและปรับข้อมูลให้เหมาะสม การถดถอยโลจิสติกแตกต่างจากการถดถอยเชิงเส้นเนื่องจากสามารถทำนายความเป็นไปได้ของผลลัพธ์ที่สามารถมีค่าได้เพียงสองค่าเท่านั้น การใช้การถดถอยเชิงเส้นไม่เหมาะสมเมื่อคุณมีตัวแปรไบนารีเนื่องจาก:
- การถดถอยเชิงเส้นจะทำนายค่าที่อยู่นอกช่วงที่ต้องการ
- การถดถอยอาจไม่กระจายผลประโยชน์ทั้งสองในบรรทัดเดียวที่คาดการณ์ไว้
การถดถอยโลจิสติกไม่ได้สร้างเส้นเหมือนการถดถอยเชิงเส้น จะให้เส้นโค้งลอจิสติกส์ที่มีช่วงระหว่าง 0 ถึงค่าที่มากกว่า 1
เรียนรู้ หลักสูตรออนไลน์วิทยาศาสตร์ข้อมูล จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
เช็คเอาท์: แนวคิดโครงการ R
สมการถดถอยโลจิสติกที่มา
เราหาสมการถดถอยโลจิสติกได้จากสมการถดถอยเชิงเส้น การถดถอยโลจิสติกอยู่ภายใต้คลาสของอัลกอริธึม glm (ตัวแบบเชิงเส้นทั่วไป) Nelder และ Wedderburn ได้แนะนำโมเดลนี้ในปี 1972 เป็นวิธีการใช้การถดถอยเชิงเส้นเพื่อแก้ปัญหาที่ไม่เคยแก้มาก่อน พวกเขาเสนอคลาสของตัวแบบแยกกันและได้เพิ่มการถดถอยโลจิสติกเป็นแบบจำลองพิเศษ
เรารู้ว่าสมการของตัวแบบเชิงเส้นทั่วไปมีดังต่อไปนี้:
g(e<y) = a + bx1
g() ย่อมาจากฟังก์ชันลิงก์ E(y) หมายถึงความคาดหวังของตัวแปรเป้าหมาย และ RHS (ด้านขวามือ) เป็นตัวทำนายเชิงเส้น ฟังก์ชันลิงก์ 'เชื่อมโยง' ความคาดหวังของ y กับตัวทำนายเชิงเส้น
สมมติว่าเรามีข้อมูลลูกค้า 100 ราย และเราจำเป็นต้องคาดการณ์ว่าลูกค้าจะซื้อผลิตภัณฑ์เฉพาะหรือไม่ เนื่องจากเรามีตัวแปรผลลัพธ์ที่เป็นหมวดหมู่ เราจึงต้องใช้การถดถอยโลจิสติก
เราจะเริ่มด้วยสมการถดถอยเชิงเส้น:
g(y) = o+(รายได้) — (1)
ในที่นี้ เราได้เก็บตัวแปรอิสระไว้เป็น 'รายได้' เพื่อความสะดวกในการทำความเข้าใจ
เรามุ่งเน้นที่ความน่าจะเป็นของตัวแปรตามผลลัพธ์ (ลูกค้าจะซื้อหรือไม่?) ดังที่เราได้กล่าวไปแล้ว g() คือฟังก์ชันลิงก์ของเรา และขึ้นอยู่กับความน่าจะเป็นของความสำเร็จ (p) และความน่าจะเป็นของความล้มเหลว (1-p) p ควรมีคุณสมบัติดังต่อไปนี้:
- p ควรจะเป็นบวกเสมอ
- p ควรน้อยกว่าหรือเท่ากับ 1 . เสมอ
ตอนนี้เราจะแสดง g() ด้วย 'p' และรับสมการถดถอยโลจิสติกของเรา
เนื่องจากความน่าจะเป็นเป็นบวกเสมอ เราจะครอบคลุมสมการเชิงเส้นในรูปแบบเลขชี้กำลังและได้ผลลัพธ์ต่อไปนี้
p = ประสบการณ์(0+(รายได้)) = e((0+(รายได้)) — (2)
เราจะต้องหาร p ด้วยจำนวนที่มากกว่า p เพื่อให้ความน่าจะเป็นน้อยกว่า 1:
p = exp(0+(income)) / (0+(income)) + 1 = e(0+(income)) / (0+(income)) + 1 — (3)
โดยใช้สมการ (1), (2) และ (3) เราสามารถกำหนด p เป็น:
p = ey /1 + ey — (4)
โดยที่ p คือความน่าจะเป็นของความสำเร็จ ดังนั้น 1-p จะต้องเป็นความน่าจะเป็นของความล้มเหลว:
q = 1 – p = 1 -(ey /1 + ey) — (5)
ทีนี้ลองหาร (4) ด้วย (5):
p / 1 – p = อาย
หากเราบันทึกทั้งสองด้าน เราจะได้สิ่งต่อไปนี้:
บันทึก (p / 1 – p) = y
นี่คือฟังก์ชันลิงค์ เมื่อเราแทนค่าของ y ที่เราตั้งไว้ก่อนหน้านี้ เราจะได้:
บันทึก(p / 1 – p) = o + (รายได้)
และนั่นคือสมการถดถอยโลจิสติก เนื่องจากมีความน่าจะเป็นของผลลัพธ์ ค่าของมันจะอยู่ระหว่าง 0 และสูงกว่า 1 เสมอ
อ่านเกี่ยวกับ: 9 แนวคิดและหัวข้อโครงการการถดถอยเชิงเส้นที่น่าสนใจสำหรับผู้เริ่มต้น
ตัวอย่างของการถดถอยโลจิสติกใน R
ในกรณีของการถดถอยโลจิสติกใน R เราใช้ข้อมูลจาก UCLA (มหาวิทยาลัยแคลิฟอร์เนีย ลอสแองเจลิส) ที่นี่เราต้องสร้างแบบจำลองที่คาดการณ์โอกาสในการได้รับการยอมรับตามข้อมูลที่เรามี เรามีตัวแปรสี่ตัว ได้แก่ เกรดเฉลี่ย คะแนน GRE ยศของนักศึกษาระดับปริญญาตรีวิทยาลัย และสารภาพ
df <- read.csv(“https://stats.idre.ucla.edu/stat/data/binary.csv”)
str(df)
## 'data.frame': 400 obs จาก 4 ตัวแปร:
## $ ยอมรับ: int 0 1 1 1 0 1 1 0 1 0 …
## $ gre : int 380 660 800 640 520 760 560 400 540 700 …
## $ เกรดเฉลี่ย : num 3.61 3.67 4 3.19 2.93 3 2.98 3.08 3.39 3.92 …
## $ อันดับ : int 3 3 1 4 4 2 1 2 3 2 …
ตัวแปรเป็นตัวเลขหรือจำนวนเต็ม:
ผลรวม(is.na(df))
## [1] 0
นอกจากนี้เรายังพบว่าไม่มีค่าว่าง และมีเหตุการณ์ของการปฏิเสธมากกว่าการยอมรับเนื่องจากค่าเฉลี่ยของขีดจำกัดของตัวแปรน้อยกว่า 0.5
คุณควรตรวจสอบให้แน่ใจว่าระบบกระจายการยอมรับอย่างเหมาะสมในทุกประเภทของยศ สมมติว่าอันดับหนึ่งมีเพียง 5 ปฏิเสธ (หรือยอมรับข้อมูล) จากนั้นคุณไม่จำเป็นต้องใช้อันดับนั้นในการวิเคราะห์ของคุณ

xtabs(~ ยอมรับ +อันดับ ,data=df)
## อันดับ
## ยอมรับ 1 2 3 4
## 0 28 97 93 55
## 1 33 54 28 12
เรียกใช้ฟังก์ชันของเราตอนนี้:
df$rank <- as.factor(df$rank)
logit <- glm(admit ~ gre+gpa+rank,data=df,family=”binomial”)
สรุป(logit)
##
## เรียก:
## glm(สูตร = ยอมรับ ~ gre + เกรดเฉลี่ย + อันดับ ครอบครัว = “ทวินาม”
## ข้อมูล = df)
##
## ค่าเบี่ยงเบนที่เหลือ:
## ต่ำสุด 1Q ค่ามัธยฐาน 3Q สูงสุด
## -1.6268 -0.8662 -0.6388 1.1490 2.0790
##
## สัมประสิทธิ์:
## ประมาณการมาตรฐาน ข้อผิดพลาด z ค่า Pr(>|z|)
## (สกัดกั้น) -3.989979 1.139951 -3.500 0.000465 ***
## เกร 0.002264 0.001094 2.070 0.038465 *
## เกรดเฉลี่ย 0.804038 0.331819 2.423 0.015388 *
## อันดับ2 -0.675443 0.316490 -2.134 0.032829 *
## อันดับ3 -1.340204 0.345306 -3.881 0.000104 ***
## อันดับ4 -1.551464 0.417832 -3.713 0.000205 ***
## —
## ซิกนิฟ รหัส: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1' ' 1
##
## (พารามิเตอร์การกระจายสำหรับแฟมิลีทวินามที่นำมาเป็น 1)
##
## Null deviance: 499.98 ที่ 399 องศาอิสระ
## ความเบี่ยงเบนที่เหลือ: 458.52 บน 394 องศาอิสระ
## AIC: 470.52
##
## จำนวนการทำซ้ำการให้คะแนนของชาวประมง: 4
คุณต้องสังเกตว่าเราได้แปลงตัวแปรอันดับเป็นปัจจัยจากจำนวนเต็มก่อนที่จะเรียกใช้ฟังก์ชัน ตรวจสอบให้แน่ใจว่าคุณทำเช่นเดียวกัน
ผลลัพธ์สุดท้าย:
สมมติว่าเกรดเฉลี่ยของนักเรียนคือ 3.8 คะแนน GRE 790 และเขาเรียนในวิทยาลัยอันดับ 1 มาค้นหาโอกาสที่จะได้รับการยอมรับในอนาคตโดยใช้แบบจำลองของเรา:
x <- data.frame(gre=790,gpa=3.8,rank=as.factor(1))
p<- ทำนาย (logit,x)
พี
## 1
## 0.85426
แบบจำลองของเราคาดการณ์ว่าเด็กชายคนนี้มีโอกาส 85% ที่จะได้รับการยอมรับในอนาคต
อ่านเพิ่มเติม: แนวคิดโครงการการเรียนรู้ของเครื่อง
ความคิดสุดท้าย
เพียงเท่านี้สำหรับบทความนี้ เรามั่นใจว่าคุณจะพบว่ามันมีประโยชน์มาก หากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับการถดถอยโลจิสติกและหัวข้อที่เกี่ยวข้อง โปรดแบ่งปันในส่วนความคิดเห็นด้านล่าง
หากคุณอยากรู้ที่จะเรียนรู้เกี่ยวกับ R ทุกอย่างเกี่ยวกับวิทยาศาสตร์ข้อมูล ลองดู IIIT-B & upGrad's Executive PG Program in Data Science ซึ่งสร้างขึ้นสำหรับมืออาชีพที่ทำงานและเสนอกรณีศึกษาและโครงการมากกว่า 10+ เวิร์กช็อปภาคปฏิบัติ การให้คำปรึกษากับ ผู้เชี่ยวชาญในอุตสาหกรรม ตัวต่อตัวกับที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ
Logistic regression กับ linear regression ต่างกันอย่างไร?
เป้าหมายของการถดถอยเชิงเส้นคือการระบุเส้นที่เหมาะสมที่สุด แต่การถดถอยโลจิสติกไปไกลกว่าหนึ่งขั้นและปรับค่าเส้นให้พอดีกับเส้นโค้งซิกมอยด์ ความแตกต่างหลักระหว่างสองวิธีนี้คือ การถดถอยโลจิสติกถูกนำไปใช้เมื่อตัวแปรตามเป็นเลขฐานสอง เมื่อตัวแปรตามมีความต่อเนื่องและเส้นถดถอยเป็นเส้นตรง การถดถอยเชิงเส้นจะถูกใช้ ในขณะที่ใช้เทคนิคกำลังสองน้อยที่สุดธรรมดาในการประมาณการถดถอยเชิงเส้น แต่วิธีการประมาณค่าความน่าจะเป็นสูงสุดใช้เพื่อประมาณการถดถอยโลจิสติก ผลลัพธ์ของการถดถอยเชิงเส้นนั้นต่อเนื่อง แต่ผลลัพธ์ของการถดถอยโลจิสติกมีค่าศักย์ไม่ต่อเนื่องในจำนวนจำกัด
การใช้การถดถอยโลจิสติกมีประโยชน์เมื่อใด
ตัวแปรตามหมวดหมู่ถูกทำนายโดยใช้การถดถอยโลจิสติก เมื่อข้อมูลที่เรามีสามารถวัดได้ในระดับอนันต์ เราก็สามารถใช้การถดถอยโลจิสติกได้ การวิเคราะห์การถดถอยโลจิสติกมีประโยชน์สำหรับการประมาณความน่าจะเป็นของเหตุการณ์ ช่วยในการกำหนดความน่าจะเป็นของสองคลาสใด ๆ เฉพาะผลการจำแนกประเภทและความน่าจะเป็นเท่านั้นที่สามารถคาดการณ์ได้โดยใช้การถดถอยโลจิสติก อาจใช้เพื่อแก้ปัญหาการจัดหมวดหมู่ต่างๆ เช่น การตรวจหาสแปม การทำนายโรคเบาหวาน การวินิจฉัยโรคมะเร็ง และอื่นๆ
การใช้การถดถอยโลจิสติกมีข้อจำกัดอย่างไร
1. เนื่องจากการถดถอยโลจิสติกมีพื้นผิวการตัดสินใจเชิงเส้น จึงไม่สามารถแก้ไขปัญหาที่ไม่เป็นเชิงเส้นได้
2. อัลกอริทึมการถดถอยโลจิสติกมีความไวต่อค่าผิดปกติ
3. เนื่องจากทั้งการปรับขนาดและการทำให้เป็นมาตรฐานเป็นเกณฑ์หลักของ Logistic Regression การเตรียมข้อมูลจึงอาจใช้เวลานาน
4. หากมีคุณลักษณะที่แยกสองคลาสโดยสิ้นเชิง โมเดลจะไม่สามารถฝึกได้อีกต่อไป สิ่งนี้เรียกว่า 'การแยกอย่างสมบูรณ์'
5. หากจำนวนการสังเกตน้อยกว่าจำนวนจุดสนใจ ไม่ควรใช้การถดถอยโลจิสติกเพราะอาจส่งผลให้เกิดการ overfitting
6. ข้อเสียอีกประการหนึ่งคือจุดข้อมูลแต่ละจุดในการถดถอยโลจิสติกต้องไม่ขึ้นกับจุดข้อมูลอื่นทั้งหมด เมื่อการสังเกตถูกเชื่อมโยงเข้าด้วยกัน ตัวแบบมีแนวโน้มที่จะประเมินค่าความเกี่ยวข้องของการสังเกตเหล่านั้นสูงเกินไป