PLDA は、トピックモデリング用の PAI コンポーネントです。これは Latent Dirichlet Allocation (LDA) を実行します。LDA は、ドキュメントコレクション全体で単語が抽象的なトピックにどのようにクラスター化するかを発見する教師なしアルゴリズムです。トピック数 K を指定すると、LDA はラベル付きトレーニングデータなしでトピック構造を推論します。
LDA は 2003 年に David M. Blei、Andrew Y. Ng、Michael I. Jordan によって開発されました。これはテキストマイニング分野で、テキスト認識、分類、類似度計算に広く使用されています。
仕組み
LDA は、各ドキュメントをトピックの混合として扱い、各トピックを単語の確率分布として扱います。コーパスが与えられた場合、アルゴリズムは以下を推論します。
各ドキュメントが属するトピック — P(z/d)、ドキュメント-トピック分布
各トピックを特徴付ける単語 — P(w/z)、トピック-単語分布
具体例として、単語が _eat_、_sleep_、_play_、_meow_、_bark_ であるドキュメントが与えられた場合、LDA は以下を生成する可能性があります。
| トピック | eat | sleep | play | meow | bark |
|---|---|---|---|---|---|
| トピック 1 | 0.1 | 0.3 | 0.2 | 0.4 | 0.0 |
| トピック 2 | 0.2 | 0.1 | 0.4 | 0.0 | 0.3 |
トピック 1 (_meow_ と _sleep_ に高い重み) は猫を表している可能性が高く、トピック 2 (_play_ と _bark_ に高い重み) は犬を表している可能性が高いです。これは、出力の確率テーブルを解釈する方法です。
前提条件
開始する前に、以下があることを確認してください。
Machine Learning Designer アクセスを備えた PAI ワークスペース
疎行列形式の入力データ (単語 ID と頻度のキーと値のペア)
(オプション) ご利用のデータがすでにキーと値の形式でない場合は、Convert Row, Column, and Value to KV Pair コンポーネント
コンポーネントの設定
PLDA を設定するには、以下のいずれかの方法を使用します。
方法 1: Machine Learning Designer
パイプラインキャンバスで、[PLDA] コンポーネントをクリックし、右側のパネルでパラメーターを設定します。ビジュアルモデリングは、以前は Machine Learning Studio と呼ばれていました。
[フィールド設定] タブ
| パラメーター | 説明 |
|---|---|
| Feature columns | LDA トレーニングの入力として使用される列 |
[パラメーター設定] タブ
| パラメーター | 説明 | デフォルト |
|---|---|---|
| Topics | トピック数 (K)。有効な値: 2~500。10~50 の値から開始し、ご利用のコーパスサイズと結果として得られるトピックのコヒーレンスに基づいて調整します。 | — |
| Alpha | ドキュメント-トピック分布 P(z/d) の事前ディリクレパラメーター。値が小さいほど、よりスパースな混合が生成され、各ドキュメントはより少ないトピックに焦点を当てます。値が大きいほど、トピック間でより均一な混合が生成されます。 | — |
| Beta | トピック-単語分布 P(w/z) の事前ディリクレパラメーター。値が小さいほど、よりシャープで明確なトピックが生成されます。値が大きいほど、トピックはより拡散します。 | — |
| Burn-in iterations | サンプリングが開始される前のウォームアップ反復。[合計反復回数] より小さい必要があります。デフォルト値はほとんどの場合にうまく機能し、調整する必要はありません。 | 100 |
| Total iterations | ギブスサンプリングの合計反復回数。モデルが収束していない場合は、この値を増やしてください。 | 150 |
方法 2: PAI コマンド
SQL Script コンポーネントを使用して、PAI コマンドで PLDA を実行します。詳細については、「SQL Script」をご参照ください。
pai -name PLDA
-project algo_public
-DinputTableName=lda_input
-DtopicNum=10
-topicWordTableName=lda_output;次の表に、利用可能なすべてのパラメーターを示します。
| パラメーター | 必須 | タイプ | デフォルト | 説明 |
|---|---|---|---|---|
inputTableName | はい | STRING | — | 入力テーブルの名前 |
inputTablePartitions | いいえ | STRING | すべてのパーティション | トレーニングに使用するパーティション。形式: partition_name=value。多層パーティションの場合: name1=value1/name2=value2。複数のパーティションはコンマで区切ります。 |
selectedColNames | いいえ | STRING | すべての列 | LDA の入力として使用する列名 |
topicNum | はい | Positive integer | — | トピック数。有効な値: 2~500 |
kvDelimiter | いいえ | STRING | : | キーと値の間の区切り文字。有効な値: スペース、,、: |
itemDelimiter | いいえ | STRING | space | キーと値のペア間の区切り文字。有効な値: スペース、,、: |
alpha | いいえ | FLOAT | 0.1 | P(z/d) の事前ディリクレパラメーター。有効な値: (0, ∞)。値が小さいほど、よりスパースなトピック混合が生成され、値が大きいほど、より均一な混合が生成されます。 |
beta | いいえ | FLOAT | 0.01 | P(w/z) の事前ディリクレパラメーター。有効な値: (0, ∞)。値が小さいほど、よりシャープで明確なトピックが生成され、値が大きいほど、より拡散したトピックが生成されます。 |
topicWordTableName | はい | STRING | — | トピック-単語頻度寄与の出力テーブル |
pwzTableName | いいえ | STRING | 生成されません | P(w/z) の出力テーブル |
pzwTableName | いいえ | STRING | 生成されません | P(z/w) の出力テーブル |
pdzTableName | いいえ | STRING | 生成されません | P(d/z) の出力テーブル |
pzdTableName | いいえ | STRING | 生成されません | P(z/d) の出力テーブル |
pzTableName | いいえ | STRING | 生成されません | P(z) の出力テーブル |
burnInIterations | いいえ | Positive integer | 100 | サンプリングが開始される前のウォームアップ反復。totalIterations より小さい必要があります。デフォルト値はほとんどの場合にうまく機能します。 |
totalIterations | いいえ | Positive integer | 150 | ギブスサンプリングの合計反復回数。z = トピック、w = 単語、d = ドキュメント。 |
enableSparse | いいえ | BOOL | true | 入力データ形式: キーと値のペアの場合は true、単語セグメンテーション結果の場合は false。 |
coreNum | いいえ | Positive integer | -1 (自動) | コア数。memSizePerCore と一緒に設定する必要があります。システムは入力データサイズに基づいてこれを自動的に決定します。 |
memSizePerCore | いいえ | Positive integer | -1 (自動) | コアあたりのメモリ (MB 単位)。有効な値: 1024~65536。システムはこれを自動的に決定します。 |
入力と出力
入力
入力データは、ドキュメントごとに 1 行の疎行列形式である必要があります。
列 1: ドキュメント ID
列 2: 単語 ID と単語頻度のキーと値のペア
ご利用のデータがこの形式でない場合は、[Convert Row, Column, and Value to KV Pair] コンポーネントを使用して変換してください。

出力
PLDA は、以下のテーブルを順に生成します。トピック-単語周波数寄与テーブル (topicWordTableName) のみが必須です。残りのテーブルはオプションであり、その出力テーブル名を指定した場合にのみ生成されます。
| テーブル | パラメーター | 説明 |
|---|---|---|
| トピック-単語頻度寄与テーブル | topicWordTableName | 必須。トピックごとの単語頻度寄与。 |
| P(w/z) テーブル | pwzTableName | トピックが与えられた各単語の確率 |
| P(z/w) テーブル | pzwTableName | 単語が与えられた各トピックの確率 |
| P(d/z) テーブル | pdzTableName | トピックが与えられた各ドキュメントの確率 |
| P(z/d) テーブル | pzdTableName | ドキュメントが与えられた各トピックの確率 |
| P(z) テーブル | pzTableName | 各トピックの周辺確率 |

次のステップ
SQL Script — SQL Script コンポーネントを使用して PAI コマンドを実行する方法を学習します。