「ChatGPTの便利なプラグインを知りたい…」「ChatGPTを使ったデータ分析ができるの?」 そう思う方もいるのではないでしょうか。
実は、ChatGPTのプラグインを有効にして「Noteable」をインストールすることで、ChatGPTを使って簡単にデータ分析をすることができます。
今回PROMPTYでは、ChatGPTのプラグイン「Noteable」を実際に使って活用方法を解説します。
ChatGPT プラグインの使い方を知りたい方は、こちらの記事をご覧ください。
2023年5月16日ごろ、ChatGPTのプラグイン機能「ChatGPT plugins」がウェイトリストの登録無しで使用できるようになりました。 ChatGPT pluginsを使用すると、 ・リアルタイム情報の取得・Web[…]
Noteableプラグインでは何ができるの?
Noteableとは
Noteableは、データサイエンスのプロジェクトを効率的に管理するためのプラットフォームです。
Jupyterノートブックを中心に、データ解析、ビジュアル化、機械学習のモデル構築などの作業を一元的に行うことができます。
Noteableの最大の特長は、クラウドベースの環境であるため、どこからでもアクセスして作業を進めることができる点です。また、プロジェクトやデータファイルの管理、セキュリティ設定、データベースの接続など、データサイエンスのワークフローに必要な多くの機能が統合されています。
ChatGPTとNoteableの組み合わせでできること
ChatGPTとNoteableプラグインの組み合わせは、データサイエンスの領域での作業の効率アップにつながります。ChatGPTの自然言語処理の能力を活かして、ユーザーの質問や要求を理解し、それに応じたNoteableの操作を自動的に行うことも可能です。
これにより、データ解析やモデル構築の過程での疑問やトラブルシューティングを、リアルタイムでサポートすることができます。この組み合わせは、データサイエンスの作業をより迅速かつ効率的に進めるための強力なツールとなることでしょう。
実際にNoteableプラグインを使ってデータ分析を行う
実際に、ChatGPTのNoteableプラグインを使ってデータ分析を行います。
今回は、様々な分野の都道府県別・時系列データを集めたデータセット(出典:統計センター)を使ってデータの分析を行います。
①データセットの読み込み
はじめに、データセットをChatGPTに読み込んでもらいます。
入力文:
次のURLのCSVファイルを読み込んで下さい。
カラム名は2行目に入力されています。
読み込んだら、最初の5行5列分を表示してください。
https://www.nstac.go.jp/sys/files/SSDSE-B-2023.csv
確認のため、チャット画面に最初の5行5列分を表示してもらいます。
ChatGPTの出力(Noteableプラグイン):
データセットを読み込んで、最初の5行5列を表示してくれます。エンコーディングの方法は先にプロンプトで指定しておいた方が良いです。
元のCSVファイルを確認すると、正しく読み込めたことが分かります。
データ分析を行う
データセットのカラムの中から、今回は総人口を目的変数として選びました。
はじめに、他のカラムとの相関を分析します。
入力文:
目的変数を総人口とします。
以下のカラムに対する総人口との相関を分析して、それぞれ可視化してください。
合計特殊出生率
転出者数(日本人移動者)
転入者数(日本人移動者)
着工新設貸家床面積
小学校児童数
幼稚園教員数
食料費(二人以上の世帯)
ー以下省略ー
ChatGPTの出力(Noteableプラグイン):
それぞれのカラムと総人口との相関係数をまとめてくれました。
カラムと総人口の相関を一つずつ表示してもらうこともできます。
次にクラスタリングを行います。特に制限は設けずに実行してもらいます。
入力文:
クラスタリングをしてください。
ChatGPTの出力(Noteableプラグイン):
総人口と合計特殊出生率について、KMeansクラスタリングを行い、3つのクラスタに分けて出力されました。
他のカラムについてもクラスタリングの結果を表示することもできます。
最後に、総人口を予測するモデルの作成を試みました。はじめに、評価関数をRMSEに指定して他の制限は設けずにモデルを作成してもらいます。
入力文:
読み込んだデータセットから、総人口を予測するモデルを作成してください。
評価関数はRMSEとします。
ChatGPTの出力(Noteableプラグイン):
総人口を予測するモデルを作成しました。使用したモデルはランダムフォレスト回帰です。
テストデータに対するRMSE(Root Mean Squared Error)は約155,823です。
この値は、モデルの予測誤差の大きさを示しています。RMSEが小さいほど、モデルの予測精度が高いと言えます。このモデルの性能に関して、さらに詳しい情報や改善の提案が必要であれば、お知らせください。
ランダムフォレスト回帰を選択してモデルを作成してくれました。
今回はあまりデータ数が多くないため、精度はイマイチですが、このようにNoteableプラグインを使うことで予測モデルの作成と評価関数によるモデルの評価を行うことができます。
他のモデルでも、予測を行ってみます。
入力文:
読み込んだデータセットから、総人口を予測するモデルを作成してください。評価関数はRMSEとします。
モデルは勾配ブースティング回帰としてください。
ChatGPTの出力(Noteableプラグイン):
勾配ブースティング回帰モデルを使用して総人口を予測しました。
テストデータに対するRMSE(Root Mean Squared Error)は約87,125.56です。
この値は、モデルの予測誤差の大きさを示しています。RMSEが小さいほど、モデルの予測精度が高いと言えます。このモデルの性能に関して、さらに詳しい情報や改善の提案が必要であれば、お知らせください。
勾配ブースティングをモデルとして選ぶことで、少し精度が向上しました。
最後に、ChatGPTの特長を活かして、予測の精度を上げる方法を質問してみます。
入力文:
予測の精度を上げるにはどうすればよいですか?
ChatGPTの出力(Noteableプラグイン):
予測の精度を上げるための方法は多岐にわたります。以下に、一般的なアプローチと具体的な手法を挙げます:
1.データの前処理:
・欠損値の処理:欠損値を持つ行や列を削除する、または適切な値で補完する。
1.
・外れ値の処理:外れ値を検出し、適切に処理する(削除、補完など)。
・特徴量のスケーリング:特徴量のスケールを揃えるために、標準化や正規化を行う。
2.特徴量エンジニアリング:
・新しい特徴量の作成:既存の特徴量を組み合わせて新しい特徴量を作成する。
・特徴量の選択:不要な特徴量を削除し、モデルの性能に寄与する特徴量のみを使用する。
・カテゴリ変数のエンコーディング:One-hotエンコーディングやラベルエンコーディングなどを使用してカテゴリ変数を数値に変換する。
3.モデルの選択とチューニング:
・異なるモデルの試行:異なるアルゴリズムやモデルを試して、最も性能の良いものを選択する。
・ハイパーパラメータの最適化:グリッドサーチやランダムサーチを使用して、モデルのハイパーパラメータを最適化する。
4.アンサンブル学習:
・バギング:例えば、ランダムフォレストのように、複数のモデルの平均を取る方法。
・ブースティング:例えば、XGBoostやLightGBMのように、複数のモデルを逐次的に学習させる方法。
・スタッキング:複数の異なるモデルの予測結果を入力として、新しいモデルを学習させる方法。
5.データの追加:
予測の精度を向上させるためには、より多くのデータを収集することが有効な場合があります。
6.正則化:
過学習を防ぐために、L1正則化(ラッソ)やL2正則化(リッジ)を使用する。
7.クロスバリデーション:
データセットを複数の部分に分割し、それぞれの部分をテストデータとして使用することで、モデルの性能をより正確に評価する。
これらの方法を組み合わせることで、予測の精度を向上させることが期待されます。具体的なデータや問題に応じて、最適な手法やアプローチを選択することが重要です。
様々なアプローチを提案してくれました。
このように、ChatGPTに質問しながらデータ分析を進められることが、Noteableプラグインを使う大きなメリットであるとわかります。
ChatGPTのCode Interpreterを使った場合との比較
データ分析を行う別の方法として、ChatGPTのCode Interpreterの使用が挙げられます。
Code Interpreterは、ChatGPT上でPythonを実行できる拡張機能で、2023年8月現在はChatGPT Plus(有料版)の加入者のみ利用できます。
Code Interpreterの詳しい情報は、こちらの記事で解説しています。
ChatGPTのCode Interpreterというコード実行プラグインがChatGPT Plus会員(有料会員)にリリースされたことが分かりました。 これにより、ChatGPTを使用している間、データ解析やグラフ生成といった機能[…]
Noteableと同様に、データ分析を進めていきます。
ファイルの読み込み
ファイルを読み込みます。Code Interpreterでは、URLを入力するのではなく、直接CSVファイルをアップロードできます。
入力文:
アップロードしたCSVファイルを読み込んで下さい。
カラム名は2行目に入力されています。
読み込んだら、最初の5行5列分を表示してください。
ChatGPTの出力(Code Interpreter):
少し時間がかかりますが、問題なくファイルを読み込むことができました。指示通り、最初の5行5列を表示してくれています。
データ分析を行う
先ほどと同様に、総人口に対するそれぞれのカラムとの相関を分析して可視化します。
Noteableより少し見ずらいですが、データをプロットして総人口とそれぞれのカラムの相関を図示しています。グラフの書式は入力文で後から指定することができると思います。
続いて、クラスタリングを行ってもらいます。。
粘ってもらいましたが、期待したクラスタリング結果を得ることはできませんでした。Code Interpreterでは、実行できるライブラリが限られているため、おそらく今回はクラスタリングを行うライブラリが使用できないためだと考えられます。
最後に、総人口の予測モデルの作成を行ってもらいます。
入力文:
読み込んだデータセットから、総人口を予測するモデルを作成してください。
モデルは勾配ブースティング回帰とランダムフォレスト回帰の2パターンを考えてください。
評価関数はRMSEとします。
ChatGPTの出力(Code Interpreter):
了解しました。
以下の手順で進めます:
データをトレーニングセットとテストセットに分割します。
勾配ブースティング回帰モデルとランダムフォレスト回帰モデルをトレーニングデータにフィットさせます。
両モデルのテストデータに対するRMSEを計算します。
まず、データをトレーニングセットとテストセットに分割します。
Finished working
Show work
申し訳ございませんが、セッションがリセットされたため、データと変数の定義が失われました。再度、データを読み込み、前処理を行い、データの分割を行います。その後、モデルの訓練と評価を行います。
Finished working
Show work
データをトレーニングセットとテストセットに正常に分割しました。トレーニングセットには394のサンプルがあり、テストセットには170のサンプルがあります。
次に、勾配ブースティング回帰モデルとランダムフォレスト回帰モデルをトレーニングデータにフィットさせ、その後、両モデルのテストデータに対するRMSEを計算します。
Finished working
Show work
勾配ブースティング回帰モデルとランダムフォレスト回帰モデルのテストデータに対するRMSEは以下の通りです:
勾配ブースティング回帰モデルのRMSE: 116,323.18
ランダムフォレスト回帰モデルのRMSE: 102,831.25
ランダムフォレスト回帰モデルの方が若干性能が高く、テストデータに対する予測誤差が小さいことが確認できます。
これに基づいて、ランダムフォレストがこのデータセットにおいてはより適したモデルである可能性が高いです。
何か他に質問やリクエストがありますか?
モデルの予測は実行することができました。RMSEの値はNoteableで予測した結果と異なっています
Code Interpreterでも、データセットのファイルをアップロードすることで、データの分析を行うことができます。しかし、現在は実行できる処理が制限されているため、データの分析についてはNoteableプラグインの方が有効であると考えられます。Code Interpreterについては、今後のChatGPTのアップデートに期待です。
まとめ
今回PROMPTYでは、ChatGPTプラグイン「Noteable」の概要を解説し、実際に都道府県別のデータセットを読み込んでデータの分析を行いました。
また、Code Interpreterでも同様の分析を試みて、ChatGPTの出力結果を比較しました。
皆さまも今回の例を参考にして、ChatGPTを使ったデータの分析に挑戦してみてはいかがでしょうか。