วิธีการใช้งาน Linear Discriminant Analysis ใน R?



บทความนี้จะบอกคุณว่าการวิเคราะห์จำแนกเชิงเส้นคืออะไรและยังมีการสาธิตโดยละเอียดโดยใช้ภาษา R Programming

Linear Discriminant Analysis เป็นเทคนิค Machine Learning ที่ได้รับความนิยมมากซึ่งใช้ในการแก้ปัญหาการจำแนกประเภท ในบทความนี้เราจะพยายามทำความเข้าใจสัญชาตญาณและคณิตศาสตร์ที่อยู่เบื้องหลังเทคนิคนี้ ตัวอย่างการใช้งาน LDA ใน นอกจากนี้ยังมี

มาเริ่มกันเลย





สมมติฐานการวิเคราะห์เชิงเส้นตรง

Linear Discriminant Analysis ขึ้นอยู่กับสมมติฐานต่อไปนี้:

  • ตัวแปรตาม ไม่ต่อเนื่อง ในบทความนี้เราจะถือว่าตัวแปรตามเป็นไบนารีและรับค่าคลาส {+1, -1} . ความน่าจะเป็นของตัวอย่างที่เป็นของคลาส +1 เช่น P (Y = +1) = หน้า . ดังนั้นความน่าจะเป็นของตัวอย่างที่อยู่ในคลาส -หนึ่ง คือ 1- น .



  • ตัวแปรอิสระ X มาจากการแจกแจงแบบเกาส์ ค่าเฉลี่ยของการแจกแจงแบบเกาส์เซียนขึ้นอยู่กับฉลากของคลาส . เช่นถ้า ผม = +1 แล้วค่าเฉลี่ยของ X ผม คือ & # 120583 +1 เป็นอย่างอื่น & # 120583 -หนึ่ง . ความแปรปรวน & # 120590 2 เหมือนกันสำหรับทั้งสองคลาส การพูดทางคณิตศาสตร์ X | (Y = +1) ~ N (& # 120583 +1 , & # 120590 2 ) และ X | (Y = -1) ~ N (& # 120583 -หนึ่ง , & # 120590 2 ) , ที่ไหน หมายถึงการแจกแจงปกติ

ด้วยข้อมูลนี้คุณสามารถสร้างการกระจายร่วมได้ P (X, Y) สำหรับตัวแปรอิสระและตัวแปรตาม ดังนั้น LDA จึงอยู่ในคลาสของ Generative Classifier Models . ลักษณนามกำเนิดที่เกี่ยวข้องอย่างใกล้ชิดคือการวิเคราะห์แยกแยะกำลังสอง (QDA) มันขึ้นอยู่กับสมมติฐานเดียวกันทั้งหมดของ LDA ยกเว้นความแปรปรวนของคลาสจะแตกต่างกัน

ให้เราดำเนินการต่อด้วยบทความการวิเคราะห์การแยกแยะเชิงเส้นและดู

ปรีชา

พิจารณาการแจกแจงแบบเกาส์แบบมีเงื่อนไขของคลาสสำหรับ X ให้ชั้นเรียน . รูปด้านล่างแสดงฟังก์ชันความหนาแน่นของการแจกแจง ในรูปนี้ถ้า Y = +1 แล้วค่าเฉลี่ยของ X คือ 10 และถ้า Y = -1 ค่าเฉลี่ยคือ 2 ความแปรปรวนเป็น 2 ในทั้งสองกรณี

สัญชาตญาณ - การวิเคราะห์การแยกแยะเชิงเส้น - Edureka

ตอนนี้สมมติว่าค่าใหม่เป็น X มอบให้กับเรา ให้แสดงว่าเป็น x ผม . งานคือการกำหนดป้ายชื่อคลาสที่เป็นไปได้มากที่สุดสำหรับสิ่งนี้ x ผม เช่น ผม . เพื่อความง่ายสมมติว่าความน่าจะเป็น ของกลุ่มตัวอย่างที่อยู่ในชั้นเรียน +1 เหมือนกับของชั้นเรียน -หนึ่ง เช่น p = 0.5 .

โดยสัญชาตญาณมันสมเหตุสมผลที่จะพูดว่าถ้า x ผม อยู่ใกล้กว่า & # 120583 +1 มากกว่าที่จะเป็น & # 120583 -หนึ่ง ก็มีแนวโน้มว่า ผม = +1 . เป็นทางการมากขึ้น ผม = +1 ถ้า:

| x ผม - & # 120583 +1 |<|x ผม - & # 120583 -หนึ่ง |

การทำให้ทั้งสองด้านเป็นปกติโดยค่าเบี่ยงเบนมาตรฐาน:

| x ผม - & # 120583 +1 | / & # 120590<|x ผม - & # 120583 -หนึ่ง | / & # 120590

กำลังสองทั้งสองข้าง:

(x ผม - & # 120583 +1 ) 2 / & # 120590 2 <(x ผม - & # 120583 -หนึ่ง ) 2 / & # 120590 2

x ผม 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x ผม & # 120583 +1 / & # 120590 2 ผม 2 / & # 120590 2 + & # 120583 -หนึ่ง 2 / & # 120590 2 - 2 x ผม & # 120583 -หนึ่ง / & # 120590 2

2 x ผม (& # 120583 -หนึ่ง - & # 120583 +1 ) / & # 120590 2 - (& # 120583 -หนึ่ง 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )<0

-2 x ผม (& # 120583 -หนึ่ง - & # 120583 +1 ) / & # 120590 2 + (& # 120583 -หนึ่ง 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )> 0

นิพจน์ข้างต้นเป็นของแบบฟอร์ม bx ผม + c> 0 ที่ไหน b = -2 (& # 120583 -หนึ่ง - & # 120583 +1 ) / & # 120590 2 และ c = (& # 120583 -หนึ่ง 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

เห็นได้ชัดว่ารูปแบบของสมการคือ เชิงเส้น ดังนั้นชื่อ Linear Discriminant Analysis

ให้เราดำเนินการต่อในบทความการวิเคราะห์การแยกแยะเชิงเส้นและดู

คำอธิบายทางคณิตศาสตร์ของ LDA

รากศัพท์ทางคณิตศาสตร์ของนิพจน์สำหรับ LDA นั้นขึ้นอยู่กับแนวคิดเช่น กฎของ Bayes และ Bayes Optimal Classifier . ผู้อ่านที่สนใจควรอ่านเพิ่มเติมเกี่ยวกับแนวคิดเหล่านี้ วิธีหนึ่งในการรับนิพจน์สามารถพบได้ ที่นี่ .

เราจะจัดเตรียมนิพจน์โดยตรงสำหรับกรณีเฉพาะของเราที่ ใช้เวลาสองคลาส {+1, -1} . นอกจากนี้เราจะขยายสัญชาตญาณที่แสดงในส่วนก่อนหน้านี้ไปยังกรณีทั่วไปที่ X สามารถมีหลายมิติ สมมติว่ามี ถึง ตัวแปรอิสระ. ในกรณีนี้คลาสหมายถึง & # 120583 -หนึ่ง และ & # 120583 +1 จะเป็นเวกเตอร์ของมิติ k * 1 และเมทริกซ์ความแปรปรวน - ความแปรปรวนร่วม & # 120622 จะเป็นเมทริกซ์ของมิติ k * k .

ฟังก์ชันลักษณนามกำหนดเป็น

Y = h (X) = เครื่องหมาย (b ที X + c)

ที่ไหน

b = -2 & # 120622 -หนึ่ง (& # 120583 -หนึ่ง - & # 120583 +1 )

c = & # 120583 -หนึ่ง ที & # 120622 -หนึ่ง & # 120583 -หนึ่ง - & # 120583 -หนึ่ง ที & # 120622 -หนึ่ง & # 120583 -หนึ่ง {-2 ln (1-p) / p}

ฟังก์ชันเครื่องหมายส่งกลับ +1 ถ้านิพจน์ ที x + c> 0 มิฉะนั้นจะกลับมา -หนึ่ง . คำบันทึกธรรมชาติใน นำเสนอเพื่อปรับความจริงที่ว่าความน่าจะเป็นของคลาสไม่จำเป็นต้องเท่ากันสำหรับทั้งสองคลาสนั่นคือ อาจเป็นค่าใดก็ได้ระหว่าง (0, 1) ไม่ใช่แค่ 0.5

การเรียนรู้พารามิเตอร์ของโมเดล

กำหนดชุดข้อมูลด้วย จุดข้อมูล (x หนึ่ง , ย หนึ่ง ), (x 2 , ย 2 ), … (X n , ย n ) เราต้องประมาณ p, & # 120583 -หนึ่ง , & # 120583 +1 และ & # 120622 . เทคนิคการประมาณค่าทางสถิติที่เรียกว่า การประมาณความเป็นไปได้สูงสุด ใช้ในการประมาณค่าพารามิเตอร์เหล่านี้ นิพจน์สำหรับพารามิเตอร์ข้างต้นแสดงไว้ด้านล่าง

& # 120583 +1 = (1 / น +1 ) * & # 120506 ผม: yi = + 1 x ผม

& # 120583 -หนึ่ง = (1 / น -หนึ่ง ) * & # 120506 ผม: yi = -1 x ผม

p = น +1 / น

& # 120622 = (1 / น) * & # 120506ผม = 1: น (x ผม - & # 120583 ผม ) (x ผม - & # 120583 ผม ) ที

ที่ไหน +1 = จำนวนตัวอย่างโดยที่ y ผม = +1 และ -หนึ่ง = จำนวนตัวอย่างโดยที่ y ผม = -1 .

ด้วยนิพจน์ข้างต้นโมเดล LDA จึงสมบูรณ์ เราสามารถประมาณพารามิเตอร์แบบจำลองโดยใช้นิพจน์ข้างต้นและใช้ในฟังก์ชันลักษณนามเพื่อรับป้ายชื่อคลาสของค่าอินพุตใหม่ของตัวแปรอิสระ X .

ให้เราดำเนินการต่อด้วยบทความการวิเคราะห์การแยกแยะเชิงเส้นและดู

ตัวอย่างใน R

รหัสต่อไปนี้สร้างชุดข้อมูลจำลองที่มีตัวแปรอิสระสองตัว X1 และ X2 และตัวแปรตาม . สำหรับ X1 และ X2 เราจะสร้างตัวอย่างจากการแจกแจงแบบเกาส์หลายตัวแปรด้วยวิธีการ & # 120583 -หนึ่ง = (2, 2) และ & # 120583 +1 = (6, 6) . 40% ของกลุ่มตัวอย่างอยู่ในชั้นเรียน +1 และ 60% เป็นของชั้นเรียน -หนึ่ง ดังนั้น p = 0.4 .

ไลบรารี (ggplot2) ไลบรารี (MASS) ไลบรารี (mvtnorm) # ความแปรปรวนของเมทริกซ์ความแปรปรวนร่วมสำหรับตัวอย่าง gaussian แบบสุ่ม var_covar = เมทริกซ์ (data = c (1.5, 0.3, 0.3, 1.5), nrow = 2) #Random bivariate ตัวอย่าง gaussian สำหรับคลาส + 1 Xplus1<- rmvnorm(400, mean = c(6, 6), sigma = var_covar) # Random bivariate gaussian samples for class -1 Xminus1 <- rmvnorm(600, mean = c(2, 2), sigma = var_covar) #Samples for the dependent variable Y_samples <- c(rep(1, 400), rep(-1, 600)) #Combining the independent and dependent variables into a dataframe dataset <- as.data.frame(cbind(rbind(Xplus1, Xminus1), Y_samples)) colnames(dataset) <- c('X1', 'X2', 'Y') dataset$Y <- as.character(dataset$Y) #Plot the above samples and color by class labels ggplot(data = dataset)+ geom_point(aes(X1, X2, color = Y)) 

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

ตอนนี้เราจะฝึกโมเดล LDA โดยใช้ข้อมูลข้างต้น

# ฝึกโมเดล LDA โดยใช้ชุดข้อมูล lda_model ด้านบน<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

เอาท์พุต:

ความน่าจะเป็นก่อนหน้าของกลุ่ม:

- สิบเอ็ด

0.6 0.4

หมายถึงกลุ่ม:

X1 X2

-1 1.928108 2.010226

1 5.961004 6.015438

สิ่งที่สามารถต่อเนื่องกันได้ใน java

ค่าสัมประสิทธิ์ของตัวเลือกเชิงเส้น:

LD1

X1 0.5646116

X2 0.5004175

อย่างที่เราเห็นวิธีการเรียนโดยโมเดลคือ (1.928108, 2.010226) สำหรับชั้นเรียน -หนึ่ง และ (5.961004, 6.015438) สำหรับคลาส +1 . วิธีการเหล่านี้ใกล้เคียงกับคลาสมากซึ่งหมายความว่าเราใช้ในการสร้างตัวอย่างสุ่มเหล่านี้ ความน่าจะเป็นก่อนหน้าสำหรับกลุ่ม +1 คือค่าประมาณสำหรับพารามิเตอร์ . เวกเตอร์คือค่าสัมประสิทธิ์การจำแนกเชิงเส้น

ตอนนี้เราจะใช้แบบจำลองด้านบนเพื่อคาดคะเนเลเบลคลาสสำหรับข้อมูลเดียวกัน

# การทำนายคลาสสำหรับแต่ละตัวอย่างในชุดข้อมูลด้านบนโดยใช้โมเดล LDA y_pred<- predict(lda_model, newdata = dataset)$class #Adding the predictions as another column in the dataframe dataset$Y_lda_prediction <- as.character(y_pred) #Plot the above samples and color by actual and predicted class labels dataset$Y_actual_pred <- paste(dataset$Y, dataset$Y_lda_prediction, sep=',') ggplot(data = dataset)+ geom_point(aes(X1, X2, color = Y_actual_pred))

ในรูปด้านบนตัวอย่างสีม่วงมาจากชั้นเรียน +1 ที่ถูกจัดประเภทอย่างถูกต้องตามแบบจำลอง LDA ในทำนองเดียวกันตัวอย่างสีแดงมาจากชั้นเรียน -หนึ่ง ที่ถูกจัดประเภทอย่างถูกต้อง สีฟ้ามาจากชั้นเรียน +1 แต่ถูกจัดประเภทไม่ถูกต้องเป็น -หนึ่ง . คนสีเขียวมาจากชั้นเรียน -หนึ่ง ซึ่งจัดประเภทผิดเป็น +1 . การจำแนกประเภทที่ไม่ถูกต้องเกิดขึ้นเนื่องจากตัวอย่างเหล่านี้ใกล้เคียงกับค่าเฉลี่ยของคลาสอื่น ๆ (ศูนย์) มากกว่าค่าเฉลี่ยของคลาสจริง

สิ่งนี้นำเราไปสู่ตอนท้ายของบทความนี้ตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก การฝึกอบรมการวิเคราะห์ข้อมูลด้วย R ของ Edureka จะช่วยให้คุณมีความเชี่ยวชาญในการเขียนโปรแกรม R, การจัดการข้อมูล, การวิเคราะห์ข้อมูลเชิงสำรวจ, การแสดงข้อมูล, การขุดข้อมูล, การถดถอย, การวิเคราะห์ความรู้สึกและการใช้ R Studio สำหรับกรณีศึกษาในชีวิตจริงเกี่ยวกับการค้าปลีกโซเชียลมีเดีย

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