Mô hình Gaussian pha trộn đơn biến với flexmix

Các Mô hình Hỗn hợp trong R

Victor Medina

Researcher at The University of Edinburgh

gender %>% 
  ggplot(aes(x = Weight)) + geom_histogram(bins = 100)

Các Mô hình Hỗn hợp trong R

Mô hình hóa với mô hình pha trộn

  1. Phân phối xác suất phù hợp là gì?
    • Phân phối Gaussian đơn biến
  2. Nên xét bao nhiêu phân nhóm?
    • 2 cụm
  3. Tham số và cách ước lượng là gì?
    • Thuật toán EM trong flexmix để ước lượng mean, độ lệch chuẩn và tỷ lệ
Các Mô hình Hỗn hợp trong R

Hàm flexmix

flexmix(formula, data, k, model, control, ...)

  • formula: mô tả mô hình cần fit ($variable \sim 1$)
  • data: data frame
  • k: số cụm
  • model: chỉ định phân phối (FLXMCnorm1, FLXMCmvnorm, FLXMCmvbinary, FLXMRglm, FLXMCmvpois)
  • control: chỉ định số vòng lặp tối đa, ngưỡng sai số, v.v.
Các Mô hình Hỗn hợp trong R
fit_mixture <- flexmix(Weight ~ 1, # mean và sd là hằng số
                data = gender, # data frame
                k = 2, # số cụm
                model = FLXMCnorm1(), # Gaussian đơn biến    
                control = list(tol = 1e-15, # ngưỡng dừng EM
                               verbose = 1, # hiển thị kết quả trung gian
                               iter = 1e4)) # số vòng lặp tối đa
Classification: weighted 
   1 Log-likelihood :  -48880.0782 
   2 Log-likelihood :  -48880.0745 
   3 Log-likelihood :  -48880.0732 
   4 Log-likelihood :  -48880.0727
   .    .   .   .   .   .   .   .
3454 Log-likelihood :  -48518.3717 
3455 Log-likelihood :  -48518.3717 
3456 Log-likelihood :  -48518.3717 
3457 Log-likelihood :  -48518.3717 
converged
Các Mô hình Hỗn hợp trong R

Tỷ lệ: hàm prior

proportions <- prior(fit_mixture)
proportions
0.4929668 0.5070332
Các Mô hình Hỗn hợp trong R

Cả hai phân phối

parameters(fit_mixture)
                    Comp.1    Comp.2
coef.(Intercept) 135.54652 186.61583
sigma             18.94726  19.96097

Từng phân phối

comp_1 <- parameters(fit_mixture, component = 1)
comp_2 <- parameters(fit_mixture, component = 2)
comp_2
                    Comp.2
coef.(Intercept) 186.61583
sigma             19.96097
Các Mô hình Hỗn hợp trong R

Trực quan hóa các phân phối kết quả

gender %>%
   ggplot() + geom_histogram(aes(x = Weight, y = ..density..)) + 
   stat_function(geom = "line", fun = fun_prop, 
                 args = list(mean = comp_1[1], 
                             sd = comp_1[2], 
                             proportion = proportions[1])) +
   stat_function(geom = "line", fun = fun_prop, 
                 args = list(mean = comp_2[1], 
                             sd = comp_2[2], 
                             proportion = proportions[2]))
Các Mô hình Hỗn hợp trong R

Các Mô hình Hỗn hợp trong R

Hàm posterior

posterior(fit_mixture) %>% head()
             [,1]      [,2]
[1,] 6.836341e-06 0.9999932
[2,] 4.421760e-01 0.5578240
[3,] 5.994160e-04 0.9994006
[4,] 1.998798e-04 0.9998001
[5,] 1.547774e-03 0.9984522
[6,] 7.544450e-01 0.2455550

Hàm clusters

clusters(fit_mixture) %>% head()
2 2 2 2 2 1
Các Mô hình Hỗn hợp trong R

So sánh kết quả gán cụm

table(gender$Gender, clusters(fit_mixture))
            1    2
  Female 4500  500
  Male    444 4556
Các Mô hình Hỗn hợp trong R

Cùng luyện tập nào!

Các Mô hình Hỗn hợp trong R

Preparing Video For Download...