잠재 클래스 분석과 성장 혼합 모형으로 이질적 집단 찾기
잠재 클래스 분석과 성장 혼합 모형의 가정, 추정, 진단, 클래스 선택 기준과 실무 운영 방법을 정리한다.
2026-08-14 · 최초 발행 2024-04-29
평균만으로 보이지 않는 차이를 모형화한다
설문 응답, 행동 기록, 임상 증상, 학업 성취처럼 집단 내부의 차이가 큰 데이터에서는 하나의 평균이나 단일 회귀식으로 설명하기 어려운 경우가 있다. 잠재 클래스 분석(Latent Class Analysis, LCA)과 성장 혼합 모형(Growth Mixture Modeling, GMM)은 관측 변수로 직접 구분되지 않는 하위집단을 추론하고, 종단 데이터에서는 서로 다른 변화 궤적까지 추정하기 위한 접근이다.
LCA는 범주형 지표의 결합분포를 이산형 잠재변수로 설명하는 유한 혼합 모형이다. 클래스가 주어졌을 때 지표들이 서로 독립이라는 조건부 독립(Local Independence) 가정을 두며, EM 알고리즘 기반 최대우도 추정으로 개인별 사후 클래스 소속확률을 계산한다.
GMM은 종단 자료에서 잠재 클래스마다 절편, 기울기 등의 성장모수 분포를 허용하는 혼합 종단모형이다. Latent Growth Curve Model(LGCM)을 혼합 모형으로 확장한 형태이며, 클래스 내부 분산을 0으로 가정하는 LCGA와 다르다. LCGA가 클래스 내 변이를 제거하는 반면, GMM은 그 변이를 허용한다.
두 모형은 모두 비관측 하위집단을 추정하고 우도 기반으로 적합하며 클래스 수를 결정해야 한다는 점에서 닮아 있다. 다만 LCA는 횡단 자료의 범주형 지표에 주로 쓰이고, GMM은 종단 자료의 연속 결과와 시간 구조를 모델링하는 데 초점이 있다.
가정과 식별 문제를 먼저 점검한다
LCA에서는 클래스에 조건부로 지표가 독립이라는 가정이 핵심이다. 이 가정이 성립하지 않으면 상관 잔차나 다차원 잠재요인을 고려해야 한다. GMM에서는 시간점 사이의 공분산 구조를 명시해야 하며, 클래스별 분산과 공분산을 어디까지 허용할지 결정해야 한다.
종단 설문이나 다집단 자료에서는 문항 모수가 시간과 집단 사이에서 유지되는지, 즉 측정 불변성을 검토한다. 필요하면 부분 불변성을 허용하는 전략을 적용할 수 있다.
모형 식별을 위해 평균이나 분산에 제약을 두는 과정도 필요하다. 클래스 라벨이 바뀌는 label switching 문제가 발생할 수 있으므로, 다중 시작값을 사용하고 해석 기준을 고정해 두는 편이 낫다.
적합도보다 먼저 수렴과 분류 상태를 확인한다
추정에는 EM 또는 수치적 적분(FIML, Gauss-Hermite)을 사용한다. 결측값은 MAR 가정 아래 FIML로 처리할 수 있다. 초기값에 민감할 수 있으므로 다중 랜덤 초기화와 클래스 수를 단계적으로 늘리는 전략을 사용한다.
클래스 수는 BIC, AIC, SABIC, BLRT/LMR-LRT를 함께 보고 결정한다. 엔트로피는 0~1 범위의 분리도 지표로 활용한다. 이 수치들만으로 선택하기보다 클래스가 해석 가능한지와 재현되는지도 함께 판단해야 한다.
추정 후에는 사후확률의 평균과 분산, 최소 클래스 크기, 분류 오류율, 잔차 상관, 음분산과 수렴 경고 같은 경계 모수를 확인한다. 클래스별 지표 확률이나 평균, 성장모수를 비교해 프로파일을 만들고, 공변량이나 결과변수는 BCH, R3STEP 같은 3-step 접근으로 연결할 수 있다.
부트스트랩 기반 LRT, 교차검증, 랜덤 시드 고정, 시작값과 모형 사양에 대한 민감도 분석은 결과의 견고성을 확인하는 수단이다. 운영 단계에서는 배치 추정, 모니터링 대시보드, 신규 관측값의 사후확률 기반 분류 절차를 마련한다.
세분화와 궤적 분석이 필요한 장면
마케팅 세분화에서는 선호, 사용 빈도, 채널 접점처럼 범주형 설문·행태 지표와 인구통계 공변량을 입력으로 사용한다. LCA로 K개 클래스를 적합한 뒤 BIC와 BLRT로 K를 선택하고, 3-step으로 공변량과 클래스의 관계를 추정한다. 결과는 세그먼트 정의, 세그먼트별 크기와 특징, 타깃팅·오퍼 최적화 규칙으로 이어진다.
임상 코호트에서는 이진 또는 다범주 증상 체크리스트, 추적 검사 점수, 치료 개입 정보를 함께 다룰 수 있다. 기저 증상 프로파일은 LCA로 도출하고, 치료 후 회복 궤적 클래스는 GMM으로 추정한다. 위험군 식별, 예후별 맞춤 치료 경로, 리소스 배분 우선순위가 산출물이다.
교육과 HR 영역에서는 학기별 시험 점수, 출석·과제 이행, 학생 특성 공변량으로 성장 함수를 사양한다. 선형 또는 이차 성장 함수를 비교하고, 클래스 내 분산 허용 여부를 GMM과 LCGA로 비교한다. 고성장·정체·감소 궤적군을 식별해 개입 시점과 강도, 조기 경보 규칙을 설계할 수 있다.
적합부터 배포까지 이어지는 흐름
데이터 준비 단계에서는 결측 패턴을 점검하고 스케일링·리코딩과 시간 정렬을 수행한다. 이후 지표의 상관과 분포를 확인해 가설적인 K 범위를 정한 뒤, 클래스 수별로 다중 시작값 EM 모형을 적합한다.
모델 선택에서는 BIC, BLRT, 엔트로피와 해석 가능성을 평가한다. 부트스트랩, 교차검증, 민감도 분석으로 진단과 견고성을 확인한 뒤 클래스 라벨링, 3-step 외생변수 분석, 운영 반영으로 이어간다.
수렴에 실패하면 시작값을 늘리거나 파라미터 경계를 제약하고 지표 축소를 검토한다. 음분산이나 특이행렬이 나타나면 클래스 내 분산을 고정하거나 공분산 구조를 단순화한다. 클래스가 과소한 경우(<3~5%)에는 K를 줄이거나 클래스를 결합하고 해석 타당성을 다시 검토한다.
R로 LCA와 LCGA를 적합하는 예시
사전 조건은 R 4.2 이상이며, 범주형 LCA에는 poLCA, GMM/LCGA에는 lcmm 패키지를 사용한다. 아래 데이터는 예제용으로 시뮬레이션한다.
# install.packages(c("poLCA", "lcmm"))
library(poLCA)
set.seed(2025)
# 1) LCA 예시: 4개의 이진 지표, K=2~4 비교
N <- 800
# 잠재 클래스(2개) 및 지표 조건부 확률 설정
z <- rbinom(N, 1, 0.45) + 1
p <- matrix(c(0.8,0.7,0.2,0.1, 0.3,0.2,0.6,0.5), nrow=2, byrow=TRUE)
Y <- sapply(1:4, function(j) rbinom(N, 1, p[cbind(z, j)]))
dat <- as.data.frame(Y); names(dat) <- paste0("y",1:4)
f <- cbind(y1,y2,y3,y4) ~ 1
fits <- lapply(2:4, function(k) poLCA(f, dat, nclass=k, nrep=20, maxiter=3000, verbose=FALSE))
bic <- sapply(fits, function(m) m$bic); data.frame(K=2:4, BIC=bic)
best <- fits[[which.min(bic)]]
best$P # 클래스 비율
best$probs # 클래스별 지표 확률
head(best$posterior) # 사후확률
# 2) GMM(LCGA) 예시: 선형 성장 궤적, 클래스 내 분산=0 가정
# install.packages("lcmm")
library(lcmm)
set.seed(2025)
# 종단 데이터 시뮬레이션
N <- 600; Tm <- 5; time <- 0:(Tm-1)
class <- sample(1:3, N, replace=TRUE, prob=c(0.4,0.4,0.2))
beta0 <- c(50, 60, 55)[class]; beta1 <- c(2.0, 0.2, -1.0)[class]
Y <- sapply(time, function(t) beta0 + beta1*t + rnorm(N, 0, 2))
long <- data.frame(id=rep(1:N, each=Tm), time=rep(time, N), y=as.vector(Y))
# LCGA: 클래스 2~4 비교
m3 <- hlme(fixed = y ~ time, random = ~ 1, subject = "id",
ng = 3, data = long, mixture = ~ time, nwg = TRUE,
B = c(50,2, 60,0.2, 55,-1)) # 초기값 제공
summary(m3)
postprob <- postprob(m3)
head(postprob) # 사후확률 및 추정 클래스
수렴 실패 시에는 nwg(클래스별 잔차분산), mixture 사양의 완화·강화, 초기값(B)의 다양화를 검토한다. GMM에서 클래스 내 분산 허용(random 효과)이 필요하면 lcmm::hlme의 random 사양 확장을 검토한다.
선택 기준은 모형의 쓰임새에 따라 달라진다
| 지표 | LCA | GMM |
|---|---|---|
| 성능 | 범주형·고차원 지표에 효율적, EM 빠름 | 종단 구조 추정 비용 증가, 수치적 적분 필요 시 느림 |
| 확장성 | 지표 수↑에 따라 확장 가능, 국소최대 주의 | 시간점↑/무작위효과↑ 시 계산량 급증 |
| 일관성 | 조건부 독립·측정 불변성 충족 시 해석 안정 | 성장함수/분산 사양 민감, 오사양 시 편의 발생 |
| 안정성 | 다중 시작값으로 국소최대 완화 | 경계 모수·음분산 위험, 수렴 민감도 높음 |
| 운영 편의 | 사후확률 기반 분류·세그먼트 운영 용이 | 예측·개입 타이밍 설계에 유리하나 유지관리 복잡 |
최소 클래스 크기는 5~10%를 권장하며, 희귀 클래스를 탐지할 때는 신뢰구간과 검증을 강화해야 한다. 클래스를 과도하게 선택하면 과적합과 해석 난해성이 커지고, 너무 적게 선택하면 이질성을 놓칠 수 있다.
BIC를 우선으로 두고 BLRT/LMR을 보조 기준으로 사용하며, 엔트로피는 분류 품질 지표로 해석한다. 지표가 서로 충돌하면 해석 가능성과 재현성을 우선한다. 결측은 FIML로 MAR 가정 아래 처리하고, MNAR 가능성이 있으면 패턴혼합모형 대안을 검토한다. 측정 편의는 부분 불변성 허용으로 완화할 수 있다.
외생변수를 한 번에 포함하면 분류가 왜곡될 위험이 있으므로, R3STEP 또는 BCH 같은 3-step 접근으로 분류 안정성을 확보한다. 운영 환경에서는 사후확률 임계값 기반 의사결정 규칙을 설계할 수 있다. 예를 들어 p>0.7은 확정하고 중간 구간은 보류하며, 데이터 드리프트를 모니터링하고 재추정 주기를 정한다.
분류 결과가 만드는 운영상 변화
분할 전후 예측 AUC/정확도는 310%p 향상할 수 있고, 세그먼트별 전환율은 1030% 개선될 수 있다. 고위험군에 대한 리소스 효율은 15~25% 향상이 기대된다.
수치 외에도 해석 가능한 세그먼트와 궤적을 제공해 개입 우선순위를 분명하게 만들고, 여러 부서가 같은 대상을 논의할 수 있는 공통 언어를 마련한다.