見出し画像

振り返るとそこには「Python機械学習プログラミング」①序

はじめに

シリーズ「Python機械学習プログラミング」の紹介

本シリーズは書籍「Python機械学習プログラミング PyTorch & scikit-learn編」(初版第1刷)に関する記事を取り扱います。
この書籍のよいところは、Pythonのコードを動かしたり、アルゴリズムの説明を読み、ときに数式を確認して、包括的に機械学習を学ぶことができることです。
Pythonで機械学習を学びたい方におすすめです!
この記事では、この書籍のことを「テキスト」と呼びます。

記事の内容

「Python機械学習プログラミング PyTorch & scikit-learn編」(初版第1刷)の一周完走を記念して、感想を綴ります。
全19章・712ページにわたって実装を重ねた機械学習アルゴリズムとのふれあいの日々のダイジェストです。
個人的には、このテキストを一周することによって、機械学習とPythonの理解度を倍増させることができた印象です

今回は「序」章です。


序:Pythonと機械学習がやってきた

0章 Python機械学習プログラミング

書籍「Python機械学習プログラミング」は過去に第3版まで続いたロングセラーテキストです。
2022年12月に「PyTorch」対応版として装いを新たにして「PyTorch & scikit-learn編」が発行されました。
オンラインショップサイトで紹介されている可視化ページが綺麗に見えて、思わずポチりました。
配送されたテキストの受け取り時にズシリと感じた重さ
B5変形判、全712ページは硬い枕のようです。

サンプルコード
テキストで利用するPythonのサンプルコードは原著(英語)のGitHubサイトで公開されています。
コードは、Jupyter Notebook形式(.ipynb)とPythonスクリプト形式(.py)の両方が含まれています。
また、テキストの図の画像ファイル(ただし英語表記)も付いています。

1章 「データから学習する能力」をコンピュータに与える

この章は座学です。
Pythonで機械学習アルゴリズムを学ぶ際に必要となるベース知識について、簡単に説明しています。

  • 機械学習(教師あり/教師なし/強化学習)の概念

  • テキストの表記例

  • 機械学習の基本用語

  • 機械学習システム構築のステップ

  • Python・主要パッケージのインストール
    テキストのサンプルコードで利用するバージョン確認を含む

ざっと流し読みして、既知の知識の再確認をしました。
また利用環境は、以前にインストール済みのAnaconda+「Jupyter Notebook」で進めることにしました。

2章 分類問題-単純な機械学習アルゴリズムの訓練

この章から、機械学習アルゴリズムを実装します。

■アルゴリズム
・単層パーセプトロン(一から実装):Perceptronクラス
・ADALINE(一から実装):AdalineGDクラス、AdalineSGDクラス
■タスク
・二値分類
■データセット
・Irisデータセット @UCI Machine Learning Repository

テキスト2章のダイジェスト

誤差の計算、損失関数の計算、勾配降下法による重みとバイアス項の更新、ラベルの予測といった、機械学習でおなじみの処理をPythonで書いていきなり実装するのです!
テキストを見ながらJupyter Notebookにコードを写経しては、コードの実行を繰り返しました
入力ミス多発で、たくさんエラーが出ました!(ヒューマンエラー)
でも、エラーが止み、matplotlibによるアヤメの分類成果の可視化(図)が出力されたときはとても嬉しかったです。

そう、初期のこの頃は、可視化を楽しみにしていたのです。
モデルの学習成果を眺めては「がんばってるね!」と心のなかでモデルに声がけしていました。
特に、「がく片の長さ」(Sepal length)と「花びらの長さ」(Petal length)からアヤメの2品種「setosa」(ラベル0)/「versicolor」(ラベル1)に分類予測した結果に基づいて、決定境界を可視化する「plot_decision_regions」クラスの威力に感動しまくっていました。

plot_decision_regionsクラスを用いた決定境界のプロットサンプル

数式の写経にも取り組みました
Jupyter Notebookの「マークダウン」セルには、TeX記法を用いて数式を記述できます。
次の式はADALINEの損失関数です。

$$
L(\boldsymbol{w},b)=\dfrac{1}{2n}\displaystyle\sum_{i=1}^{n} (y^{(i)} - \sigma (z^{(i)}))^2
$$

ところで、今振り返ると、この2章の段階では、アルゴリズムのロジックを深追いすることなく、サラッと機械学習のプログラミングと結果を流した感じです
軽く進めましたが立ち止まらなかったことで、時間効率よく、かつ、浅く広く概念を把握する進め方ができました。

「承」へ続く


おわりに

AI・機械学習の学習でおすすめの書籍を紹介いたします。
「日本統計学会公式認定 統計検定2級 公式問題集[CBT対応版]」

【決定】新連載「のんびり統計」が始まります
現在、数記事を書き溜めているところです!
新連載では「統計検定2級 公式問題集[CBT対応版]」をテキストにします!
統計学に興味をお持ちの方と一緒に学習を進める気持ちで書きます!
データサイエンスの基礎固めとして、また、データ分析の手始めとして、確率・統計を学んでみませんか?

最後まで読んでくださり、ありがとうございました。

この記事が参加している募集

このデザインが好き

この経験に学べ

この記事が気に入ったらサポートをしてみませんか?