見出し画像

データ分析自動化の最前線!Vanna.AIを試してみた

分析屋の町田です。

従来のデータ分析では、SQLの深い知識が必要であったり、データベースや可視化ツールの複雑な操作が必要でした。しかし、近い将来これらの知識は不要になるかもしれません。最新のデータ分析自動化ツール「Vanna.AI」を用いれば、テキストで質問するだけでAIが瞬時に分析を行い、わかりやすく可視化してくれます。

今回の記事では、Vanna.AIがもたらすデータ分析の自動化について紹介し、さらにGoogle Colaboratory上で実際にVanna.AIを動かすことで、Vanna.AIの威力を体験してみます。


Vanna.AIの概要

従来のデータ分析における課題

①SQLや可視化ツールの知識が必要

データベースを参照してデータ分析を行う場合、通常はSQLなどのクエリ言語を用いてデータベースからデータを取り出す必要があります。そのため、分析者はSQLを学んだうえで、分析要件をSQLに変換する必要があります。同時に可視化ツールの多様化も進んでいるため、それらのキャッチアップも必要となり、分析者の学習コストは年々肥大化しています。

②1回の分析に時間を要する

仮にそれらのスキルを持った人材でも、分析を瞬時に行えるわけではありません。まずは分析要件をヒアリングし、それをもとに正しい結果を返すSQLを考える必要があります。その上で、データベースに接続してクエリを実行し、出てきた結果を適切なグラフに変換するというプロセスも必要です。これらの工程を辿るため、対話的に何度も分析を繰り返すといった作業を行うには途方もない時間と労力がかかっていました。

Vanna.AIとは?

Vanna.AIは、2023年にVanna.AIにより発表された、データ分析作業を自動化するツールです。Vanna.AIでは、データ分析におけるSQL作成から可視化までの作業をすべてAIが肩代わりします。

例えば、人間が「毎月の商品の売上総額は?」と質問するだけで、Vanna.AIは以下のように可視化された結果を瞬時に返します。

この際、内部では生成AIが質問文をもとにSQLを作成し、データベースから結果を取得した後、その結果を適切なグラフで表示させています。この際、実際に発行されたSQLやグラフの数値も併せて表示されるため、分析者は分析が正しく行われているかを確認することも可能です。

Vanna.AIのメリット

Vanna.AIを使うことにより、従来のデータ分析の課題を解決することができます。

①分析者の学習コスト削減

分析者はAIに質問するだけで瞬時に結果を得ることができるため、分析者が新たにデータベースや可視化ツールの使い方を学習する必要がありません。AIの信頼性が担保されていない現状では、実行されたSQLを人間がチェックする必要はあるかと思いますが、将来AIの精度が人間に匹敵するレベルまで向上すれば、そのチェック作業すら不要になる可能性もあります。

②データ分析の高速化

Vanna.AIでは質問をしてから10秒以内※に可視化結果を得ることができるため、結果を見ながら何度も分析し直すといったことも可能です。例えば複雑な要因分析においては、様々な観点からデータを分析し、何かしらの関係性を見つけ出す必要があります。そのため、早いサイクルで分析が回せるようになれば、より多くの関係性を見つけ出すことにも繋がります。

※レスポンスの速度は、利用環境や設定により多少変動する場合があります。

Vanna.AIの料金

Vanna.AIは無料で試すことができます。

無料プランでは、GPT-3.5をベースとしたモデルを利用することが可能です。ただし、1日に投げられる質問回数には制限があるので注意しましょう。回数制限を解除したい場合やより高精度なモデルを利用したい場合は、月額30ドルで上位プランに加入することも可能です。


Vanna.AIを試してみた!

Vanna.AIの威力をこの目で確かめるべく、実際にGoogle Colaboratory上でVanna.AIを動かしてみました。

1. APIキーの取得

Vanna.AIを使い始めるには、Vanna.AIのホームぺージ(下記リンク)にアクセスし、「Get Started for Free」と書かれたボタンをクリックします。するとアカウント作成を促されるので、指示に従ってアカウントを作成し、APIキーを発行してください。

2. 環境準備

次に、下記のリンクを開いてGoogle Colaboratoryにアクセスし、ノートブックを新規作成します。

新規作成できたら、右上の「接続」ボタンをクリックしてランタイムを起動しておきます。

3. データ分析の実行

ここまできたら、あとはコードを書くのみです。

Vanna.AIのサンプルコードをもとに、実際に質問文を投げてみます。

# Vanna.AIのインストール
%pip install vanna==0.4.3

from vanna.flask import VannaFlaskApp 
from vanna.remote import VannaDefault

# APIキーの入力
VANNA_API_KEY = "<ここにAPIキーを貼り付け>"

# Vanna.AIの設定
vn = VannaDefault(model='chinook',
api_key=VANNA_API_KEY)
vn.connect_to_sqlite('https://vanna.ai/Chinook.sqlite')

# Vanna.AIの実行
vn.ask('What are the top 10 artists by sales?')

実行してしばらく待つと、以下のようなグラフが表示されました。

期待した通り、アーティストごとの売り上げが高い順に表示されていますね。

同時に、実際に実行されたSQLやグラフの数値も出力されています。

4. クエリの日本語化(Translation APIとの連携)

先ほどのコードでは、Vanna.AIにクエリを投げるために英語で質問を書いていました。しかし、実務においては日本語で質問を投げたいという要望が多いと思います。そこでCloud Translation APIと連携することにより、日本語で質問を投げられるように改良してみます。

まずは、下記のサイトを参考にしながらTranslation APIを有効化します。

次に、Colaboratory上でGoogle Cloudにログインします。

最後に、ノートブックに新たなセルを追加し、下記のコードを入力します。

from google.cloud import translate_v3 as translate
from google.colab import auth

GCP_PROJECT_ID = "<ここにGoogle CloudのプロジェクトIDを入力>"
VANNA_QUERY = "毎年のアルバムの売り上げ総額は?"

class JapaneseToEnglishAPI(translate.TranslationServiceClient):
    """日本語から英語への翻訳"""
    def __init__(self, project_id: str, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.project_id = project_id

    def simple_translate_text(self, text: str) -> str:
        response = self.translate_text(
            request={
                "parent": f"projects/{self.project_id}/locations/global",
                "contents": [text],
                "mime_type": "text/plain"# mime types: text/plain, text/html
                "source_language_code": "ja-JP",
                "target_language_code": "en",
            }
        )
        return response.translations[0].translated_text

translator = JapaneseToEnglishAPI(project_id=GCP_PROJECT_ID)
vn.ask(translator.simple_translate_text(VANNA_QUERY))

このコードを実行すると、以下のように毎年の売り上げ総額が表示されます。

実際に実行されたSQLクエリはこんな感じです。

SELECT
  strftime('%Y', i.InvoiceDate) AS Year,
  SUM(il.Quantity * il.UnitPrice) AS TotalSales
FROM
  InvoiceLine il
  JOIN Invoice i ON il.InvoiceId = i.InvoiceId
  JOIN Track t ON il.TrackId = t.TrackId
  JOIN Album a ON t.AlbumId = a.AlbumId
GROUP BY
  Year;

少しだけ無駄なJOIN操作が行われてしまっているのが残念ですが、そこは今後のAIの精度改善に期待したいところですね!


まとめ

今回は、面倒なデータ分析作業を自動化するツール「Vanna.AI」について紹介しました。Vanna.AIでは実際に分析したい内容をテキストで投げるだけで、分析結果を見やすく可視化された状態で得ることが出来ました。現状では精度面などいくつかの課題は残るものの、今後のAI技術の発展によりそれらの課題も徐々に解消されていくだろうと思います。近未来のデータ分析はこうなるのかもしれないと、いろいろ考えさせられるツールでした。



ここまでお読みいただき、ありがとうございました!
この記事が少しでも参考になりましたら「スキ」を押していただけると幸いです!

株式会社分析屋について

弊社が作成を行いました分析レポートを、鎌倉市観光協会様HPに掲載いただきました。

ホームページはこちら。

noteでの会社紹介記事はこちら。

【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!

【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。

【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。

【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。

【SES】
SESサービスも行っております。