ChatGPTプラグイン「Notable」だけでデータ分析コンペに挑戦してみた話

ChatGPTプラグインの「Noteable」を使って、データ分析コンペに挑戦してみたところ、想像以上の結果を出してくれたので共有します。

今回は人間は簡単な指示を出すだけで、ほとんど全てをChatGPTに任せる方針で行なっています。

こちらの記事のように上位6.5％に入りました！という華やかな結果にはなりませんでしたが、予想以上の結果にはなったのでぜひ最後まで読んでみてください！！

https://zenn.dev/seiyakitazume/articles/bc11bbd020cdfe

データサイエンティストがChatGPTを活用するための記事をまとめているので、こちらもぜひ参考にしてみてください。

https://qiita.com/ot12/items/1443ca0aef6983ec2d12


## ChatGPTプラグインとは
ChatGPTプラグインは、ChatGPTをサードパーティのアプリケーションと連携させるツールです。

これは、GoogleスプレッドシートのアドオンやGoogle Chromeの拡張機能と同様に、公式だけでなく第三者の開発者が作成した機能をChatGPTに追加することで機能を拡充できるものとなっています。

具体的には、プラグインを利用することで、ChatGPTに以下のような機能を追加できるようになります。

- リアルタイムの情報を取得：スポーツのスコアや株価、最新のニュースなどを確認
- ナレッジベースの情報を取得：企業の文書や個人のメモなどを閲覧
- ユーザーの代わりにアクションを実行：フライトの予約や食事の注文などを行う

また、複数のプラグインを有効にしておくと、プロンプトに応じて複数のプラグインを組み合わせて使ってくれます。

:::note warn
注意
- プラグインはChatGPT Plus（有料版）ユーザーのみ利用可能です
- プラグインは順次公開されているので、ChatGPT Plus（有料版）ユーザーでもまだ利用できない可能性があります。
:::

## ChatGPTプラグイン「Noteable」とは

![スクリーンショット 2023-05-25 17.09.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/6e6265fe-e9e0-3921-f109-6897a7c17324.png)

「Noteable」はノートブック形式で、Python、SQL、Markdownを使用してデータを分析したり、可視化ができるプラグインです。

簡単な指示を出すだけで分析や可視化を行ってくれるためデータ分析の専門家でなくても複雑なデータ分析が可能になる優れものです。

ちなみに近いうちにChatGPT上でPythonを使ったコードの実行や、ファイルのアップロード・ダウンロードができるようになるChatGPTの公式プラグイン「Code Interpreter」というのが公開になるそうです。

こちらのプラグインを使うとより簡単により複雑な分析をChatGPT上でやれるようになるみたいです。

詳細は以下のページにまとめたので、こちらも参考にしてみてください。

https://generativeinfo365.com/?p=192


## 今回、挑戦するコンペ

今回は、この「Noteable」を使って『Probspaceの給与推定コンペ』に取り組んでみました。

コンペ自体ははすでに終了していますが、勤続年数や最終学歴などから給与を指定するというシンプルな問題で、データもわかりやすいので今回はこのコンペを選びました。

https://comp.probspace.com/competitions/salary-prediction

## 実践
それではここから実際に、ChatGPTプラグイン「Noteable」でデータ分析をした流れを説明していきます

### データの読み込み~基礎集計

![スクリーンショット 2023-05-25 15.48.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/ee3cfc43-7c0b-cb1c-42ed-4e1145603aa8.png)
まず最初にデータの読み込みと、各変数と目的変数（給与）の相関分析と可視化をお願いしてみました!

データのURLを伝えるだけで、良い感じにデータを読み込んでくれるので、汎用性があり非常に便利です。
![スクリーンショット 2023-05-25 15.50.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/92e38db8-fce9-a86a-5ed0-d1811e16d850.png)
ちゃんとデータが読み込めていますね。
![スクリーンショット 2023-05-25 15.51.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/eb83ba90-2c3b-114d-1524-d838c5733bbd.png)
変数と目的変数（給与）の相関係数もしっかりと計算してくれ、どの変数が相関が高いor低いまで教えてくれます。

![FireShot Capture 017 - Salary Analysis & Visualization - chat.openai.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/fc3c0229-c757-d7f2-d11b-aeefe2a765eb.png)
しっかりと見やすく可視化もしてくれています。

最初の簡単な指示だけで、データの読み込み,相関分析、可視化まで行ってくれていますね。

### クラスタリング
次にクラスタリングをお願いしてみました

![FireShot Capture 017 - Salary Analysis & Visualization - chat.openai.comのコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/d42ebd7b-372c-2b03-5142-ac470f85d544.png)
たった1行の命令でしたが、しっかりクラスタリングしてくれて、各クラスタの特徴まで解説してくれています。

![スクリーンショット 2023-05-25 16.21.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/a70e02f0-efd6-5715-373d-119f4a7760bb.png)
見やすいように可視化してもらいました。

ちゃんと綺麗に分かれていますね！


### 予測モデル作成（MAE：55.69）
とりあえずこの時点で予測モデルを作ってもらいます。
評価関数がMAEということなので、MAEも出してもらいます。

![スクリーンショット 2023-05-25 16.26.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/73af831a-6d95-d547-6434-8bd009300ad6.png)
MAEが55.69と精度はあまりよろしくないですが、「予測モデル作って」のお願いだけで、予測モデルを作ってくれて、評価までしてくれるなんて驚きです。

ただ、このコンペのベストスコアは「19.758」なので、まだ精度改善の余地は大いにありますね！
![スクリーンショット 2023-05-25 16.27.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/13745efd-900c-8291-0a94-0a5852dfa4b0.png)
ちなみに裏ではこんな感じにChatGPTがコードを書いてくれています。

### 精度改善①（MAE：35.88）

次は精度改善をしてもらいます。

何回も「Used Noteable」と出ているのは、エラーが出た際にエラーの原因を特定して、書き直して実行してを繰り返しているからです。

エラーの頻度は少なくないですが、自分でエラー原因を特定して動くようになるまで自走してちゃんと結果を出してくれるので優秀です。

![スクリーンショット 2023-05-25 16.31.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/5cdab4b8-345a-f506-d239-d28f4ee58a03.png)
特徴量追加により、MAEが**55.69→35.88**になりました。

ベストスコアと比べると、まだまだですがちゃんと自ら特徴量を追加して精度改善できていますね。

### 精度改善②（MAE：23.82）
せっかく最初に出した相関の結果やクラスタリングを使っていなかったので、それらを特徴量に入れてもらいます。

またモデルも単純な線形回帰しか使っていなかったので、他に良いモデルがないか検討してもらいます。

![FireShot Capture 018 - Salary Analysis & Visualization - chat.openai.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356814/3109596c-52c6-89ea-9d91-3f2ede22fed6.png)
要望通り、クラスタリングラベルを特徴量に入れてくれました。

またモデルもランダムフォレストの使用に切り替えています。

これにより、さらに精度が上がり、MAEが**35.88→23.82**になりました。

今回出しているのは、あくまでもtrainデータでのMAEですが、リーダーボードのランキングで見ると真ん中くらいの精度なので、悪くはない位置まで来ています。

ここからさらに特徴量エンジニアリングしたり、モデルの変更を検討したり、アンサンブル学習したりとやれることはたくさんありますが、今回は一旦ここまでとします。

## まとめ

ChatGPTプラグイン「Noteable」を使うことにより、簡単な指示だけでほぼ全自動で以下の結果が得られました。

- 相関分析＆可視化
- 予測モデルの作成
- 予測モデルの改善（MAE：55.69→23.82）

trainデータのMAEなので、あくまでも参考程度ですが、リーダーボード（ランキング）を見ると101位/237位で真ん中よりちょい上くらいです。

本当に簡単な指示のみでやって、さらに改善の余地がまだまだある中でこの結果は個人的には悪くないと思います。

まだデータサイエンティストの仕事が奪われるとは思いませんが、良い感じに活用することでデータ分析の仕事をかなり効率化することはできそうですね！

また、今回はデータ分析のみに使いましたが、簡単なアプリ作成やスクレイピングコードの作成などもサクッとやってもらえそうです。

皆さんもぜひChatGPTプラグイン「Notable」を使って、色々と遊んでみてください！！！!

最後に宣伝です！

データサイエンティストのために、CahtGPTをはじめとした生成AIを使ってデータ分析を効率化する情報をまとめたサイトを運営しています！

生成AI×データ分析に興味がある人はぜひこちらも覗いてもらえると嬉しいです！！

https://generativeinfo365.com/