日銀ワーキングペーパーまとめ(機械学習による景気分析 ―「景気ウォッチャー調査」のテキストマイニング―)

# 目的
- 2018年9月3日に発表された[日銀ワーキングペーパー](http://www.boj.or.jp/research/wps_rev/wps_2018/wp18j08.htm/)の個人的な内容理解

# 概要
- 日本の経済と物価の情報を多く含んでいる景気ウォッチャー調査の景気判断理由集のテキストデータに対し，統計的言語処理と機械学習の手法を用い，３つの分析を行っている
- 手法は下記の３つ
    - 共起ネットワーク分析手法
    - ナイーブベイズ分類器を用いた物価センチメント指数の開発
    - ランダムフォレスト回帰を用いた予想インフレ率およびインフレ率の変動要因の分析
- テキスト分析を金融分野へ応用した先行研究はなされており、ニュース記事やGoogleでの検索数を基に株価や様々な指標を予測するものが挙げられる
- 景気ウォッチャー指数とは
    - 地域ごとの景気動向を迅速に把握するために，内閣府が2000 年１月から毎月実施している日本全国を対象としたサーベイ調査
    - 回答者は約 2,000 人に及び，小売業販売員やタクシー運転手など地域の景気動向を観察できる業種の就業者（景気ウォッチャー）から選ばれる
    - 各回答者は，現状と先行きの景況感をそれぞれ５段階で評価し，それぞれの景気判断理由を短くコメントする
    - 各回答者の現状と先行きの景気判断は，それぞれ現状と先行きの景況感の指数（DI）に集約される
    - 各回答者のコメントを集めた景気判断理由集は，テキストデータとして公表される
    - 景気判断理由集の分量は，単月の調査分で約 10 万語に及び，エコノミストが毎月精読するには分量が多いという意味で「ビッグデータ」である
    - 以下の点で、景気ウォッチャー指数は景気分析に利用するうえで望ましい性質を持っている
        - 景気判断理由集のテキストは，すべて景気動向に関連したコメントであるため，経済関連以外のテキストも多く含まれている新聞記事やウェブスクレイピングデータよりもノイズが少ない
        - 回答者による言い回しのばらつき（表記ゆれ）に関しても一部にこれを抑ほ制する処理が施されている
        - 分析ソフトウェアでの処理が容易なファイル形式（CSV 形式）で提供されている
        - 地域や業種といった回答者属性の偏りが小さくなるようサンプリングされている
        - 調査から公表までの期間が約２週間と短く速報性がある

# 特徴語の共起ネットワーク分析によるトピック抽出
- 共起ネットワークとは
    - 抽出語またはコードを用いて、出現パターンの似通ったものを線で結んだ図

## 共起ネットワーク図の作成方法と問題点
- 共起ネットワーク図の作成は，次の２つのステップに分けられる
    - 重要度の高い単語を抽出
    - 抽出した単語を対象として，文中において同時に出現し易い（共起関係が強い）もの同士を辺で結ぶ
        - 辺を結ぶか否かを判定する基準となる共起関係の強さは，集合の類似度を表す Jaccard 係数（Jaccardcoefficient）で測る
        - $X_A$と$X_B$をそれぞれ単語Aと単語Bを含む分の集合とすると、単語A と単語B の Jaccard 係数は以下の通り

```math
J(X_A, X_B) = \frac{X_A \cap X_B}{X_A \cup X_B} = \frac{\text{単語 A と B を同時に含む文の数}}{\text{単語 A または B を含む文の数}}
```
- 同じデータセットを用いた岡崎氏・敦賀氏の先行研究では、重要度の高い単語の抽出に当たり，毎月の調査回毎のデータを独立に分析し，各月ごとに出現頻度の高い単語を抽出することにより，共起ネットワーク図（以下，「岡崎・敦賀の共起ネットワーク図」と呼ぶ）を作成する手法を採用した．この方法により、出現頻度の高い語に関連する景気変動要因については，可視化することができる
- しかし、季節要因を除いた景気の変動を分析する観点からは以下２つの短所がある
    - 分析対象とするデータセットにおいて，出現頻度が季節によって毎年増加する単語(「ゴールデンウィーク」、「クリスマス」など)が存在する場合，景気分析で必要となる季節要因を除去した景気動向の特徴が捉えにくい
    - 分析対象とするデータセットの性質により，出現頻度の常に高い単語が各時点で共通して抽出されるため，景気動向の時系列的な変化を捉えにくい

## 特徴語共起ネットワーク図の作成
- 先に述べた問題点は，重要な単語の抽出基準が，単月の調査時点のみにおける出現頻度に依拠しており，他の時点のデータを参照していないことに起因する
- これを解消するため，本分析では，当月分に加えて，過去の同じ月のデータも利用する方法を提案する
    - 過去の同じ月と比べて出現頻度が相対的に高い単語である「特徴語」を抽出し，特徴語のみを対象に共起ネットワーク図を作成する（以下，「特徴語共起ネットワーク図」と呼ぶ）
    - データセットの性質により恒常的に出現頻度の高い単語や，季節性により特定月のみに必ず出現頻度が高まる単語の抽出を抑制できる

- 「特徴度」は，過去の同じ月対比の相対的な出現頻度の高さを，集合の類似度を表す Dice 係数（Dice coefficient）で測ったものとする
    - 過去の同じ月の文すべてのうち単語$W$を含む文の集合を $X_W$，当月のすべて
の文の集合を $Y$ として，単語 $𝑊$ の特徴度を以下のように定義する

```math
\text{単語$W$の特徴度} = D(X_W, Y) = \frac{2|X_W \cap Y|}{|X_W| + |Y|}
```
- 
    - ここで当月の単語 $𝑊$ を含む文の数を $𝑎$ 個，過去の同じ月における $𝑊$ を含む文
の数を $𝑏$ 個，当月の $𝑊$ を含まない文の数を $𝑐$ 個とすると

```math
|X_W| = a + b \\
|Y| = a +c \\
|X_W \cap Y| = a
```
となるため、

```math
D(X_W, Y) = \frac{2a}{(a + b) + (a + c)}
```
と計算できる

- 以下の観点から先述の問題点が解消される
    - 単語$W$が共起ネットワーク図に登場するためには，この特徴度が高い必要がある
    - 言い換えると、当月の単語 $𝑊$ を含む文の数 $𝑎$ が過去の同じ月における $𝑊$ を含む文の数$𝑏$ と比較して相対的に高いことが必要となる
    - 従って，データセットの性質から恒常的に出現頻度が高い単語や，季節的な特徴により当該月に出現頻度が高まる単語は，$𝑎$ 対比で $𝑏$ が相対的に大きくなるため，重要な単語として抽出されにくい
    - また，ここで用いる特徴度は，過去のデータ対比での出現頻度だけでなく，当月における $𝑊$ を含まない文の数 $𝑐$ 対比での出現頻度の高さも加味される
- 以下がこの特徴度を使用する上での懸念点
    - 景気変動を説明するうえで重要な頻出語であっても，出現頻度の高い状態がある程度長期にわたるなど，出現頻度の変化が乏しい場合には，重要な単語として抽出されず，共起ネットワーク図に現れないことがある
    - よって、特徴語共起ネットワーク図だけでなく，岡崎・敦賀の共起ネットワーク図も用いてクロスチェックを行うことが，重要な要因の見落としを防ぐ意味で有効

## 景気判断理由集の特徴語共起ネットワーク図
- 共起関係の強さは，Jaccard 指数が 0.06 以上であることを基準とし，表示する単語の候補を約 100 語とした
    - 先行研究と比較して、Jaccard 指数は同等、単語候補数は増

- 結果の共起ネットワーク図を見ると、先行研究と比較して具体的な単語が抽出されているように見える(図は元論文を参照)
    - 例えば、「インバウンド」や「化粧品」、「株価」といった単語
    - 上述の数式でいうところの、$a \gg b$ が成り立っていると思われる
- 課題としては、(日銀がなんとか上向かせたい)物価動向の単語(「価格」、「単価」など)が表れていないことが挙げられる
    - これは言わずもがな出現頻度の変化が乏しいからである

# 物価センチメント指数の構築
- ナイーブベイズ分類器を用い，各コメントを言及された物価動向に応じて分類することにより物価センチメント指数を作成する
- 特徴は，既存の物価指数を用いることなく，テキストデータのみから，物価に先行する指数を構築した点
- センチメントとは
    - 英語(sentimental)では「感情」などの意味がありますが、金融では「市場心理」のこと。景気の「気」は気分の「気」とも言われますし、まさにセンチメントで様々な指数が変化する
    - ちなみに「センチメンタルトレイン」という曲は、電車の中で見かける恋人に思いを馳せる曲です
- ナイーブベイズ分類器とは
    - 教師あり分類器の一つ
    - [こちら](https://qiita.com/aflc/items/13fe52243c35d3b678b0)を参照

## 景気判断理由集からの物価動向の抽出
- 目的
    - 景気判断理由集から物価動向に関わるコメントを集約し，景気ウォッチャー調査全体として物価上昇と下落のどちらが優勢であるかを把握することで，わが国の物価動向について示唆を得る
- ワードカウントではうまく抽出できない理由
    - 物価動向の表現が多様である
    - 回答者によって語彙選択にばらつきがある
    - 否定形での言及や文脈によって同じ表現でも意味合いが変化する
- ここでの「物価センチメント指数」とは以下のように定義される
    - 機械学習手法を用いて，各コメントを言及された物価動向に応じて分類し，この分類に基づいて物価動向の DI を構築する
- 分類カテゴリは以下の４つ
    -  物価上昇
    -  物価下落
    -  物価に言及はあるが方向感はなし（横ばい）
    -  物価への言及なし
- それぞれのコメント数を$\alpha$、$\beta$、$\gamma$とし、物価センチメンチ指数を以下のように定義する

```math
\text{物価センチメント指数} = \frac{\alpha - \beta}{\alpha + \beta + \gamma} \times 100
```
## ナイーブベイズ分類器
- ナイーブベイズ分類器の導入理由
    - データのサンプルが特徴量の次元対比で少ない場合(景気判断理由集のデータは，コメント数がコメントに使用される単語の種類よりも少ない)でも、ある程度頑健な推定結果を得られる
    - 構造が単純
    - 分類の理由が分かりやすい
        - サポートベクターマシンやランダムフォレストといった他の教師あり分類器では、分類の根拠を解釈することが難しい
        - 景気分析では物価センチメント指数を計算すること
に加えて，それが示唆する物価動向を経済現象として解釈する必要があるため，コメン
トの分類の根拠が分かり易いことは重要
- ナイーブベイズ分類器は，コメント $𝑑$ がカテゴリ$𝑐 \in 𝐶$ に属する条件付き確率$𝑃(𝑐|𝑑)$ を最大化するカテゴリ $𝑐^{*} = \text{argmax}_{𝑐\in 𝐶} 𝑃(𝑐|𝑑)$ を返す．条件付き確率 $𝑃(𝑐|𝑑)$を計算することは一般には難しいが，生成モデルに構造的制約を課すことで，コメント$𝑑$ がカテゴリ $𝑐$ に属する事後確率 𝑃𝑃(𝑐𝑐|𝑑𝑑) は，教師データにおけるカテゴリ別の各単語の出現回数のみから計算できる
    - よく分かりませんでした…

## 推定結果
- ナイーブベイズ分類器の訓練に用いる教師データは，景気ウォッチャー調査 2000 年１月～2017 年 10 月分のコメント約 40 万個の中から，景気の現状判断と先行き判断についてそれぞれ約 1,500 個を抽出し，手動で分類して作成
- この教師データから，各カテゴリの生起確率およびカテゴリ毎に各単語の条件付き生起確率を算出し，これらに基づいてすべてのコメントを分類する
    - 例えば，教師データにおいて「物価上昇」カテゴリでの出現確率が高かった単語を多く含むコメントほど，「物価上昇」カテゴリに属する確率が高くなる
- 分類器の学習結果である各単語のカテゴリ毎の条件付き生起確率をみると，単語の意味から直感的に予想される大小関係と概ね整合的であることが確認できる
    - 物価上昇に関連する「高騰」「値上げ」や，エネルギー価格などコストに関連する「（価格）転嫁」「燃料」「ガソリン」といった単語を含むコメントは，物価上昇を表すカテゴリに分類される確率が高い．逆に，「値下がり」「下落」「（競争）激化」「デフレ」等を含むコメントは価格下落を表すカテゴリに分類される確率が高い
- 算出された物価センチメント指数は，消費者物価指数と高い連動性を示している
    - 両者の相関係数は約 0.7 と高く，短期的な変動の方向も概ね合致している
    - 景気ウォッチャーの景気判断理由集は，わが国全体の物価動向についての情報を有していると考えられる
- 個人メモ
    - 教師データのコメントを手動で４つのカテゴリに分類
    - 各単語の条件付き生起確率を算出
    - こららの学習結果を基に分類が行われる
- 物価センチメント指数と消費者物価指数の時差相関を調べると，いずれの消費者物価指数に対しても，物価センチメント指数が先行している
- 理由は以下の３つの要因がセンチメントに現れており，そうした要因がタイムラグを伴って徐々に将来の価
格にも織り込まれていくためと考えられる
    - 回答者がまだ価格設定に反映していないコストの変動要因
    - 価格設定スタンス
    - 需給要因
- 物価センチメント指数は，消費者物価指数（総合除く食料・エネルギー）よりも消費者物価指数（総合）との相関が高い
    - このことは，景気判断理由集がエネルギーや生鮮食品の価格変動に関する言及を含むことが影響していると考えられる
- 制約と留意点
    - 各カテゴリにおける単語の生起確率の時間的な変化を考慮していない(新しい語彙が誕生した場合には再度学習する必要がある)
    - ナイーブベイズ分類器は，構造が単純であるため，否定形による言及や文脈情報を処理できない
        - テキストの語順を考慮でき，文脈情報をある程度捉えられる再帰型ニューラルネットワーク（Recurrent Neural Network）のような深層学習手法を利用すること等は今後の検討課題
    - 景気ウォッチャーのコメントは景気動向に対する評価であるため，物価動向に対する評価を読み取ることは人間でも難しい場合がある
        - 教師データの分類の正しさは，物価動向に関する記述の曖昧さに原理的に制約される点に留意すべき
  - 景気判断理由集では，データの性質上，景気動向に影響されにくい定例的な価格改定などの物価の情報が含まれない可能性がある

# テキストデータを用いたインフレ率の変動要因の分析
## 予想インフレ率・インフレ率に影響を与える語を抽出するモデル
- 予想インフレ率とインフレ率の変動に説明力のある単語を機械学習により自動で抽出する
- 景気判断理由集の単語の出現頻度を入力変数としたランダムフォレストにより，予想インフレ率とインフレ率を予測するモデルをそれぞれ推定する

## ランダムフォレスト
- ランダムフォレストは，多数の決定木（decision tree）による推定値を平均することで，入力変数（特徴量）から目的変数を予測するモデル
- 決定木による回帰分析を一般的な線形モデルなどによる回帰分析と比較した場合のメリット
    - 二分木の性質と変数と閾値の選択方法から，入力変数の外れ値に対して頑健である
    - 入力変数の中に目的変数との関係が乏しいものが多く含まれる場合でも安定的に推定値を得られる
    - その分岐構造自体が入力変数と目的変数の関係を表すため，解釈が容易
- ランダムフォレストは，決定木の持つ長所を生かしつつ，これらの欠点を補うため，復元抽出により生成したデータに対して決定木を複数生成し，その決定木を組み合わせることで，計算負荷を抑制しつつ精度の高い推定を可能にする手法

## 分析結果
- 目的変数は Consensus Economics「コンセンサス・フォーキャスト」の，６～10 年先予想インフレ率と，インフレ率（消費者物価指数，総合除く生鮮食品・消費税）
- 予想インフレ率については，３か月ないしは６か月ごとの調査であるため，調査が行われなかった月のデータを線形補間して用いた
- 決定木の数は$B=500$、各決定木の入力変数の候補の個数は，概ね $p =200$
- 予想インフレ率とインフレ率に共通する結果として，短い期間の予測では，ランダムフォレストの予測精度は AR(1) に劣る
    - 長めの期間では，ランダムフォレストの方が高い推定精度となっており，景気判断理由集が予想インフレ率とインフレ率の予測精度の改善に寄与していることが確認できる
- 予想インフレ率とインフレ率の予測で寄与の大きい（変数重要度の高い）単語を抜き出す
    - 予想インフレ率では，原材料価格や人手不足，為替などに関連する単語の重要度が高いとの結果となった
    - インフレ率では，消費増税関連など物価の比較的短期の変動要因に関連する単語の重要度が相対的に高いとの結果となっ
- これらの単語の予想インフレ率およびインフレ率への寄与を定量的に測るために部分従属度をプロットする
    - 部分従属度は、単語間の交互作用を平均することで周辺化したものである
    - ワードクラウドを用いることで部分従属度から得られる各単語の寄与具合を可視化することができる