メインコンテンツへスキップ
ブログ一覧に戻る
data

潜在クラス分析(LCA)|観測指標から“見えないクラス”を推定(混合モデル)

2025年10月31日
3分で読めます
潜在クラス分析(LCA)|観測指標から“見えないクラス”を推定(混合モデル)

潜在クラス分析(LCA)|観測指標から“見えないクラス”を推定(混合モデル)

観測されたカテゴリ/順序指標の背後にある“見えない集団(クラス)”を推定します。各クラスに属する確率もあわせて得られます。

まずはここだけ(やさしい導入)

  • 何をする?: 似た回答パターンの人たちを“見えないクラス”として推定する
  • いつ使う?: アンケートのタイプ分け、リスク層抽出、パーソナライズの基盤作り
  • どう読む?: クラス別の回答確率とクラスサイズ、BIC でクラス数の妥当性を確認

用語ミニ辞典(1 行で)

  • 潜在クラス: 観測できないが、回答パターンの違いから推定されるグループ
  • EM アルゴリズム: 潜在変数のあるモデルを繰り返しで推定する方法
  • BIC/AIC: モデル選択の指標。小さいほど良い(過学習を抑える)

ポイント

ミニ例題とコード(BIC でクラス数を選ぶ)

import numpy as np
import pandas as pd
from sklearn.mixture import GaussianMixture

# 簡易: 連続に近似して GMM でクラス数比較(概念的デモ)
df = pd.DataFrame({
  'q1':[0,1,1,0,1,0,1,1,0,0],  # 0/1 の順序近似
  'q2':[1,1,0,0,1,0,1,0,0,1],
  'q3':[0,1,0,0,1,0,1,1,0,1]
})

X = df.values.astype(float)
bics = []
for k in range(1,5):
    gmm = GaussianMixture(n_components=k, random_state=42).fit(X)
    bics.append((k, gmm.bic(X)))
print('BIC list:', bics)

注: 実務は poLCA(R)や専用実装を推奨(カテゴリ分布を直接モデル化)。

実務ケーススタディ(タイプ分け → 施策設計)

目的: サービスの利用態度(好み/頻度/不満)から顧客タイプを推定し、施策を分岐。

  1. 設計と収集

  • 順序/カテゴリ設問を 6–10 個。重複/極端項目は避ける

  1. 推定と選択

  • クラス数を BIC で比較しつつ、解釈可能性(施策に落とせるか)で最終決定

  1. 活用

  • クラス別の施策テンプレ(価格訴求/機能訴求/サポート強化 など)に落とす

練習問題(理解を定着)

  1. BIC が k=3 で最小だが、k=2 の方が解釈しやすい。どうする?

  • ヒント: 実務は解釈と運用性を重視。BIC とトレードオフで決める

  1. 1 つのクラスが 5% 未満。何を疑う?

  • ヒント: 過学習や外れ回答の影響。設問の見直しや k の再検討

  1. クラス割当が期間で不安定。どう検証?

  • ヒント: 別期間/再学習で一致度を確認(Jaccard 等)

  • EM アルゴリズムで混合比とクラス別確率を推定
  • クラス数は BIC/AIC で選択、解釈可能性も重視

ミニコード(概念)

# 実務は専用パッケージ(poLCA, mclust 等)推奨

活用

  • 顧客タイプの推定、リスク層の抽出、施策のパーソナライズ


潜在クラス分析についてのご相談はこちら

次の一手

状況に合わせて、選んでください。