振り返るとそこには「Python機械学習プログラミング」③破
はじめに
シリーズ「Python機械学習プログラミング」の紹介
本シリーズは書籍「Python機械学習プログラミング PyTorch & scikit-learn編」(初版第1刷)に関する記事を取り扱います。
この書籍のよいところは、Pythonのコードを動かしたり、アルゴリズムの説明を読み、ときに数式を確認して、包括的に機械学習を学ぶことができることです。
Pythonで機械学習を学びたい方におすすめです!
この記事では、この書籍のことを「テキスト」と呼びます。
記事の内容
テキスト「Python機械学習プログラミング PyTorch & scikit-learn編」(初版第1刷)の一周完走を記念して、感想を綴ります。
全19章・712ページにわたって実装を重ねた機械学習アルゴリズムとのふれあいの日々のダイジェストです。
今回は「破」章です。
破:気がつけば落とし穴に
前章までは、ほぼ「テーブルデータの分類タスク」が対象です。
テーブルデータは表形式のデータです。EXCELの表、データベースの表を思い浮かべるとイメージしやすいかもしれません。
シンプルなタスクと言えるでしょう。
そして、この8章以降は、テーブルデータ以外のデータを取り扱う、または、分類以外のタスクを取り扱います。
さらには、ディープラーニングの扉を開けるのです。
新しいことに取り組むこと=新しいライブラリの適用が増えます。
このことが、さまざまな落とし穴にはまる要因だったのだと、この振り返りを通じて気が付きました。
落とし穴に嵌って這い上がる体験。
コードがテキストどおりに動作しない体験。
もしかすると同じ落とし穴に嵌まりかけて困る方がいらっしゃるのでは、という想像から仲間の一助になれたならと思い、対処策のブログ化を始めました。
8章 機械学習の適用-感情分析
8章ではテキスト(文章)データを用いた分類タスクに挑戦します。
いわゆる自然言語処理(NLP)の領域です。
IMDb映画レビューデータセット
分析データは「IMDb映画レビューデータセット」。
長い付き合いになる悪友です。
「インターネット映画データベース」サイトの映画レビュー情報から生成したデータセットです。
50,000件の映画レビュー文章+分類(肯定的/否定的)から成る巨大な英語文章の山です。
IMDb(映画レビューサイト)はこちら。
データセットはこちら。
構成
章の半分以上を前処理に割いています。
後半は、ロジスティック回帰の訓練、SGD分類アルゴリズムとミニバッチ学習、潜在ディリクレ(LDA)によるトピックモデルの訓練を行います。
トークナイザー
特徴的なトピックはトークナイザー(tokenizer)。
文章を個々の単語=トークンに分解することです。
分解された単語=トークンはさまざまな手法によって数値化されます。
落とし穴
データの前処理~モデル評価の本筋で問題は発生しませんでした。
がしかし、脇役的なライブラリが思わぬエラーを引き起こすのです。
処理の進行状況を表示するプログレスバーツール、PyPrind・・・。
↓↓↓ ドタバタ劇はこのブログで! ↓↓↓
9章 回帰分析-連続値をとる目的変数の予測
9章は回帰タスクです。
探索的データ解析(EDA)に取り組む章でもあります。
不動産販売のデータセットから5つの特徴量を分析して、販売価格の予測モデルを構築します。
この章で学べる統計検定のトピックを紹介します。
特徴量の可視化
特徴量間の関係=相関行列を重要視しています。
MLxtendパッケージを利用して、相関行列を散布図で表現する「散布図行列」と相関係数を色で魅せる「ヒートマップ」を眺めました。
モデルの性能評価
残差プロットで可視化したり、MSE(平均二乗誤差)、RMSE(二乗平均平方根誤差)、MAE(平均絶対誤差)、$${R^2}$$(決定係数)の計算式を確認します。
落とし穴
テキストのサンプルコードの実行時に、NumPy配列(ndarray)の操作でエラーがいくつか発生して、戸惑いました(焦りました)。
特に次元の扱いです。
また、データ構造の相違をいかにして吸収するか、とても難しかったです。
PandasのDataFrame・Seriesのデータ構造、NumPyの配列のデータ構造、ListなどPythonのデータ構造。
そんな落とし穴の詳しい対処方法は、↓このブログ↓で詳しく書いています。
10章 クラスタ分析-ラベルなしデータの分析
10章は教師なし学習の代表格、クラスタ分析(クラスタリング)です。
エルボー法、シルエット図などの図を楽しみました。
この章で学べる統計検定のトピックを紹介します。
シルエット図
クラスタリングの性能評価指標のシルエット係数をプロットすると、刃の欠けたナイフのような図が現れます。シルエット図です。
原色系でまばゆい姿です。
このケースは「良いクラスタリング」の兆候を示しているのです。
三日月状の分布
scikit-learnのmake_moonを用いた三日月のプロットにも魅せられました。
この章には落とし穴がなく(ほっ)、三日月状を楽しんだ事を記事に書きました。
11章 多層人工ニューラルネットワークを一から実装する
遂にディープラーニングの入り口に立ちました!
11章では、隠れ層1層の多層ニューラルネットワークモデルを実装します。
この章で学べる統計検定のトピックを紹介します。
諸概念
誤差逆伝播法(backpropagation)を中心にして、損失関数の微分の連鎖律&自動微分の概念を学びます。
実装では、forwardとbackwardに重点を置いている感じです。
また、ミニバッチ学習の実装にも取り組みました。
データセット
MNIST手書き数字画像のデータセットを用いて、画像から数値0~9を予測する多値分類モデルを訓練するのです。
この手書き数字も長い付き合いになりました。
この章も落とし穴は無くて、円滑に実践が進みました。
今思えば、これは嵐の前の静けさだったのかもしれません。。。
「驚」へ続く
おわりに
AI・機械学習の学習でおすすめの書籍を紹介いたします。
「日本統計学会公式認定 統計検定2級 公式問題集[CBT対応版]」
【決定】新連載「のんびり統計」が始まります!
現在、数記事を書き溜めているところです!
新連載では「統計検定2級 公式問題集[CBT対応版]」をテキストにします!
統計学に興味をお持ちの方と一緒に学習を進める気持ちで書きます!
データサイエンスの基礎固めとして、また、データ分析の手始めとして、確率・統計を学んでみませんか?
最後まで読んでくださり、ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?