Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

LDA モデルを使用した文書クラスターの可視化

この例では、潜在的ディリクレ配分 (LDA) トピック モデルと t-SNE プロットを使用して文書のクラスタリングを可視化する方法を示します。

潜在的ディリクレ配分 (LDA) モデルは、文書のコレクションに内在するトピックを発見し、トピック内の単語の確率を推測するトピック モデルです。トピック単位の単語確率のベクトルがトピックを特徴付けます。文書単位のトピックの確率 (トピックの混合率とも呼ばれる) を比較することにより、LDA モデルを使用して文書の類似度を評価することができます。

LDA モデルの読み込み

さまざまな障害イベントの詳細を示す工場レポートのデータ セットを使用して学習させた LDA モデル factoryReportsLDAModel を読み込みます。LDA モデルをテキスト データのコレクションに当てはめる方法を示す例については、トピック モデルを使用したテキスト データの解析を参照してください。

load factoryReportsLDAModel
mdl
mdl = 
  ldaModel with properties:

                     NumTopics: 7
             WordConcentration: 1
            TopicConcentration: 0.5755
      CorpusTopicProbabilities: [0.1587 0.1573 0.1551 0.1534 0.1340 0.1322 0.1093]
    DocumentTopicProbabilities: [480×7 double]
        TopicWordProbabilities: [158×7 double]
                    Vocabulary: [1×158 string]
                    TopicOrder: 'initial-fit-probability'
                       FitInfo: [1×1 struct]

ワード クラウドを使用してトピックを可視化します。

numTopics = mdl.NumTopics;

figure
tiledlayout("flow")
title("LDA Topics")

for i = 1:numTopics
    nexttile
    wordcloud(mdl,i);
    title("Topic " + i)
end

t-SNE を使用した文書クラスターの可視化

t 分布型確率的近傍埋め込み法 (t-SNE) アルゴリズムは、高次元ベクトルを 2 次元空間に投影します。この埋め込みにより、高次元ベクトル間の類似度を簡単に可視化できます。t-SNE アルゴリズムに従って文書のトピック混合率をプロットすることにより、類似文書のクラスタリングを可視化できます。

関数 tsne を使用して、DocumentTopicProbabilties プロパティのトピック混合率を 2 次元空間に投影します。

XY = tsne(mdl.DocumentTopicProbabilities);

プロット グループについて、各文書の上位トピックを特定します。

[~,topTopics] = max(mdl.DocumentTopicProbabilities,[],2);

プロット ラベルについて、各トピックの上位 3 つの単語を見つけます。

for i = 1:numTopics
    top = topkwords(mdl,3,i);
    topWords(i) = join(top.Word,", ");
end

関数 gscatter を使用して、投影されたトピックの混合率をプロットします。上位のトピックをグループ化変数として指定し、各トピックの上位の単語を含む凡例を表示します。

figure
gscatter(XY(:,1),XY(:,2),topTopics)

title("Topic Mixtures")

legend(topWords, ...
    Location="southoutside", ...
    NumColumns=2)

t-SNE プロットは、元の高次元データに存在するクラスターを強調表示します。

参考

| | |

関連するトピック