はじめに
今回は2024年5月13日(米国時間)にOpenAIから発表されたGPT-4oだけを使ってデータを可視化・分析をします。 データをもとに横軸縦軸を指定し、グラフのプロットをChatGPTにお願いするだけでグラフを簡単に作ってもらおうというものです。
これによって関数などわからなくても直感的に欲しいグラフの作成が可能になるかもしれないという検証記事です。
注意点として、このGPT-4oは無料ユーザーでも使用は可能ですが一日の回数制限があり 同じように作成するのはかなり難しいと思います。実際にGPT-3.5では全然違う結果が返されたりしました。
ChatGPTとは何か
ChatGPTは、OpenAIによって開発された自然言語処理モデルの一つです。GPT(Generative Pre-trained Transformer)アーキテクチャに基づいており、膨大な量のテキストデータを学習することで、文脈に応じた自然な文章を生成する能力を持っています。
生成AIのしくみ
学習プロセスと生成プロセスに分けて生成AIのしくみを説明します。
1. 学習プロセス
生成AI、特にChatGPTは、以下のようなプロセスを通じて学習します:
- 大規模データセットの使用:インターネット上の大量のテキストデータを収集し、これを元にモデルをトレーニングします。これにより、モデルは多様なトピックや文脈に対応する能力を獲得します。
- トランスフォーマーアーキテクチャ:GPTはトランスフォーマーと呼ばれるニューラルネットワークの一種を使用しており、これにより文脈を考慮した文章生成が可能になります。
- 自己教師あり学習:モデルは、部分的なテキストから次に来る単語やフレーズを予測するタスクを通じて学習します。これにより、文脈を理解し、自然な文章を生成する能力が向上します。
2. 生成プロセス 学習が完了した生成AIは、以下のようにして新しい文章を生成します:
- 入力の理解:ユーザーからの入力(プロンプト)を解析し、その文脈や意図を理解します。
- 適切な応答の生成:学習データを元に、最も適切な応答を生成します。この際、文脈に沿った自然な文章を作成することを目指します。
- リアルタイム処理:入力から応答の生成までのプロセスは非常に高速で、リアルタイムでの対話が可能です。
何がすごいの?
生成AI、特にChatGPTが注目される理由は大きく分けて5つあります。
1. 自然な対話能力
ChatGPTは、ユーザーの入力に対して自然な言語で応答する能力があります。これにより、人間との対話のようなスムーズなコミュニケーションが可能となります。
2. 多用途性
ChatGPTは多様なトピックや用途に対応できます。例えば、質問応答、文章生成、要約、翻訳、さらにはクリエイティブな文章作成など、幅広い用途で利用されています。
3. 効率の向上
生成AIは、大量のデータを迅速に処理し、的確な情報を提供することができます。これにより、業務の効率が大幅に向上します。例えば、カスタマーサポートでの応答時間の短縮や、コンテンツ制作のスピードアップが実現します。
4. 学習と適応
生成AIは、継続的な学習と適応が可能です。新しいデータやフィードバックを取り入れることで、常に最新の情報を提供し、精度を向上させることができます。
5. クリエイティブなサポート
生成AIは、創造的な作業を支援する力を持っています。新しいアイデアの発想や文章の作成など、人間の創造性を補完するツールとしても活躍しています。
ChatGPTをはじめとする生成AIは、その高い言語理解力と生成能力により、さまざまな分野で革新的な役割を果たしています。今後もさらに進化し、より多くの応用が期待されています。
成果物
本記事で作成したダミーデータをみてもらいます。
カフェの支払手段別売上を想定しました。
ダミーデータより一部抜粋
date | total_sales | cash | credit | transport | paypay | id_pay | quickpay | coffee | latte | cake | sandwich | smoothie |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2013-01-06 | 101800 | 12600 | 38500 | 24400 | 7800 | 9300 | 9200 | 8400 | 21100 | 24700 | 15700 | 37000 |
2013-01-07 | 56800 | 8800 | 20300 | 12400 | 6500 | 3900 | 4900 | 11000 | 16100 | 17800 | 15200 | 11000 |
2013-01-09 | 64400 | 9000 | 19700 | 14900 | 10400 | 5700 | 4700 | 12500 | 19400 | 26700 | 13800 | 16100 |
2013-01-10 | 88600 | 18900 | 32200 | 17900 | 9200 | 5800 | 4600 | 6900 | 15400 | 11300 | 21000 | 30600 |
2013-01-11 | 79300 | 16500 | 29800 | 11300 | 10800 | 6500 | 4400 | 12200 | 15100 | 16100 | 17000 | 17700 |
2013-01-12 | 105000 | 17400 | 33500 | 21600 | 11700 | 10600 | 10200 | 14300 | 21000 | 26700 | 30100 | 23100 |
2013-01-13 | 123300 | 18700 | 39200 | 32300 | 17000 | 8300 | 7800 | 17100 | 14600 | 43900 | 34300 | 23300 |
2013-01-14 | 83700 | 19100 | 26200 | 21600 | 5800 | 4200 | 6800 | 12300 | 10900 | 19200 | 18900 | 13300 |
2013-01-16 | 62100 | 14200 | 15200 | 13500 | 7900 | 6900 | 4400 | 6700 | 14500 | 12000 | 22400 | 16200 |
2013-01-17 | 64100 | 9800 | 25400 | 11700 | 5200 | 5600 | 6400 | 6400 | 12300 | 14400 | 16000 | 23800 |
今回使用しているデータは以下の記事でダミーデータとして生成しています。
作り方などを知りたい方はこちら
▼年間売上の棒グラフ
▼一年ごとの売上の折れ線グラフ
▼10年間の売り上げの折れ線グラフ
もちろん完璧なものではありませんが、短い時間でダミーデータを作成するという効率性としてはとても有意義だと思います。
プロンプトを知ろう
まず、ChatGPTを使う上で一番気にしなくてはいけないことはプロンプトです。
プロンプトとはユーザーがシステムに対して入力する、いわゆる指示・命令です。
相手によって物事の頼み方が違うように、ChatGPTにはChatGPTに伝わる頼み方があるということです。
ただ、プロンプトについては至ってシンプルです。
「より細かく言語化」すればいいだけです!
シンプルですね。(これがむずかしめなのですが…。)
良いプロンプトを書くためのコツ
1. 具体的なデータ要件を示す:
生成したいデータの種類(例:名前、住所、電話番号、メールアドレス、製品情報など)。
データの形式(例:CSV、JSON、Excelなど)。
各データ項目の詳細(例:名前はフルネーム、住所は市区町村と郵便番号、メールアドレスは有効な形式など)。
2. データ量を明示する:
生成したいデータの件数(例:100件の顧客データ、500件の注文データなど)。
3. 特定の条件や制約を設定する:
特定の範囲や条件に基づくデータ(例:特定の期間内のデータ、特定の地域のデータなど)。
必要なユニーク性(例:メールアドレスや電話番号は重複しない)。
4. データの多様性を確保する:
複数のカテゴリやバリエーションを含むデータ(例:異なる職業や年齢層の人物データ)。
5. 使いやすい形式にする:
必要に応じて、特定のフォーマットやテンプレートに従う(例:住所は「都道府県、市区町村、番地」の形式にする)。
ここまで示すとかなり思っているものに近づけた形式にChatGPTも返してくれますね。
さらに解像度を良くしたい場合は
- ChatGPTがどのような立場なのか(大体はその問いの自分が置かれている状況)
- どのレベルの人に向けてのものを出力してほしいのか
- 「足りない情報やわからないことがありましたら聞いてください」といっておく
などを加えるとよりChatGPTとあなたとの間の認識の齟齬がなく良いものを出力してくれる傾向があります。
以上を踏まえた例
良くない例
- ダミーデータを作ってください。
- 何に関する、何のためのダミーデータなのかわからない
- 規模は?
- 業務形態は?
- 必要なカラムは?
- 期間は?
良い例
- 私は個人コーヒーショップの経営者です。
- 売上データを分析したいのですが分析手段を持たないのでまずはダミーデータを使って分析の練習がしてみたいです。
- コーヒーカフェにの売上のダミーデータを作成してください。
- 顧客の支払手段は現金、クレカ、交通系、PayPay、ID、QuickPayの6種です。
- 定休日は火曜、および祝祭日(土日は営業)
- 土日の顧客数は平日と比べ1.5倍程度
もちろんこれだけで良いダミーデータになるわけではないのですが、ChatGPTを使用する場合は、より詳しく言語化し情報を付け加えることを意識してください。人間では察知してくれるようなこともまだ察知してくれません。
腹を割って素直に要望を伝えきることが望んだアウトプットにつながるのです。
※ただし一度言ったから安心というわけではなく、修正を繰り返しているうちに条件が抜け落ちることもあるので再度命令をしてあげてください。
データの可視化・分析
作成したダミーデータを使用してグラフのプロットをしていきましょう。
データを持っていないという方はこちらの記事を参考にダミーデータを作ってみましょう。
Excelやプログラミングを使用して作図するのも十分良いのですが、今回はChatGPTで作図していきます。
2023_coffeecafe_sales_data_plot
良い感じで出力できました。
さらに分析の幅を広げていきましょう。
Annual Sales From 2013 To 2023.png
Monthly Sales Comparison(2013-2023)
グラフは問題なくプロットできてますね。
年間で見るとほとんど売上高が変わらないこともわかりました。
二枚目のMonthly Sales Comparison(2013-2023)のグラフを棒グラフではなく折れ線グラフでも表示してみましょう。
Monthly Sales Comparison (2013-2023)(line graph)
法則性がつかめそうなところもそうではなくランダムっぽいところもありますね。
2013年~2023年の飲食店のデータということでコロナの影響も加味しデータをさらにリアルにしましょう。
Annual Sales From 2013 To 2023
とてもいい感じにデータを可視化出来ましたね。
最後にこれを一本の折れ線グラフにして10年間の売上高の推移を確認してみましょう。
過去10年間(2013年から2023年)の月ごとの売上を1本の折れ線グラフでプロットしたものが出力できました。
これにより、10年間を通した月ごとの売上の推移を視覚的に確認できました。
おわりに
関数やプログラミングのコードの知識がなくとも、描画したいものが言語化さえできればデータを可視化することができるとわかりましたね。
細かいところを整えるためにもコードの知識はあって損はないのですが、どんな人でもプロットができるというのは非常に魅力的だと思います。
今回はこの程度で終わらせましたが、商品ごとの売上や支払手段ごとの売上の可視化など様々な分析がほかにもできます。それだけでなく、データとして天気の情報や来店者数などのカラムを新たに追加し、来店者数と天気の相関を分析をすることもできます。
このように、可視化・分析をした結果を見てダミーデータへの情報を増やし、よりリアリティに富んだデータを作ることも可能です。
データの可視化だけでなく、自由に使えるデータが手元に欲しい方はこちら