生成AIの発展によって、プログラミングやデータサイエンス分野は目覚ましい発展を遂げ、コーディング支援などでAIが日常の業務フローの中に入ってくるのも当たり前になった。
そんな中、非エンジニアの文系社会人は、せいぜいChatGPTにメール文を考えさせたり、Excel関数を聞いたりするくらいで、大した生産性の変化もなく、時代に取り残されたような感覚を持っているかもしれない。
(あるいは、そんな社会の大きな変化にすら、まだ気付いていないだろう。)
大学で文系学部を選んでしまうと、高校時代以降は、数学、統計、プログラミングに触れる機会が全くないのが日本の現実だ。
「プログラミングは自分には難しそう。」
「統計学や機械学習、AIの技術的なことは何も分からない。」
「なんか数学の知識が必要そう。微積分どころか、ルートや因数分解すら、何も記憶が残っていない。」
ChatGPTをはじめとするAIサービスが話題になる中で、プログラミングやAI、統計に興味を持った人も多いのではないかと思うが、多くの人は、上記のような理由を挙げて、勉強にチャレンジするのを尻込みしているのではないだろうか。
筆者も、6〜7年ほど前まで、そんな典型的な文系人材の一人だった。
しかし、仕事上の必要に駆られて一念発起し、2年ほどかけ中学・高校数学から始めて大学数学をコツコツ勉強して統計検定を取得し、ついには数理統計や機械学習を専攻して、アメリカの大学院を卒業するまでに至った。
統計やプログラミングの知識が切り開いてくれた自分の人生の選択肢や可能性は、本当に無限大だ。
せっかく統計学やプログラミング、AI技術に興味を持ったのに、解説記事や書籍に載っている基礎的なコードや数式も理解できず、勉強や夢を諦めることになっては、あまりにも勿体無い。
そこで、筆者自身の経験に基づいて、プログラミング、数学・統計に入門するための究極の参考書・学習教材リストを作ってみた。
いわば、AI時代に文系人材が置いていかれないための基礎知識・基礎技術を集めたメガチュートリアルだ。
- GPT-4, Claude 3などの流行のAI技術を楽しむのに必要十分な基本的なプログラミング力を身につける
- 「数学の記憶ほぼゼロ」の状態でスタートして、高校数学を一気に復習し、大学数学の基礎を“それなりに”学ぶ
- AIやデータサイエンスの理解の礎となる統計学・機械学習の基礎知識を学ぶ
この記事では、初期の成長スピードが早く学習の手応えも大きいであろうプログラミングの教材から紹介を始め、その後、真面目に基礎体力をつけるための数学と統計学・機械学習のコツコツ勉強という順番で紹介していく。
プログラミングは、この記事で紹介する書籍を読んだだけでも、その後自分でどんどん実践してみれば、かなり実用的なレベルに達することができるだろう。
数学・統計学に関しては、この記事で紹介する参考書をやり切れば、あっさり「統計検定2級」に合格できるレベルに達することを想定している。
プログラミングに興味が出てきた学生や社会人、数学に頭を悩ませている文系社会人、大学生になってからコンピューターサイセンスや統計などの計量的学問に興味を持ってしまった文系諸兄に、最適な構成になっているはずだ。
文系社会人のためのプログラミング入門ガイド
ここでは、プログラミングの知識が全くない初心者を念頭に、プログラミングに入門するための参考書の選び方や、プログラミング言語の選び方について解説していく。
ここで紹介する基本的な知識を学ぶだけでも、GPT-4やClaude 3などのLLMを自分の勉強や仕事に活かすためのミニアプリを自分で作ったり、Llama 3などのオープンソースの大規模言語モデルを自分のPCで自力で動かしたり、Excelで行うデータ分析をサクッと自動化したり、 かなりの生産性向上効果が得られるはずだ。
もし勉強している途中で悩むことがあっても、現在ではChatGPTにそのコードについて質問をすれば、直ちに答えが得られるので、歴史上最もコーディング・プログラミングを学ぶのが楽な時代と言ってもいいだろう。このチャンスを活かさない手はない。
AIの登場でプログラマーは不要になる?
学習方法を紹介する前に、最近言われるようになった、AIによってプログラマーの仕事がなくなる等々の、学習のモチベーションを削ぐような言説に触れておきたい。
コーディングを支援するAIツール(Github Copilot, Cursorなど)の登場と発展によって、エンジニアやプログラマーが不要な世界が来る、というようなメディアの記事も溢れている。
しかし、AI技術の発展は、全く逆の効果をもたらすと筆者は考えている。
コーディングができる者の生産性がひたすら上がる一方で、コーディングができない者が圧倒的に不利になっていき、エンジニアやプログラマー以外の人間がむしろ駆逐されるという未来だ。
コーディングを支援するAIツールが発展したことによって、たとえ基本的なプログラミングの文法しか知らない初心者であっても、AIのサポートを受ければ、非常に高度なアプリケーションを自力で作ることができるようになった。
また、技術の発展スピードが凄まじく速いので、OpenAI, Anthropic, Meta, Microsoft, Googleなどの大手ITはもちろん、個人やスタートアップも、次々と新しいAIモデルやオープンソースツールを公開してくる。
いまだにChatGPTの無料版のGPT-3.5しか使っていないユーザーは、ChatGPTの登場からたった数年で、もはや化石のような存在になっている。
プログラミングの基礎知識を身につけ、リリースされたばかりのAIモデルやプログラムを自力で実装できる力こそが、個人の生産性の高低や、企業の業績の決定的な分水嶺になり得るのではないだろうか。
ここで一つ、ポール・グレアムが生成AIの発展とプログラミングを学ぶ価値についてツイートしたものを紹介したい。
ポール・グレアムは、プログラマー・起業家として知られ、世界初のSaaS企業を立ち上げYahooに売却した、スタートアップ界のレジェンドだ。Airbnb、Dropbox、Stripe、Redditなどの有名企業を輩出したY Combinatorの設立者でもある。
たとえAIが人間のプログラマーを不要にしても、その台頭に適応する最良の方法は、コーディングを学ぶことだ。AIもソフトウェアでできているのだから。
プログラミング言語は「Python」が無難
プログラミングを学習するにあたって、初心者を悩ませるポイントの一つが、プログラミング言語の選択だ。
プログラミング言語は、それぞれ少しずつ異なる文法を持っており、またそれぞれ異なる作業やタスクに最適化されている。
唯一の正解というものはないが、大規模言語モデルなどのAIで遊んだり、データ分析などをする限りにおいては、基本的にはPythonが最もおすすめできる言語だと思う。
AIやデータ分析以外にも使うつもりだよ、という人でも、Pythonはほぼほぼ何にでも使えるので、最初に学ぶ言語として十分お勧めできる。
理由は何より、ネット上で入手できるドキュメントが充実しているためだ。
主要な大規模言語モデルのAPIのドキュメントなどを見ても、Pythonでの実装例が載っていることが多い。また、研究者が最新のオープンソースモデルやプログラムを公開するときにも、ドキュメントがPythonで用意されていることが多い。
また、ユーザー数が多いため、ネット上で同じ悩みを質問している先駆者が多数おり、自分が突き当たった問題を、ちょっと調べるだけで解決できる可能性が高い。
ドキュメントや解説が充実していることは、初心者にとっては非常に重要だ。
何かわからないことがあったときに、Google検索だけで必要な情報が手に入るので、それだけでもPythonを学習言語として選ぶ大きな理由になる。
また、プログラミング言語は基本的な機能や構造がかなり似通っているため、一つの言語を習得すると、次の新しい言語を勉強するのは結構簡単だ。
まずは最初のとっかかりとして、初心者の学習しやすさを重視して、Pythonを選ぶのが良いだろう。
ほぼこれ1冊でOK!Pythonの学習に最適な参考書
Pythonを学習することを決めたら、あとは何を使って勉強するかを決めるだけだ。
筆者のおすすめは、北米で50万部を超えるベストセラーとなっているPythonの入門書『Python Crash Course』の日本語翻訳版『最短距離でゼロからしっかり学ぶ Python入門』だ。
筆者自身、この本の英語版を、Pythonを初めて勉強したときに使用した。
プログラミングのプの字も分からない状態で読破できたので、初心者にとってのハードルの低さは実証済みだ。
解説が網羅的でありながら、とても分かりやすく、 何度も何度も読み返しながら、 中級者になっても立ち返ることのある本だ。
『最短距離でゼロからしっかり学ぶ Python入門』は、必修編と実践編の2分冊となっている。
「必修編」を一通り読むだけで、ループ、条件、関数などのプログラミングの文法の基本は全て押さえられる。
さらに「実践編」に進むと、必修編で学んだPythonの知識を使ってゲームを作ったり、データを可視化したり、Webサイトを作ったり、実際に将来使いそうな実用的な課題が用意されており、知識の定着も図れる。
プログラミングの学習にあたっては、何より本を読むだけではなく、実際に手を動かしながらコードを書くことが大事だ。
必修編の章末にある練習問題を実際に解く事はもちろんのこと、実践編に載っているプロジェクトも、自分のPC上で再現することを強くお勧めする。
環境構築が面倒な人は、無料のGoogle Colabを使おう
Pythonを初心者が初めて学習するときの最も高いハードルは、本を買ったり新しい知識を理解することよりも、自分のパソコン上でPythonを実行できるようにするための環境構築かもしれない。
環境構築の仕方は、例えばMacなのかWindowsなのか、自分のPCなのか社用のPCなのか、人それぞれの状況に大きく左右されるので、これを読んでおけば大丈夫と言う絶対的な入門がない。
環境が構築できないと教科書に書いてあるコードを全然実行できないし、最初のステップの前段階でつまずくのは避けたい。
そこでぜひ初心者に使って欲しいのが、誰でも無料で使えて、GPUにもアクセスでき、環境構築不要でPCでもiPadでもiPhoneでも利用可能なPython環境である「Google Colaboratory」だ。
ブラウザでColaboratoryの「ようこそ」ページに飛べば、すぐに利用できる。
Google Coalbは、Jupyterノートブックと呼ばれる、テキストとPythonコードの実行セルを組み合わせたファイルを、Googleドライブとブラウザ上で実行・編集することのできるツールだ。
『最短距離でゼロからしっかり学ぶ Python入門』の「必修編」で紹介されているコードや練習問題は、Google Colab上でも基本的に解くことができるはずだ。
「実践編」になると、自分のPC上にプログラムを入れないと再現が難しいが、「必修編」でPythonの基礎知識を身につける段階では、Google Colabで十分だ。
本を読んだら、世にあるライブラリとAPIを使ってみる
Pythonは、最初から備わっている機能に加えて、モジュールという形でインターネット上に公開されている様々な機能をインポートして、Pythonの中で使うことができる。
例えば、pandas
はデータ解析でよく使うライブラリ、BeautifulSoup
はWebサイトの情報を自動でスクレイピングするライブラリ、openai
はOpenAIが開発するGPT-4などのLLMを使用するためのライブラリだ。
こうした野良のライブラリは、使い方が全ての教科書に載っているわけではないので、必要になった時に、その都度自分でネットを調べ、ドキュメント(Doc)と呼ばれる公式の説明書を読んで、使い方を学ぶ必要がある。
もちろん、Pythonの基本的な知識があれば、これらのドキュメントを読むのはそれほど難しくはないが、入門書を終えたばかりの初心者にとっては、少しハードルが高く感じるかもしれない。
まずはひとつ、興味があるライブラリ・モジュールを使ってみて、慣れることをおすすめする。
ドキュメントを読むことに抵抗感がなくなったら、Python入門書を一冊読んだだけでも、ありとあらゆるPythonプログラムが書けるようになったと言っても過言ではない。
例えば、当サイトで解説しているOpenAIのAPIキーの作り方を参考に、GPT-4などのOpenAIが開発する最新のAIを使うためのAPIキーを入手して、openai
ライブラリを使ってみてはどうだろうか。
OpenAIのAPIのドキュメントで、クイックスタートガイドを見ると、openai
モジュールのインストール方法と、GPT-3.5に質問をするためのコード例が載っている。
こんなにシンプルなコードで、AIに質問を投げかけることが可能だ。
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "あなたは優秀なアシスタントです。"},
{"role": "user", "content": "こんにちは!"}
]
)
print(completion.choices[0].message)
『最短距離でゼロからしっかり学ぶ Python入門』を読み終えていれば、このコードの意味も分かるようになっているはず。
また、当サイトでは上述のGoogle ColabにOpenAIの各種AIモデルを実装したノートブックも公開しているので、それを眺めることでも使い方のヒントになるだろう。
AIによるコーディング支援も体験してみよう
つい2〜3年前は考えられなかったことだが、今日ではコーディングを支援するAIの急速な発展によって、自分が書いているコードの次をAIが予測して勝手にコードを生成してくれたり、実装したい機能やウェブサイトの構造を言葉で伝えると、AIがそれをコードに落とし込んでくれるという夢のようなツールがある。
当サイトでも、OpenAIの開発するGPT-4や、Anthropicの開発するClaude 3 Opusなどの最新の強力なLLMを内蔵し、コーディングを支援してくれるテキストエディタの「Cursor」を紹介している。
こうしたツールのおかげで、プログラミングの基礎を勉強しただけで、AIのサポートを受けつつ、非常に複雑なアプリやウェブサイトを個人が開発することも現実的になっている。
また、プログラミングを勉強しているときに、何かわからないことがあっても、どこが間違っているかをAIに聞くなどして、直ちに悩みや質問を解消することもできるようになった。
AIを使うと自分でコードを書かなくなってしまうようにも思えるが、一方で、無限に質問に答えてくれる家庭教師がいるようなものなので、学習効率が非常に高まるという大きなメリットがある。
今日、プログラミングの勉強をすることは、いまだかつてないほど簡単になっていると言っていいだろう。
文系社会人のための数学入門ガイド
プログラミングが得意な人というと、数学がものすごくできる優秀な人を想像する人も多いのではないだろうか。
プログラミングの学習には数学の知識があるに越したことはないだろうが、日々のルーティン作業を自動化したり、ちょっとしたアプリを構築する程度のビジネスユーザーの場合には、高校や大学の数学の知識を要する場面は無いだろう。
上記で紹介したプログラミングの基礎知識を学ぶだけでも、文系社会人の中では十分にアドバンテージが取れると思う。
AtCoderのような競技プログラミングの世界で技術を磨きたいとか、エンジニアとして働いていきたいといった場合には、もっと数学やアルゴリズムの知識が必要になるかもしれない。
ただ、そうしたCS系の道に進みたいガチ勢は、本記事ではオーバースペックだ。
ここでは、あくまで文系社会人が、最新のAIやコーディングを自分の業務に活かし、また問題解決のために何でもかんでもコンサルの言いなりにならずに済むための基礎体力を築くことを目的としている。
高校・大学数学は仕事のスキルに必ずしも直結しないが、この後の統計学の学習においては必須の前提になることから、高校〜大学初級レベルの数学を身につけるための参考書を紹介する。
統計学に必要な数学の分野を大きく言えば、微分積分と線形代数が代表だ。
せっかくプログラミングの世界に入門したら、数学・統計の基礎知識を武器に、Pythonで統計やデータサイエンスのライブラリを活用したり、機械学習や生成AIの仕組みを正しく理解した上で的確に業務に応用したり、さらなる高みを目指してみよう。
「文系でも分かる!」系の本は1回読んだら次に行こう
高校で数学におさらばできたかと思いきや、社会人になってなお、数学の知識が必要になるシーンが意外とある。
経営分析からマーケティングまで、ビジネスシーンでは統計や数学の用語が想像以上に飛び交っている。
ビジネス書や雑誌の中には、こうした数学に課題意識のある社会人向けに、微分積分の特集が組まれたり、「猿でも分かる統計学〜」的なコンテンツがあふれている。
これらが興味を持つためのイントロダクションとしては優れているのは間違いない。
しかし、薄っぺらなコンテンツを繰り返し読み込んでみても、あまり得るものはないので、そうした書籍に時間をかけ過ぎてはいけない。あくまでイントロとして活用するものだと考えよう。
数学の知識は積み重ねであり、中学数学の知識が高校数学へ、高校数学の知識が大学初級数学へ、そして大学初級数学の知識が統計学などの応用分野の素地へと繋がっていく。
たとえば統計学の「仮説検定」についてだけ、どれだけ分かりやすく説明してくれるビジネス雑誌があっても、微分積分や確率などの素養がなければ、実際の問題に直面するとチンプンカンプンだし、他の書籍を理解できる速度と精度にもあまり貢献しないだろう。
結局のところ、基礎から順序立てて勉強していき、幅広い知識を身に付けることが、最後に目標とする地点へたどり着く最短ルートなのだ。
以下で紹介している数学の参考書は、難易度としては、「統計学の勉強を、独学でスムーズに始め&進められるだけの数学力」を身に付けることを想定し選定している。
理系経験者が紹介している本は大抵難しすぎる
「統計学 参考書」とか、「微分積分 参考書」などとググると、「数学初心者向け」などと謳って参考書を紹介しているブログが多数見つかる。
大抵の場合、数学や統計分野であれば必ず紹介される2〜3冊があり、「そんなにいい本なんだ!」とやたらと本を買い込んでいる人も多いのではないか。
例えば東大出版の統計学入門がいい例だ。実際には紹介者が使っていなくても、「定番はコレ」とか言ってなぜか必ず紹介される。統計検定2級対策として挙げられることも多い書籍だろう。
しかし、ハッキリ言って、初学者の文系人間には難しすぎて全く歯が立たないはずだ。
そういうレビューをよく見てみると、なんだかんだで昔理系学部に所属していた人だったり、現役のエンジニアであったり、既に予備知識がある人の話であることに気づく。
定番として挙げられる昔ながらの教科書よりも、よっぽど分かりやすく書かれており、初学者に適した本は沢山存在する。
「自分に近いレベルの人」が紹介している書籍を参考にすることが何より大事だ。
その意味で、この記事は本当に高校以来数学に触れていない文系人間が実際に使った参考書だけを紹介しているので、安心してほしい。
「問題を解く」より「通読して1行1行を理解する」
中学生や高校生の時代の数学の勉強の仕方とは異なり、社会人が数学を勉強するにあたっては、問題を解くというよりは、通読してテキストの内容をしっかりと理解することが重要だと筆者は考える。
大学受験があるわけではないので、発想力が求められる試験問題を解く必要もないし、あくまでこの先の統計学や必要な分野の勉強に取り掛かるために必要な基礎知識を得ておくための勉強だからだ。
プログラミングの場合は、コードを教科書で読んでいるだけだと何が起きているか理解するのは難しいため、練習問題を解いて、実際に自分で行動書くことが非常に重要だ。
一方、数学の勉強に関しては、ただでさえ社会人は時間が限られているし、問題をすべての分野で解いていたら一生勉強が終わらないので、将来統計検定を受けることになったら統計検定の範囲の練習問題を解けばよく、幅広い範囲の基礎勉を進める段階においては、そこまで練習問題を解く必要があるとは思わない。
以下で紹介する参考書も、手を動かすというよりは、途中式を含めて解説を読みこみ、1冊をしっかり咀嚼・理解しながら丸ごと通読するという意識で進めることをオススメする。
三角関数は全ての基礎となる超重要分野
sinやcosなどの三角関数は、高校で数2Bまでしかやっていないと実感しにくいが、数3や大学レベルの数学になると、超高頻度で登場する。
よく「三角関数は何に使うかわからない」と揶揄されることも多いが、実は非常に使われることの多い主力選手だ。
微分積分や線形代数など、統計学に必要な数学の勉強をする上でも必須of必須なので、絶対に習得しておきたい。
加法定理や2倍角の公式など、ちょっと考えれば思い出せるようになっていなければ、大学数学の参考書で勉強を進める上でも、いちいち立ち止まってしまって非効率だ。
したがって、統計やデータサイエンスに興味が出てきたら、とにかく早い段階で、三角関数について網羅的な理解を獲得しておこう。
オススメの参考書は、大学受験参考書で有名な坂田アキラシリーズだ。表紙やタイトル、文字のサイズ、絵柄などから”おちゃらけた”印象を受ける人も多いかもしれないが、解説の充実度はピカイチで、全く三角関数の知識がない状態でも読み通すことのできる非常にわかりやすい大学受験参考書だ。
坂田アキラ氏は数十年にわたって人気が続いている鉄板予備校講師で、その参考書の分かりやすさには定評がある。
坂田アキラシリーズの参考書の、文系社会人に嬉しいポイントは以下のようなものだ。
- 途中式に省略が少なく、数学が苦手な人でもスラスラ読める
- それぞれの式変形をできる理由が、吹き出しやイラストで豊富に補足されており、理解が深まる
- 話し言葉で超丁寧に書かれていて、読み始めのハードルが低い
三角関数は特に薄い本なので、1日で終えられるだろう。まとまって時間が取れるときにやるようにして、2〜3周しておけば、今後の勉強の足腰になってくれるはずだ。
指数・対数も超頻出のため必須の知識
立て続けに坂田アキラ氏の参考書を紹介することになるが、同じシリーズで指数、対数の参考書もサクッと終わらせておくことをおすすめしたい。
微分積分でも統計でも、logやeが死ぬほど出てくることになるので、指数と対数も、三角関数と同じく感覚的に理解できるようにしておかなければ後々辛くなってしまう。
こんなに低価格で、分かりやすい数学の本が手に入るのは、大変ありがたい。
解説が非常に丁寧なので、いい意味で内容は薄く、大人であればあっという間に終わらせることができるだろう。
高校の微分積分をサクサク終わらせるための参考書
三角関数・指数・対数をマスターしたら、いよいよ高校の微分積分に学習を進めていく。統計検定2級でも、微積分の知識は必要になるので、避けては通れない。
これまた大学受験参考書を活用するとスムーズだ。日本は受験産業が発達しているおかげで、非常に質の高い参考書が、安く手に入るのが嬉しい。
数学を子どもでも分かるように懇切丁寧に解説してくれる本がたくさんあるので、数学(の基礎)を勉強するハードルは他の国より低いと思う。
三角関数・指数・対数と同じく、微積の前提知識がなくても読み進められる坂田アキラシリーズがおすすめだ。
数2の範囲である微分積分と、数3の範囲である微分積分に分かれているので、両方やっておくと、統計検定2級をはじめ、統計学の参考書を読む上でも非常に役立つはずだ。
特に数3の微分積分は、とても分厚い書籍で、大学受験参考書としては比較的高価な3千円近い値段がする(それでも安い!)。
その分厚さは、非常に丁寧な解説が山ほど入っていることによるものだ。一つの問題の解答方法の解説が数ページにもわたり、一行たりとも「分からない」を残さないこのシリーズは本当に素晴らしい。
問題を解くというよりは、「理解しながら通読する」という意識で、どんどん読み進めよう。
流石に三角関数よりはボリュームが大きいが、ゴールデンウィーク1回分くらいの時間投資でクリアできるだろう。
働きながら、休日も予定があるならば、1〜2ヶ月は要するといったところだろうか。
数学的な厳密性や、証明がちゃんと載っているかということも重要であるが、それはもっと勉強を進め、数学を好きになってから学べば良い。
まずはとにかく分かりやすい参考書をサクサク進めて、微分積分への抵抗感をなくしていくのが大事だ。
ここまで進めれば、大学数学の参考書を進めることができるだけの実力を身につけたと言って良いだろう。
大学の微分積分の参考書は解説の丁寧さで選ぶ
大学レベルの微分積分は、大きく分けて「一変数関数の微積」と、「多変数関数の微積」に分けられる。
それぞれ日本の教科書等では解析学1、解析学2などと呼ばれていることが多く、アメリカではSingle Variable Calculusとか、Multivariable Calculusなどと呼ばれている。
前者は、ざっくりsinやcosなど三角関数の微積が複雑になったやつとか、置き換え積分が難しくなったやつとか、高校数学の延長上にあるものだと思えば良い。
後者の多変数関数の微積は、その名の通り、xとyの両方で(2変数で)微分するとか積分するとか、なんか変な経路で積分するとか、割と新しいことを学ぶイメージだ。
初学者の場合、高校数学から無理なく接続してくれる優しい解析入門の参考書から始めるのがオススメだ。
大学レベルの参考書や教科書は、受験参考書ほどは優しく丁寧に書かれていないので、自分のレベルを大きく超える書籍に手を出すと、時間ばかり浪費して得るものが少ないからだ。
大学数学ともなると、どうしても堅い数学書や教科書が多くなってくるが、そうした数学書・教科書は学習の仕方が分からない、坂田アキラシリーズのような受験参考書のようなスタイルが好き、という人は、石井俊全氏の「1冊でマスター 大学の微分積分」がおすすめだ。
高校数学から大学数学へのレベルアップに導いてくれる参考書としては、かなり優れた接続をしてくれていると思う。
また、後ほど統計学の学習法で紹介する通り、同じ著者で「1冊でマスター 大学の統計学」という書籍があるので、同著者の本で学習を進めることで、相互に参照しながら復習がしやすいというメリットも大きい。
一方、もっと厳密に、高校の数学の復習から始めてくれつつ、定理の証明などもしっかり行う数学書・教科書の中で、比較的分かりやすいテキストはサージ・ラングの解析入門であろう。
古臭いデザインや印刷で、和訳版の言葉遣いも堅いため、ハードルは高そうに見えるが、予想以上に丁寧な解説が盛り込まれているのだ。
将来にわたって、数学や数理統計の世界と真面目に向き合いたい、という意欲的なユーザーは、解析入門を使った方が、より礎として微分積分の知識が定着してくれるだろう。
1冊目の「解析入門」は、整数や分数の復習から始まり、大学の一変数関数の微分積分までカバーしている。
2冊目の「続・解析入門」は、2変数関数の微分積分など発展的な内容になっている。
この書籍がちょうど、参考書が噛み砕いてくれていた高校数学の世界から、ある程度証明の厳密性を追求する大学数学の世界への橋渡しになってくれるように思える。
ラング解析入門は、数学書の中ではかなり優しく書かれている方だが、重要な点はしっかり証明が記されている。
ちなみに英語版の方が、値段も倍以上して、ページ数も和訳版より圧倒的に多いが、解説がさらに丁寧なので、英語を読むのに抵抗がなければそちらを使う方がお勧めだ。
ラング解析入門を終えておけば、統計学の勉強をする上では暫く困ることはないだろう。文系社会人の一つの到達点なのではないかと考える。
とはいえ、将来的に本格的な数理統計の勉強を始めた際に、結局ラング解析入門を一部参照しなくてはならないこともあるかもしれないが、ビジネスパーソンの数学の知識としては、基本的には「1冊でマスター 大学の微分積分」で十分すぎるだろう。
「1冊でマスター」シリーズは、以下で紹介するマセマよりは解説が厳密で、ラング解析入門よりは適当といった中間地点のイメージだ。
微分積分がマスターできたら線形代数へ
ベクトルや行列の知識も、統計学の学習にあたって必要不可欠なものだ。統計で重回帰分析を学ぶには行列の知識が必要不可欠であるし、機械学習でも固有ベクトルなどがあちこちで出てくる。
統計・データ関連のプログラミングをしていると、線形代数の知識が実際に活躍する機会も多いだろう。
大学数学を勉強してこなかった人や、統計やデータサイエンスに縁のない人は、そもそも「線形代数」という言葉にすら馴染みがないかもしれないが、微分積分と肩を並べるくらいの重要な学習分野だ。
ただ、微分積分より、ベクトルや行列の方が、実は初学者にはとっつきやすいようにも思える。微分積分は中学数学から始まる長い長い積み上げの先にあるのに対して、線形代数は、高校の「数学C」でぽっと出の概念で、大学数学で多くの人がしっかり扱うような領域であるから、文系人材でも、そこまでビハインドがないと言えるかもしれない。
基本的な学習方針は、微分積分と変わらない。大学受験参考書を活用して、高校レベルの知識をざっと復習した上で、似たような参考書スタイルの大学数学の書籍で、分野全体を概観するような流れだ。
線形代数でも三角関数は非常に重要になるので、上でも紹介した「坂田アキラの 三角関数が面白いほどわかる本」は、是非ともやっておこう。
また、高校時代に数学3Cをやらなかった人は、まずは同じく坂田アキラシリーズで、高校レベルのベクトルの勉強もしておく。
次に、大学レベルの線形代数の学習を進めるが、ここでも微分積分と同じく、受験参考書のようなスタイルで簡易的ながら分かりやすい書籍を使用するか、しっかりと証明を積み重ねるような数学書・教科書スタイルの書籍を利用するか、分かれ道がある。
文系人材を念頭に置くと、筆者のイチオシは、微分積分に引き続き、石井俊全氏の「1冊でマスター」シリーズだ。
非常に丁寧に途中式を含めて解説してくれるので、通読している際に、置いてけぼりにされることが少ない。
「1冊でマスター 大学の線形代数」は、この先、数理統計学の勉強をそれなりに進めていくことになった場合でも、これ1冊で対応できるほど網羅性が高い書籍だ。
数理統計を専門にする人でなく、ビジネスシーンで統計やデータ分析を活用する実務家であれば、基本的にはこれ一冊で対応できるように思える。
ここまで紹介してきた参考書で、高校数学の復習からはじめ、大学の微分積分と線形代数を学習したら、統計学の学習を進めるのに必要な数学の知識はほぼ網羅したと言っていいだろう。
高校参考書並みに優しいマセマも活用しよう
高校数学を優しく解説してくれるシリーズが坂田アキラシリーズだとすれば、大学数学を初学者に優しく解説してくれるのがマセマシリーズだ。
微分積分や線形代数、さらにその先の微分方程式や複素関数まで、大学数学の各分野で出版されており、初学者や文系社会人には非常に心強い存在となるだろう。
かくいう私も、マセマにはお世話になった。特定の分野の勉強を始める前に、マセマをササっと一周終わらせておき、その上で数学書を読み始めると非常に楽になるのだ。
坂田アキラ並みのきめ細かい解説が恋しいという人は、ぜひ一度マセマシリーズを使ってみることをお勧めする。
もちろん線形代数もあるので、「1冊でマスター」で分からない部分があれば、マセマを併用するのもおすすめだ。
結構証明が省かれているところもあり、若干暗記寄りなので、数学的な厳密性を欠くという批判をする人もいる。
だが、とにかく分かりやすく、さらに発展的な勉強を行うための素地を作ってくれるので、非常に有用だと思う。
いまいち数学書を使った勉強が捗らないときには、マセマでその分野の参考書がないかを探してみよう。
文系社会人のための統計・データサイエンス入門ガイド
Pythonは、統計分析やデータビジュアライゼーションに適したライブラリが多数揃っている言語なので、せっかくここまでPythonによるプログラミングと、数学の知識を学んできたら、統計学にも手を出しておくべきだ。
また、機械学習を活用した画像認識や、ChatGPTをはじめとする大規模言語モデルなどの生成AIも、基本的には統計学から派生している技術だ。
統計学の基本的な理解は、これらの技術がどのようにしてデータからパターンを学び、予測を行っているのか、そのメカニズムを理解する上でも重要な役割を果たす。
プログラミングと統計の基礎を勉強をすると、オープンソースで開発・公開されている多くのAIツールなど、世界中の最新の技術や知見に容易にアクセスし、しかも自力で活用できるだけの力が身につくので、本当に世界が広がる。
世界中のビッグテック企業と一流エンジニアらがしのぎを削る生成AIの開発競争には参加できなくても、彼らが生み出した知と技術の結晶を、正しく理解して、周囲の誰よりも早くビジネスに応用する力を身につけることはできるのだ。
また既に、この記事で紹介してきたPythonの基礎知識と、公式ドキュメントを読み込む気合いさえあれば、PandasやScikit-learn、matplotlibなどのライブラリを活かして、Pythonを使って自社の売上データを分析したり、主要なKPIを可視化するダッシュボードを作ったり、といったことも可能なだけの知識が身についているはずだ。
そういった分析をする際に、自分で意味を考えることなく、単にググって出てきたライブラリと関数を使って、「回帰分析を行う関数はこれらしいから、えいやっ」と分析するだけでは、不正確な結果が出てしまったり、結果の解釈を誤ったり、せっかく身につけた知識が裏目に出てしまう恐れがある。
Pythonで誰でも、非常に簡単に統計分析ができてしまうからこそ、基本的な統計の知識と、データ分析の結果を解釈する知識が必要不可欠だ。
統計検定2級レベルの統計学の知識を身につける
ここまで紹介してきた数学の参考書などは、すべて「統計検定2級」レベルの統計学の知識を学ぶための下地としてのものだった。
統計検定2級は、大学基礎科目レベルの統計学の知識を問う試験である。
ビジネスパーソンが、プログラミングによる業務効率改善を行いながら、問題解決に統計の知識を活かすような場合、統計検定2級を一旦目指してみるのはちょうど良い目安に思える。
最近では、データサイエンティストの採用要件に挙げられることもあり、ここまで勉強してきたら、それなりに統計学を知っていると言っても恥ずかしくないレベルに到達しているはずだ。
このレベルの大学初級統計学を学ぶには、これまで数学の勉強に使ってきた参考書のうちで気に入った本と、同じ著者・同じスタイルの参考書を使うのが最もおすすめだ。
筆者が実際に使ったことのある中で分かりやすかったのは、微分積分の勉強のために使った「1冊でマスター 大学の微分積分」に引き続き、同じ著者による「1冊でマスター 大学の統計学」だ。
このシリーズは、証明の厳密性というよりは、受験参考書のようなスタイルで丁寧に解説が記され、概念を分かりやすく理解できるように工夫されているので、統計検定2級の勉強にはピッタリだ。
「1冊でマスター」を読んでいて分からない箇所があったり、理解が浅いと感じる点があれば、並行してマセマの確率・統計を学習すると、互いに補い合って知識が定着する。
これらの学習で、統計検定2級のかなりの範囲は網羅可能だ。
しかし、これらの参考書は、あくまで大学生向けの参考書であって、統計検定2級合格を想定して作られているわけではないので、最終的には、統計検定公式のテキストを使って、「1冊でマスター 大学の統計学」には載っていない範囲についても目を通しておいた方がいい。
この記事で紹介してきた数学の参考書、統計の参考書を終えた人であれば、統計検定2級対応の「統計学基礎」は、比較的スムーズに読み進めることができるはずだ。
これを通読し2〜3周した上で、章末問題を解き、あとはいくつか過去問を解けば、統計検定2級は十分合格を目指せるはずである。
Pythonでのデータ分析の手法を学ぶ
ここまで紹介してきたのは、大学数学や大学統計学の知識を身につけて、統計分析の方法や結果などを、正しく理解できるようになるための教材たちだった。
しかし、これらのデータ分析の知識を、実際に自分が持っているデータなどに適用しようとすると、当然、Pythonでどのようにコードを書けばいいのか、どんなライブラリを使うべきなのか、といった実践的な知識が必要になる。
筆者自身は、大学院でのデータ分析のプロジェクトやレポート、論文の執筆などを通して、都度必要になるデータ分析の手法をPythonで実装する方法を調べ、学習してきた。
実際のところ、長い間Pythonを使っているユーザーであっても、あらゆるライブラリの使い方を覚えているわけではない。
したがって、都度都度、Google検索などをしながらライブラリの使い方を調べ、行いたいデータ分析の手法に最適なライブラリや関数を探す、あるいは自分で書くという人が多いのではないだろうか。
したがって、最も重要なのは、Pythonの文法の正しい知識と、様々なライブラリのドキュメントを読み込んで使い方を理解する気合と能力だ。
とはいっても、一度もデータ分析プロジェクトに関わったことがないのに、いきなりPythonで何かデータ分析のコードを書いてみろと言われても、何から始めればいいかわからないという人も多いだろう。
そこで、この記事では、主要なデータ分析の手法を、サンプルデータとともに一通りPythonで実装することを学べる書籍を紹介する。
「Pythonで学ぶはじめてのデータサイエンス」は、2023年に発売されたばかりの比較的新しい書籍だが、文系・理系を問わず大学生を対象に書かれており、内容も数学・統計の理論と、Pythonでの実装を橋渡しするような構成となっており、この記事が想定しているユーザー層に最適な書籍だと思う。
Pythonにデフォルトで備わっている組み込み関数や、標準ライブラリの学習を終えた人が、回帰分析、クラスタリング、画像認識などをどうPythonで実現するのかの基礎を概観するのに適している。
また、より理論から離れて、実践的・実用的なデータ分析に入門するという意味では、 pandas
というテーブル形式のデータ構造を扱うライブラリや、Jupyter Notebookでのデータ分析作業のことを詳しく解説したオライリーの「Pythonによるデータ分析入門」もお勧めだ。
要するにExcelファイルやスプレッドシートを読み込ませて、集計したりグラフを作成したりといった作業にPythonを活用するためのライブラリ群の入門書で、ゼロからpandas
やMatplotlib
、scikit-learn
などのデータ分析で頻出のライブラリの使い方を自分で調べるよりは、この書籍を一度やることで、大幅な労力のショートカットが可能なはずだ。
特にビジネスユーザーであれば、pandas
などのライブラリは非常に頻繁に使うものなので、是非とも学んでおくことを勧める。
ただし、これらはあくまでも入門という位置づけであって、ここから先さらにレベルアップしていく、あるいは実務で直面している課題を解決するためにPythonを活用する場面では、自分でライブラリを調べ、ドキュメントを読み込むことが近道であるということを忘れないでほしい。
特に発展目覚ましいLLM(大規模言語モデル)など、次々と新しいライブラリや新しいモデルが発表される領域においては、使い方を解説する書籍はもちろん発売されていないし、ネット上に解説記事も存在しない状況で、そのライブラリを作った企業や個人のWebサイトから使い方を読み取って、実装しなければならない場合も多い。
こう聞くと難しく聞こえるが、多くは誰でも実装しやすいようにコード例などとともに充実した解説が載っているし、GitHub CopilotやCursorなどのコーディング支援AIを備えたエディターを使えば、それほど難しい話でもない。
ビジネスの意思決定・効果検証に統計の知識を活かす
統計学の知識を、現実のビジネスの世界に応用するに当たっては、現実世界はノイズがあまりに多いので、ある施策Aが、実際にBという効果を生んだのかどうか、事後的なデータ分析だけでは結論を出すことができないのが一般的だ。
(例:ビールの売り上げが増加したのは、新たに作ったテレビCMの効果か?天気がよく温度が高いためか?などなど)
ここでは、回帰分析などの知識に加えて、原因と結果の関係を見極めるための「実験計画」や「因果推論」と呼ばれる分野の知識が不可欠になる。
また新しい分野の勉強を始めなければならないのか、と思ってしまうところだが、「因果推論」も、ほぼほぼこれまで学習してきた統計学の知識の延長上にある議論で、スムーズに理解することができるはずだ。
統計学の基礎と、プログラミングの基礎を勉強した人のネクストステップとして、ビジネスでの効果検証に統計的手法を応用する方法を、非常に分かりやすく解説した名著が、「効果検証入門」である。
実務で使いそうな因果推論や実験計画法の知識を、難しい専門用語や数式を使いすぎることなく、多様な例を挙げながら解説しており、とても分かりやすい。
あいにく、この書籍は「R」というPythonではないプログラミング言語を用いてコード例が作られているので、追加でRの勉強も必要になってしまう。
しかし、「Pythonで学ぶ効果検証入門」というPython版の発売が2024年5月に予定されているので、Pythonで学習を継続したい人はぜひこちらのバージョンを入手しよう。
ここまで学んだら可能性は自分次第で無限大
この記事では、プログラミングの基礎、統計学の基礎、またそれらの下地として重要になる数学の基礎を学ぶための参考書を一通り紹介してきた。
プログラミング知識ゼロだった文系人材が、プログラミングの知識を身につければ、自分が会社で抱えているルーティン業務を自動化したり、公開されたばかりの大規模言語モデルを自分のPCに実装したり、生成AIを使ったアプリやWebツールを週末に自作してみたり、これまで体験したことのないほど出来ることが増えて、感動を覚えるはずだ。
また、この記事で紹介した統計・数学の参考書にコツコツ取り組めば、統計学の基礎知識を習得して統計検定2級で実力を証明することもできるし、ビジネスの意思決定に統計や数学の知識を動員して的確に判断を下すこともできる。人生の選択肢が広がり、将来のキャリアの無限の可能性が開けることだろう。
記事の冒頭の繰り返しになるが、最近ではAIによるコーディングの支援ツールが発展したことで、初心者がプログラミングやデータサイエンスを学習するハードルは、歴史上最も下がっていると言っていい。
また、プログラミングやデータサイエンスを学習することで得られるリターンも、歴史上最も大きくなっているのではないか。
プログラミングの基礎知識があれば、自分の好きなデザインのウェブサイトをAIに聞きながら構築することもできるし、Pythonの知識を下地に他のプログラミング言語の習得を進め、iOSアプリやAndroidアプリを開発することもできるだろう。
また、データ分析を行う際のコーディングも、AIのサポートを受けることで圧倒的に効率化することができ、筆者自身、5年前なら1日かかっていたであろうデータの前処理・データ分析の作業が、1〜2時間で終わってしまったこともある。
この記事を羅針盤として、AI・統計・プログラミングの世界に入門し、それぞれが必要とする専門知識や、専門ツールの学習へとステップアップしていってほしい。