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. ข้อเสียอีกประการหนึ่งคือจุดข้อมูลแต่ละจุดในการถดถอยโลจิสติกต้องไม่ขึ้นกับจุดข้อมูลอื่นทั้งหมด เมื่อการสังเกตถูกเชื่อมโยงเข้าด้วยกัน ตัวแบบมีแนวโน้มที่จะประเมินค่าความเกี่ยวข้องของการสังเกตเหล่านั้นสูงเกินไป