見出し画像

生成AIで一般大学生がデータサイエンティストになる方法

お久しぶりです。

さわかみ投信さんのコラムで書いた記事がプチばずりしていて嬉しい反面、自分のアカウントじゃないもやもや感。と言うわけでその記事にあやかって追加記事を書くことにしました。

その名も、

「生成AIで一般大学生がデータサイエンティストになる方法」

です。

実際に、私がデータサイエンスの業務委託や研究活動でどのように生成AIを活用しているかをご紹介できたらと思います。実践編です。

ただ、一般大学生とは書きましたが生成AIに分析全投げを考えている大学生は対象としておりません。

ある程度excelやpythonで分析できる人向けの、その力を最大化する方法のご紹介です。


ドメイン知識を得る

お仕事でも研究でも重要なのは、分析対象のドメイン知識を得ること。

ドメイン知識を得ずして良いデータ分析はできません。なぜなら…

①分析の起点づくり
②分析結果の解釈
③改善案の提案

このいずれのステップでもドメイン知識が必要になるからです。分析結果と実際に求められていることのギャップを埋めるための作業ですね。

ドメイン知識を得る際のポイントは、「漏れなく、誤りなく、簡潔に」だと思っています。

特に「簡潔に」がポイントで、ドメイン知識を得すぎるとそれに思考が固定されてしまい、第三者目線だからこそのインサイトが浮かばなくなってしまうからです。


しかし、ドメイン知識習得は時間がかかるのも事実。そこで生成AIを使うのです。

使うのは、Deep Research

ChatGPTにもGeminiにも、大抵のLLMに機能として備わっています。

ワンポイントアドバイスは、まずDeep Research用のプロンプトを生成させ、そのプロンプトでDeep Researchすること。

調べたいドメイン知識についてできるだけ詳しく書き、最後に

「これらを検索するためのDeep Researchのプロンプトを生成してください。」

と添えるだけ。

あとは生成されたプロンプトを張り付けてDeep Researchしましょう。


ドメイン知識以外にも、先行研究を辿るのにも使えます。

先行研究をDeep Researchさせるときのポイントは、「歴史をまとめさせる」こと。これもプロンプトの最初か最後に言うだけでオッケー。

そうすることで、時系列順に並べて検索してくれるので、漏れが低減します。何より、学問は歴史を積み重ねて進化させていくので、新たなインサイトを得られる可能性が高くなります!



簡易ダッシュボードの作成

分析結果の可視化方法って色々ありますよね。グラフとかレポートとか。

ただ、せっかくデータとモデルがあるなら、動的に確認できた方が相手にも伝わりやすいし、何より興味を持ってもらいやすくなりますよね。

てなわけで、分析結果をまとめた簡易ダッシュボードを作れれば、可視化方法として1つランクアップできるのです。

上がSDGs達成度評価ダッシュボード、下が埋め込みベクトルを比較できる可視化アプリです。いずれもstreamlitで作りました。


速攻でダッシュボードウェブアプリを作れちゃうライブラリとして、streamlitとかDashとかあります。

とは言えいくら簡単だったとしても、簡易的な可視化のためにこれらのライブラリをごちょごちょするのは正直めんどくさい。

そんな時こそ、生成AIの出番でございます。


ウェブアプリ作成は、やっぱりClaude Code一強なような気もしますが、API呼び出しを頻繁にできる資金力のない大学生はOpenAIのCodex CLIでも十分です。簡易的なダッシュボードならなおさら。

Codex CLIの嬉しいところは、ChatGPTの有料プランを契約しているなら、実行回数限界付きではあるものの追加料金いらずに使えるところ。

私はWindowsユーザーなので、wsl上にnpmでcodexを用意してあげて使ってます。マジ便利。

可視化の手段としてダッシュボードが悠々と候補に挙がってきます。


ただ注意点として、過剰なダッシュボードは無意味だということ。

動的な要素が少ない、逆に動的な要素が多すぎるダッシュボードは、こちらの意図することを伝えられない可能性があるので。

ダッシュボードでの可視化を選択する際は、そうで無いといけない理由をしっかりと用意した上で作ることをお勧めします。



頼れるPM化のためのプロンプトテクニック

生成AIの正しい使い方のような気もしますが、最終的には優秀な壁打ち相手だということに帰着すると思います。

ただ、世の中には色んなハウツーが転がっていると思うので、私の使い方をご紹介しておきます。


必ずロールを指定する

分析モデルについて質問するときは、

「あなたはシニアデータサイエンティストです。」

分析方針や結果解釈について質問するときは、

「あなたは〇〇分野に精通したデータサイエンティストです。」

をプロンプトの冒頭に付けてあげるだけで質が変わります。ほんとに。LLMはコンテキスゲーなので、どれだけ自分の脳内のコンテキストをプロンプトで同期させられるかが勝負なのです。


事実と推論を分けさせる

検索した外部資料に基づく事実なのか、LLM自身の推論なのかをはっきりさせるために、

「必ず事実と推論を明確に分けてください。事実に基づく場合は必ず参照元のリンクを添え、推論に基づく場合はそのことを必ず明記しなさい。」

のようなプロンプトを添えてあげます。ポイントは「必ず」を口酸っぱく言うこと。Attentionに如何に必ずを拾わせるかが大事なので。


既存手法と比較してメリットデメリットを整理して

新たな方法論を提案したくなる時がありますよね。

そんな時は、

①何を解決するための
②どのような手法で
③どんな分析結果が得られたか

を書いたうえで、

「この手法は既に提案されていますか。提案されている場合はその文献を必ず参照元のリンクを添えて教えてください。まだ無い場合は類似手法を検索してなぜ提案されていないかを課題を整理したうえでまとめてください。」

のようなプロンプトを与えることで、既存手法との比較調査を行ってくれます。

そして、ここまでのコンテキストを踏まえた上で、

「提案手法と既存手法のメリットとデメリットを必ず事実に基づいてまとめてください。」

としてあげると、うまいことまとめてくれます。これ便利。


ベースコードを生成して

生成AIさんはおせっかいなので、ヒートマップ作ってと言っただけなのに、いらんところまで凝ったpythonコードが返ってくることがあります。

そういう時に便利なのが、

「ipynbでのベースコードを生成して。」

の1文。最初か最後に追加してあげるだけで、必要最低限だけのコードを生成してくれます。何気にストレスフリーで便利。



ざっとこんな感じでしょうか。日ごろのデータサイエンスはこんな感じのことを生成AIとやってます。

冒頭の記事でも述べた通り、生成AIは0を1にするのがすこぶる下手です。あと、ドメイン知識を踏まえた上でデータ分析ができるほどのコンテキストウインドウをお持ちでないようです。

なので、今のところはまだ人の頭が必要とされる職業だと思います。逆に言えば、頭を使って習得できる最後のチャンスかもしれません。

生成AIにはできない、良いデータ分析ライフを。


P.S.

東京のとあるデータサイエンスの会社にお呼ばれして色々お話をしてきました。データサイエンスモチベが上がって嬉しかったです。サムネイルの写真はそのときの自由時間に東京タワーから見た景色です。きれかったです。


いいなと思ったら応援しよう!

たぬぽん┃衣川凌太 世界大会へ行くための足しにさせていただきます! ご支援よろしくお願いします🙇

ピックアップされています

日記

  • 98本

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
データサイエンティストになりたい神大生。 探究活動で培った学びを元にパワーアップ途中です💪
生成AIで一般大学生がデータサイエンティストになる方法|たぬぽん┃衣川凌太
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1