
ThoughtSpotの機械学習(AI)機能の一つ、SpotIQについてご紹介します
AkimasaKajitaniです。今回はThoughtSpotのSpotIQについてご紹介します。SpotIQは機械学習の機能をThoughtSpotで利用できる機能で、隠れたインサイトを発見するための機能です。
SpotIQとは?
SpotIQはThoughtSpot内で利用できる機械学習機能の名称です。SpotIQでは以下の機能を提供しています。
- 「SpotIQ分析」から呼び出し
- 予測(KPIチャートのみ)
- 異常値
- 傾向分析
- 相互相関
- KPIアラート
- KPIチャートの異常検出
- 変更分析
一般的にSpotIQとして目にするのは「SpotIQ分析」から呼び出すところかと思いますが、ここでは、KPIアラート系の話もまとめて行いたいと思います。
「SpotIQ分析」から呼び出し
一般的にSpotIQといえば、回答(Answers)の詳細メニューから呼び出す「SpotIQ分析」になるかと思います。ここでは、予測、異常値、傾向分析、相互相関の4つから選択することができます。
以下は、KPIチャートからSpotIQ分析メニューを呼び出した時の画面です(旧バージョンでは一気に全機能を試せたのですが、現在(10.15時点)は一つずつ呼び出す形になっています)。4つあるSpotIQ分析のうち、「予測」はKPIチャートから呼び出す場合のみ利用可能です。

重要な考え方:
「SpotIQ分析」の考え方として、ユーザーが気づいていないインサイトを得るということを主眼にした設計になっており、SpotIQ分析の呼び出し元の検索結果が主軸になるものの、そこで使われている以外の項目やメジャー(数値項目)に何か隠れたインサイトがないか、というのを探るようになっています。そのため、表示しているチャート内にインサイトがあっても分析対象とならないケースがあります。
分析対象の項目は、項目数やその中のアイテムが多い場合無限大の組み合わせになることが考えられるため、すべての項目に対して分析が行われるわけではありません。また、分析対象はユーザーベースのランキングの影響を受けるため、モデルの設定にある「インデックス優先度」を高く設定している項目が優先的に選択されます(ドキュメント によれば、重要な項目は8~10を推奨しています)。
逆に、ユーザー側で分析範囲をコントロールしたい場合は、「分析を現在の結果セットに限定」というオプションをオンにすることで、分析の元となる検索結果の項目に限定して分析を行うことができるようになります。少しずつインサイトを探っていくにはこちらの方が確実かもしれません。
このあたりはうまく使い分けが必要です。
話を戻します。
前述のSpotIQ分析のメニューからそれぞれのメニューを選択し、「次へ」ボタンをクリックすると、それぞれの分析を行うことができます。
どのように元のクエリ(検索トークン)を作成し、「列の選択」で何を加えるか
そもそも各SpotIQの機能について受け入れることのできるデータについて、時系列データもしくはどのようなデータでも受け入れるものの2つに分かれています。受け入れることのできる対象データが時系列データの場合、日付項目が必須となります。
また、SpotIQ分析を呼び出す元のチャートの属性項目がSpotIQ分析のベースとなりますが、機能によって分析に影響を受けるものと受けないものがあります。また、設定途中で行う「列の選択」においても属性とメジャーで利用されるもの、されないものがあります。
表にまとめると以下のようになります。
| 機能 | 対象データ | 元の検索トークンの影響 | 列の選択 |
|---|---|---|---|
| 予測 | 時系列データ | 属性項目は日付のみとなり、日付項目の粒度の影響を受ける(月単位なのか年単位なのか) | なし |
| 異常値 | 問わない | 受ける | 利用される |
| 傾向分析 | 時系列データ | 受ける | メジャーのみ利用される(属性を選択しても利用されません) |
| 相互相関 | 時系列データ | 属性項目は無視される | メジャーのみ利用される(属性を選択しても利用されません) |
元々複数の機能を一括で処理できるようになっていたため、インターフェースが共通化されており、少しわかりにくくなっているかもしれませんが、実は機能によってかなり動きが異なります。
元の検索トークンの影響を受ける機能はしっかりと検索結果で分析を行いたい形にしておく必要があります。例えば、KPIチャートで予測をする場合、月単位なのか年単位なのか、といったところは最初の検索時点でしっかり設定しておく必要があります。特に日付項目については時間バケット(日単位なのか月単位なのか)は検索時のものがそのまま使われます。また、属性項目は、元の検索結果の粒度で分析が行われます(相互相関、予測以外)。つまり棒グラフで売上とカテゴリを表示しているチャートの場合、カテゴリごとに分析が行われるということです。例えば、カテゴリ内のアイテムが「野菜」「果物」「飲料」であれば、それぞれのアイテムにしぼった状態にして分析が行われます。なお、未使用項目に属性項目が入っている場合も分析対象となるため不要なら外しましょう(場合によってはインサイトが得られない要因となります)。
少し具体的に解説すると、以下は、元のクエリ(検索トークン)として「オーダー日 サブカテゴリ、売上」とし、列の選択で「都道府県」を追加し、異常値分析を行っているものです。元のクエリの検索項目でフィルタがかかり、それを列で選択した属性項目(もしくは他の結果では元のクエリの検索項目の属性項目)でスライスし、異常値分析を行っています。

なお、「分析を現在の結果セットに限定」をオンにした場合、列の選択は完全に無視され、元の検索トークンの影響のみ受けるようになります。このオプションは、以下のように「列を選択」の画面でオプション選択メニューに入ることができます。

実際の設定は、「すべての選択された質問に対する設定」のところにあります。

SpotIQ分析結果の賞味期限について
基本的にすべてのSpotIQ分析の結果は、ナビゲーションのインサイトの「SpotIQ分析」内に一時的に保存されます。ただし、そのままですと24時間で賞味期限切れとなり削除されます。これを保存しておきたい場合は、「インサイトの保存」ボタンから保存する必要があります。これにより、有効期限なし、として保存されます。
SpotIQ分析の共有について
共有は可能です。
ライブボードへのピン留めについて
ライブボードへのピン留めは、可能なものと不可能なものがあります。
可能なもの:
- 異常値
- 傾向分析
- 相互相関
不可能なもの:
- 予測
制限事項
SpotIQ分析では、Group_Aggregation 系の関数は利用できません。
予測

予測は、LSTM(Long Short-Term Memory)と呼ばれる機械学習のアルゴリズムによって行われます。これは、重要な情報を長期的に記憶することができる、というアルゴリズムです。基本的には、過去のパターン、季節性、成長率などから時系列予測を行うモデルですので、日付項目を持つデータに対して、単一の数値を予測することとなります。
得られる結果について
これを実行すると、以下のようなグラフが得られます。

右端のグレー部分が予測の結果で、95%の信頼区間の予測結果となります。なお、予測するためには、データポイントが最低15個必要です。
異常値

異常値というと悪い印象を持つかもしれませんが、元の英単語が「Outlier」なので、「外れ値」ということになります。
外れ値分析は、手法として以下から選択可能です(同時実行が可能です)。
- 「中央Zスコア」もしくは「Zスコア」(デフォルトで実行される)
- 季節性ハイブリッドESD
- 線形回帰(日付列に対してのみ実施)(デフォルトで実行される)
実行する場合は、元のクエリ(検索トークン)に入っている属性の項目の中身のアイテムごとに分析が行われるため、しっかりと分析したい内容を検索トークンで表現する必要があります。
得られる結果について
異常値分析を実行すると、以下のようなグラフが得られます。
こちらは、月単位の日付項目に対して分析が行われています。アルゴリズムは「中央Zスコア」です。

日付以外の属性項目の場合、以下のような結果が得られます。

注意事項:
- 「季節性ハイブリッドESD」は速度がかなり遅いです
- 「線形回帰インサイトの最大数」はデフォルト設定のほうが良いようです。値を変更した時に結果が出ないことがありました。
傾向分析

傾向分析は、時系列データに対しておおまかな傾向(右肩上がりなのか、下がりなのか)を見つけるための分析手法です。時系列データに対して最小二乗法(いわゆる線形回帰ですね)で近似直線を決定するため、必ず日付項目が必要になります(日付項目は日時型である必要があります)。
実行する場合は、元のクエリ(検索トークン)に入っている属性の項目の中身のアイテムごとに分析が行われるため、しっかりと分析したい内容を検索トークンで表現する必要があります。
得られる結果について
傾向分析を実行すると、以下のようなグラフが得られます。

「線形モデル」という水色の直線が分析結果となります。
注意事項:
傾向分析で、検索トークンで設定している属性の傾向でインサイトが得られない場合、「パラメーターをカスタマイズする」のところで「分析を現在の結果セットに限定」にチェックを入れて実行してみてください。ただし、この場合「列を選択」で設定したメジャーについて分析が行われなくなるため、追加したいメジャーがある場合は検索トークンに加えてください(チャートに表示しなくても未使用項目に入れておけば分析対象となります)。
相互相関

相互相関分析は、「相互相関分析」(Cross-correlation analysis)という手法であり「2つの異なる時系列データが時間的なズレを考慮しながらどの程度類似しているか」を分析しています(いわゆる「相関」とは異なる分析をしているので混同しないようご注意願います)。
基本的に分析対象は時系列データとなります。日付項目だけ入っていれば、各数値項目との相関を出してくれます(ただし、元の検索トークンの属性項目は数値以外無視されます)。日付項目ではない属性データのみでも一応結果を出すことは可能です(その場合、「列の選択」で選択する属性項目が対象となります)。
得られる結果について
相互相関分析を実行すると、以下のようなグラフが得られます。

ところで、属性項目を考慮した相互相関を行いたい時はどうすればよいのでしょうか?例えば、出荷モードという項目があり、「通常配送」「プレミアム配送」間に相関があるのかどうか調べたい、ということは多いかと思います。この場合、IF文を使って、各属性項目ごとの数値項目を作って分析することができます。

これを分析したい項目数だけ作成し、分析対象の数値項目とすれば、相関分析を実行することができます。
KPIアラート
KPIアラートは、KPIチャートの一機能です。KPIチャートの上部メニューにある「アラートの作成」からアクセス可能です。

この鈴マークをクリックすると、以下のようなダイアログが立ち上がります。

選択できるアラートタイプとしては上のスクショの通り以下のものとなります。
- KPIの設定された制限値超過
- 属性単位集計値の設定された制限値超過
- KPI値 定期送信
- 属性単位集計値 定期送信
- KPIの予期しない変化
この中でも「KPIの予期しない変化」は機械学習により期待される信頼区間に収まっていない場合に通知されるように設定が可能です(異常検出の詳細は次の項目にて記載)。
KPIチャートの異常検出
KPIチャートには異常値検出機能が最初から組み込まれています。過去のデータポイントに基づき、最新のデータポイントが期待される信頼区間に収まっていない場合、異常値として検出します。詳細はこちら 。
この異常値の検出のためには、最低5つのデータポイントが必要です。5~30のデータポイントの場合、移動中央値アルゴリズムで異常値を検出しますが、30を超えるデータポイント数がある場合、異常値検知のアルゴリズムとしてMeta社のProphetというOSSのモデルを使って異常検知を行います。
実際の結果は以下のようになります。

変更分析
変更分析は、ある2点間の比較を行い、主要な変更要因を特定できる機能です。この機能は変化に対する主要要因を深堀りできる非常に便利な機能となっており、他のセルフサービスBIツールではここまで特化した機能を持っているものはないと思います。詳細なアルゴリズムなどを知りたい方はドキュメント を参照して下さい。
変更分析は、以下の方法で利用することができます。
- KPIチャートの下部メニューを選択
- 各チャートの2点を選択し、右クリックメニューから「変更分析」を実施
なお、Spotterの「なぜの質問」機能を使うことで、同様にSpotter内で変更分析を行うことが可能です。
得られる結果について
変更分析を行うと、以下のような画面が出てきます。最初の概要画面では、各属性項目に対して最も変化に対して影響を与えている要因が出てきています。

左のタブで各属性項目を切り替えると、それぞれの属性内の変化の要因を確認することができます。

これにより、各属性項目のどのアイテムがどのような変化が起きているかを把握することができます。
さらに、表示されているグラフ内の要素を右クリックし、「各アイテムを分析する」、を選択すると、その項目にしぼってさらに変更分析を行うことができます。好きなだけ深堀りができるということですね!
まとめ
ThoughtSpotのSpotIQ分析は使いこなすコツが確実に存在します。表示されているチャートに対してとりあえずSpotIQ分析をかける、というよりは、目的を持ってチャートを作成し、SpotIQ分析をした方が効率的にインサイトを得ることが可能です。
各SpotIQ分析の詳細は別途ご紹介しますので、より詳しい内容を知りたい方や、動かす時のコツ、例などを知りたい方は今後更新される記事をご確認頂ければ幸いです。
参考資料
What are the spotIQ algorithms
Change analysis | ThoughtSpot Documentation
※ThoughtSpot バージョン 10.15.0.cl-96時点の情報です
運営会社
