Làm thế nào để thực hiện phân tích phân biệt tuyến tính trong R?



Bài viết này sẽ cho bạn biết phân tích phân biệt tuyến tính là gì và cũng cung cấp cho bạn một minh họa chi tiết bằng cách sử dụng ngôn ngữ lập trình R.

Phân tích phân biệt tuyến tính là một kỹ thuật Học máy rất phổ biến được sử dụng để giải quyết các vấn đề phân loại. Trong bài viết này, chúng tôi sẽ cố gắng tìm hiểu trực giác và toán học đằng sau kỹ thuật này. Một ví dụ về việc triển khai LDA trong R cũng được cung cấp.

Vì vậy, chúng ta hãy bắt đầu





Giả định phân tích phân biệt tuyến tính

Phân tích Phân biệt Tuyến tính dựa trên các giả định sau:

  • Biến phụ thuộc Y là rời rạc. Trong bài viết này, chúng tôi sẽ giả định rằng biến phụ thuộc là nhị phân và nhận các giá trị lớp {+1, -1} . Xác suất của một mẫu thuộc lớp +1 , I E P (Y = +1) = p . Do đó, xác suất của một mẫu thuộc lớp -một 1-p .



  • (Các) biến độc lập X đến từ các bản phân phối gaussian. Giá trị trung bình của phân phối gaussian phụ thuộc vào nhãn lớp Y . tức là nếu Y Tôi = +1 , thì ý nghĩa của X Tôi & # 120583 +1 , khác nó là & # 120583 -một . Phương sai & # 120590 2 là như nhau cho cả hai lớp. Nói một cách toán học, X | (Y = +1) ~ N (& # 120583 +1 & # 120590 2 ) X | (Y = -1) ~ N (& # 120583 -một & # 120590 2 ) , Ở đâu N biểu thị phân phối chuẩn.

Với thông tin này, có thể xây dựng một phân phối chung P (X, Y) cho biến độc lập và phụ thuộc. Do đó, LDA thuộc về lớp Mô hình bộ phân loại tạo . Một công cụ phân loại tổng hợp có liên quan chặt chẽ là Phân tích phân biệt bậc hai (QDA). Nó dựa trên tất cả các giả định giống nhau của LDA, ngoại trừ các phương sai phân loại là khác nhau.

Hãy để chúng tôi tiếp tục với bài viết Phân tích phân biệt tuyến tính và xem

Trực giác

Hãy xem xét các phân phối gaussian có điều kiện của lớp cho X cho lớp Y . Hình dưới đây cho thấy các hàm mật độ của các phân bố. Trong hình này, nếu Y = +1 , thì ý nghĩa của X là 10 và nếu Y = -1 , giá trị trung bình là 2. Phương sai là 2 trong cả hai trường hợp.

trực giác - Phân tích phân biệt tuyến tính - Edureka

Bây giờ, giả sử một giá trị mới là X được trao cho chúng tôi. Hãy biểu thị nó là x Tôi . Nhiệm vụ là xác định nhãn lớp có khả năng nhất cho việc này x Tôi , I E. Y Tôi . Để đơn giản, giả sử rằng xác suất p của mẫu thuộc về lớp +1 giống như của thuộc về lớp -một , I E. p = 0,5 .

Theo trực giác, sẽ có lý khi nói rằng nếu x Tôi gần hơn với & # 120583 +1 hơn nó là & # 120583 -một , thì nhiều khả năng là Y Tôi = +1 . Chính thức hơn, Y Tôi = +1 nếu:

| x Tôi - & # 120583 +1 |<|x Tôi - & # 120583 -một |

Chuẩn hóa cả hai bên bằng độ lệch chuẩn:

| x Tôi - & # 120583 +1 | / & # 120590<|x Tôi - & # 120583 -một | / & # 120590

Bình phương cả hai bên:

(x Tôi - & # 120583 +1 ) 2 / & # 120590 2 <(x Tôi - & # 120583 -một ) 2 / & # 120590 2

x Tôi 2 / & # 120590 2 + & # 120583 +1 2 / & # 120590 2 - 2 x Tôi & # 120583 +1 / & # 120590 2 Tôi 2 / & # 120590 2 + & # 120583 -một 2 / & # 120590 2 - 2 x Tôi & # 120583 -một / & # 120590 2

2 x Tôi (& # 120583 -một - & # 120583 +1 ) / & # 120590 2 - (& # 120583 -một 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )<0

-2 x Tôi (& # 120583 -một - & # 120583 +1 ) / & # 120590 2 + (& # 120583 -một 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 )> 0

Biểu thức trên có dạng bx Tôi + c> 0 Ở đâu b = -2 (& # 120583 -một - & # 120583 +1 ) / & # 120590 2 c = (& # 120583 -một 2 / & # 120590 2 - & # 120583 +1 2 / & # 120590 2 ) .

Rõ ràng là dạng của phương trình là tuyến tính , do đó có tên là Phân tích phân biệt tuyến tính.

Hãy để chúng tôi tiếp tục với bài viết Phân tích phân biệt tuyến tính và xem,

Mô tả toán học của LDA

Tính toán của biểu thức cho LDA dựa trên các khái niệm như Quy tắc Bayes Bayes Optimal Classifier . Độc giả quan tâm được khuyến khích đọc thêm về các khái niệm này. Có thể tìm thấy một cách để suy ra biểu thức đây .

Chúng tôi sẽ cung cấp biểu thức trực tiếp cho trường hợp cụ thể của chúng tôi, nơi Y học hai lớp {+1, -1} . Chúng tôi cũng sẽ mở rộng trực giác được hiển thị trong phần trước cho trường hợp chung trong đó X có thể đa chiều. Giả sử rằng có đến biến độc lập. Trong trường hợp này, lớp nghĩa là & # 120583 -một & # 120583 +1 sẽ là vectơ kích thước k * 1 và ma trận phương sai-hiệp phương sai & # 120622 sẽ là một ma trận của các thứ nguyên k * k .

Hàm phân loại được cung cấp như

Y = h (X) = dấu (b T X + c)

Ở đâu,

b = -2 & # 120622 -một (& # 120583 -một - & # 120583 +1 )

c = & # 120583 -một T & # 120622 -một & # 120583 -một - & # 120583 -một T & # 120622 -một & # 120583 -một {-2 ln (1-p) / p}

Hàm dấu trả về +1 nếu biểu thức b T x + c> 0 , nếu không nó sẽ trả về -một . Thuật ngữ đăng nhập tự nhiên trong c có mặt để điều chỉnh thực tế là xác suất của lớp không cần bằng nhau cho cả hai lớp, tức là p có thể là bất kỳ giá trị nào giữa (0, 1) và không chỉ 0,5.

Học các thông số mô hình

Đưa ra một tập dữ liệu với N điểm dữ liệu (x một , Y một ), (x 2 , Y 2 ),… (X n , Y n ) , chúng tôi cần ước tính p, & # 120583 -một & # 120583 +1 & # 120622 . Một kỹ thuật ước tính thống kê được gọi là Ước lượng khả năng tối đa được sử dụng để ước tính các thông số này. Các biểu thức cho các tham số trên được đưa ra dưới đây.

& # 120583 +1 = (1 / N +1 ) * & # 120506 i: yi = + 1 x Tôi

& # 120583 -một = (1 / N -một ) * & # 120506 i: yi = -1 x Tôi

p = N +1 / N

& # 120622 = (1 / N) * & # 120506Tôi = 1: N (x Tôi - & # 120583 Tôi ) (x Tôi - & # 120583 Tôi ) T

Ở đâu N +1 = số lượng mẫu trong đó y Tôi = +1 N -một = số lượng mẫu trong đó y Tôi = -1 .

Với các biểu thức trên, mô hình LDA đã hoàn thành. Người ta có thể ước tính các tham số mô hình bằng cách sử dụng các biểu thức trên và sử dụng chúng trong hàm phân loại để lấy nhãn lớp của bất kỳ giá trị đầu vào mới nào của biến độc lập X .

Hãy để chúng tôi tiếp tục với bài viết Phân tích phân biệt tuyến tính và xem

Ví dụ trong R

Đoạn mã sau tạo một tập dữ liệu giả với hai biến độc lập X1 X2 và một biến phụ thuộc Y . Đối với X1 X2 , chúng tôi sẽ tạo mẫu từ hai phân phối gaussian đa biến với các phương tiện & # 120583 -một = (2, 2) & # 120583 +1 = (6, 6) . 40% mẫu thuộc về lớp +1 và 60% thuộc về lớp -một , vì thế p = 0,4 .

thư viện library (ggplot2) library (MASS) library (mvtnorm) #Variance Covariance ma trận cho mẫu gaussian hai biến ngẫu nhiên var_covar = matrix (data = c (1.5, 0.3, 0.3, 1.5), nrow = 2) # Mẫu gaussian biến thiên ngẫu nhiên cho lớp + 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)) 

Trong hình trên, các chấm màu xanh lam đại diện cho các mẫu từ lớp +1 và những cái màu đỏ đại diện cho mẫu từ lớp -một . Có một số chồng chéo giữa các mẫu, tức là các lớp không thể được phân tách hoàn toàn bằng một đường đơn giản. Nói cách khác, chúng không hoàn hảo có thể phân tách tuyến tính .

Bây giờ chúng ta sẽ đào tạo một mô hình LDA bằng cách sử dụng dữ liệu trên.

# Đào tạo mô hình LDA bằng cách sử dụng tập dữ liệu lda_model ở trên<- lda(Y ~ X1 + X2, data = dataset) #Print the LDA model lda_model 

Đầu ra:

Xác suất trước của các nhóm:

-eleven

0,6 0,4

Nhóm có nghĩa là:

X1 X2

-1 1.928108 2.010226

1 5.961004 6.015438

chuyển đổi từ double sang int java

Hệ số của phép phân biệt tuyến tính:

LD1

X1 0,5646116

X2 0,5004175

Như người ta có thể thấy, phương tiện lớp học được mô hình học là (1.928108, 2.010226) cho lớp học -một và (5.961004, 6.015438) cho lớp +1 . Các phương tiện này rất gần với lớp có nghĩa là chúng tôi đã sử dụng để tạo các mẫu ngẫu nhiên này. Xác suất trước cho nhóm +1 là ước tính cho tham số p . Các b vectơ là hệ số phân biệt tuyến tính.

Bây giờ chúng ta sẽ sử dụng mô hình trên để dự đoán các nhãn lớp cho cùng một dữ liệu.

# Ghi nhận lớp cho từng mẫu trong tập dữ liệu trên bằng mô hình 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))

Trong hình trên, các mẫu màu tím thuộc lớp +1 đã được phân loại chính xác bởi mô hình LDA. Tương tự, các mẫu màu đỏ là của lớp -một đã được phân loại chính xác. Những cái màu xanh là của lớp +1 nhưng đã được phân loại không chính xác thành -một . Màu xanh lá cây là của lớp -một đã được phân loại sai thành +1 . Việc phân loại sai đang xảy ra vì những mẫu này gần với giá trị trung bình của lớp khác (trung tâm) hơn giá trị trung bình của lớp thực tế của chúng.

Điều này đưa chúng ta đến phần cuối của bài viết này, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Edureka’s Data Analytics with R training sẽ giúp bạn có được kiến ​​thức chuyên môn về Lập trình R, Thao tác dữ liệu, Phân tích dữ liệu khám phá, Hình ảnh hóa dữ liệu, Khai thác dữ liệu, Hồi quy, Phân tích cảm xúc và sử dụng R Studio cho các nghiên cứu điển hình thực tế trên Bán lẻ, Truyền thông xã hội.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến vấn đề này trong phần bình luận của bài viết này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.