ChatGPTのCode Interpreterで予測モデルを作る〜プロンプトでKaggleのSubmitまでやってみた〜
ChatGPTのCode Interpreterという機能をご存知ですか?
文章で命令を書くと、グラフ作成や予測モデルなどデータ分析をしてくれます。
今回は、Code Interpreterで、どんなことができるかを確かめるために、KaggleのHouse Prices - Advanced Regression Techniquesに挑戦してみたいと思います。
データを読み込む
GPT-4のメニューから「Code Interpreter」を選択し、「+」マークをクリックして読み込みたいデータを選択します。
続いて、「このデータを読み込んで、最初の5行を表示してください。」と命令します。すると・・・
データが読み込まれていますね。しかも、わざわざ親切に「NaNはデータが欠けていることを示しています」と教えてくれます。
データを可視化する
続いて、読み込んだデータを可視化します。
かなり漠然としていますが、「探索的データ分析を実施してください。」と命令してみましょう。
すると・・・
ヒストグラムが表示されます。
他にも相関行列のヒートマップが表示されます。
そして、わざわざ丁寧に解説までしてくれます。
さらに、全ての列の分布を確認するため、連続数値はヒストグラム、カテゴリ変数は棒グラフを描いてもらいましょう。
全ての列のグラフを掲載するのは割愛しますが、実際にヒストグラムや棒グラフを描いてくれます。
予測モデルを作ってみる
では、SalesPriceを被説明変数(目的変数)、それ以外の(厳密にはID以外の)列を特徴量にして、予測モデルを作ってみましょう。
具体的には、以下のような、命令を書いてみました。
すると、計算リソースが足りないと言われてしまいました。
そこで、欲張らずに、ひとつずつ試してみることにしましょう。
まず、Ridge回帰をやってもらいます。
この命令では、クロスバリデーションのFold数を指定をしなかったので、大丈夫かなと思ったのですが、生成されたコードを確認したところ、前の命令で指定したFold数(=3)で実行されてました。
では、続いて、ランダムフォレストを試してみましょう。
無事に動きました。Ridge回帰よりも精度が良いことを教えてくれています。
特徴量の重要度
学習したランダムフォレストで、特徴量の重要度を調べるため、「どの特徴量の寄与度が高いか、feature importanceをグラフにして教えてください。」と命令したところ、エラーが発生してしまいました。
しかし、そのエラーを修正すべく、勝手にコードの修正を試みてくれます。粘り強い!
この後、3回ほどトライ&エラーを繰り返して、最終的には、連続数値だけ使って、特徴量の重要度を可視化してくれました(ただ、途中でエラーが何度も出ているので、意図した結果であるかは不安です・・・)。
テストデータを使って予測値を計算
では、最後にKaggleにsubmitするのに、テストデータを使って予測値を計算してみましょう。
作成したCSVファイルをKaggleにsubmitしたところ、ちゃんとスコアと順位が出ました。
もっと曖昧で雑な命令でやってみる
ここまで、データサイエンスの専門用語を命令に入れながら、進めてみました。
別のセッションを用意して、もっと雑な命令で試してみます。
すると、途中でエラーが出ながらも、ランダムフォレストで予測モデルを作ることができました。
試した感触でいうと、専門用語が理解がなかったり、具体的な処理がわからなくても、予測モデルを作ること自体はできそうです。
感想:Code Interpreterによって、データ分析はどう変わるのだろう?
ここで改めて、データ分析とは何かを言語化しておきましょう。
データ分析とは、ビジネスにおける問題を見つけ、その問題をより深く理解したり、適切な課題設定を行ったりする際にデータを使います。そして、課題解決でもデータを使います。これら全てが、データ分析の営みです。
この営み全体においては、グラフを描いたり、予測モデルを作ったりすることはごく一部の作業にすぎません。しかし、その作業に多くの時間が取られているのも事実です。
その点で、データ分析者が、専門用語を理解しており、かつ明確に「何をするのか」をイメージできている場合、データ分析における「作業」は楽になると感じるケースは多いでしょう。
また、データ分析初学者の方であれば、これまではPythonやRといったプログラミング言語を使って、データ可視化や集計、モデリングといったデータ分析の作業を行うことが多かったわけですが、慣れないうちはエラーや、オプションの使い方に戸惑うわけです。そのような時に、Code Interpreterでやりたいことを文章で書いて実行できれば、学習の敷居も下がるでしょう。
その一方、「文章」という曖昧さが残る「命令」が、具体的かつ論理的なデータ分析作業に意図したとおり「翻訳」されているかは不安を感じないわけではありません。特に、データ分析は、前工程が後工程に影響するわけで、コードが動いたからといって意図していない処理になっていたら困ります。そのため、生成されるコードを読んで、意図通りの動きになっているかは確認したくなります。
データサイエンティストの仕事はどのように変わるのだろう?
Chat GPTのCode Interpreterのように、データ分析作業の生産性を上げるツールは今後も発展していくのではないかと思いますが、その時に、データアナリスト、データサイエンティストの役割はどのように変化するのでしょうか?
様々な意見や仮説があると思いますが、ここでは2つの仮説を提示したいと思います。
仮説1: データサイエンティストは、データビジネスを生み出すビジネスプロデューサーの役割へと変化する
これまでデータクレンジングやモデリングのために割いていた時間を大幅に削減できるため、空いた時間でデータビジネスを立ち上げるビジネスプロデューサー的な役割へと変化する。
仮説2: データサイエンティストは、ビジネストランスレーターと同化する
ビジネス側とデータサイエンス側の橋渡し人材を「ビジネストランスレーター」と言い、ビジネストランスレーターはたとえ自分自身でデータ分析作業ができなくても、分析アプローチの青写真を描き、その作業をデータサイエンティストに依頼することができればよかったわけです。しかし、Code Interpreterのようなツールがあれば、コードが苦手なビジネストランスレーターでも、それなりの分析作業を進められるようになります。つまり、データサイエンティストと、ビジネストランスレーターの線引きはこれまで以上に曖昧になると考えられます。その結果、高度なアルゴリズムを開発するなどリサーチに近い部分を「データサイエンティスト」と呼び、それ以外は「ビジネストランスレーター」もしくは、初級的なデータサイエンススキルは一般スキルとなり、わざわざ役割として定義されなくなるかもしれません。
未来は誰にもわかりませんが、新しい技術に触れ、将来に対する仮説を立てていくことは重要です。皆さんの仮説づくりの参考になれば幸いです。
データサイエンスに興味を持ったら・・・
データミックスは、ビジネスパーソン向けのデータサイエンススクールを開催しています。「ビジネスで活かせる実践的なデータサイエンスを学んでみたい」と思ったら、ぜひスクールの説明会にお越しください。