見出し画像

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

はじめに

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

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

記事の内容

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


破:気がつけば落とし穴に

前章までは、ほぼ「テーブルデータの分類タスク」が対象です。
テーブルデータは表形式のデータです。EXCELの表、データベースの表を思い浮かべるとイメージしやすいかもしれません。
シンプルなタスクと言えるでしょう。

そして、この8章以降は、テーブルデータ以外のデータを取り扱う、または、分類以外のタスクを取り扱います。
さらには、ディープラーニングの扉を開けるのです。

新しいことに取り組むこと=新しいライブラリの適用が増えます。
このことが、さまざまな落とし穴にはまる要因だったのだと、この振り返りを通じて気が付きました。

落とし穴に嵌って這い上がる体験。
コードがテキストどおりに動作しない体験。
もしかすると同じ落とし穴に嵌まりかけて困る方がいらっしゃるのでは、という想像から仲間の一助になれたならと思い、対処策のブログ化を始めました。

8章 機械学習の適用-感情分析

8章ではテキスト(文章)データを用いた分類タスクに挑戦します。
いわゆる自然言語処理(NLP)の領域です。

【自然言語処理】
■アルゴリズム
・BoW :scikit-learn CountVectorizer
・TF-IDF :scikit-learn TfidfTransformer
・Porter ステミング:scikit-learn PorterStemmer
・アウトオブコア学習:scikit-learn HashingVectorizer, SDGClassifier
・トピックモデル:scikit-learn LatenDirichletAllocation
■タスク
・感情分析:テキストデータ/二値分類
■データセット
・IMDb映画レビューデータセット @スタンフォードAIラボ

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

IMDb映画レビューデータセット
分析データは「IMDb映画レビューデータセット」。
長い付き合いになる悪友です。
「インターネット映画データベース」サイトの映画レビュー情報から生成したデータセットです。
50,000件の映画レビュー文章+分類(肯定的/否定的)から成る巨大な英語文章の山です。

IMDb(映画レビューサイト)はこちら。

データセットはこちら。


構成
章の半分以上を前処理に割いています。
後半は、ロジスティック回帰の訓練、SGD分類アルゴリズムとミニバッチ学習、潜在ディリクレ(LDA)によるトピックモデルの訓練を行います。

トークナイザー
特徴的なトピックはトークナイザー(tokenizer)。
文章を個々の単語=トークンに分解することです。
分解された単語=トークンはさまざまな手法によって数値化されます。

落とし穴
データの前処理~モデル評価の本筋で問題は発生しませんでした。
がしかし、脇役的なライブラリが思わぬエラーを引き起こすのです。
処理の進行状況を表示するプログレスバーツール、PyPrind・・・。
↓↓↓ ドタバタ劇はこのブログで! ↓↓↓


9章 回帰分析-連続値をとる目的変数の予測

9章は回帰タスクです。
探索的データ解析(EDA)に取り組む章でもあります。
不動産販売のデータセットから5つの特徴量を分析して、販売価格の予測モデルを構築します。

■アルゴリズム
・単層パーセプトロン:scikit-learn Perceptron
・線形回帰(一から実装):LinearRegressionクラス
・線形回帰:scikit-learn LinearRegression
・ロバスト回帰:scikit-learn RANSACRegressor
・多項式回帰:scikit-learn PolynomialFeatures
・決定木回帰:scikit-learn DecisionTreeRegressor
・ランダムフォレスト回帰:scikit-learn RandomForestRegressor
■タスク
・回帰(販売価格)
■データセット
・Ames housingデータセット @scikit-learn.datasets
 (米国アイオワ州エイムズの個人住宅販売情報)

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

この章で学べる統計検定のトピックを紹介します。

📘統計検定準1級トピック
16章 重回帰分析:重回帰分析、最小二乗推定量、正規方程式、決定係数、L1/L2/ElasticNet正則化
17章 回帰診断法:外れ値、残差プロット

統計学実践ワークブックより

特徴量の可視化
特徴量間の関係=相関行列を重要視しています。
MLxtendパッケージを利用して、相関行列を散布図で表現する「散布図行列」と相関係数を色で魅せる「ヒートマップ」を眺めました。

MLxtendのヒートマップサンプル

モデルの性能評価
残差プロットで可視化したり、MSE(平均二乗誤差)、RMSE(二乗平均平方根誤差)、MAE(平均絶対誤差)、$${R^2}$$(決定係数)の計算式を確認します。

落とし穴
テキストのサンプルコードの実行時に、NumPy配列(ndarray)の操作でエラーがいくつか発生して、戸惑いました(焦りました)。
特に次元の扱いです。
また、データ構造の相違をいかにして吸収するか、とても難しかったです。
PandasのDataFrame・Seriesのデータ構造、NumPyの配列のデータ構造、ListなどPythonのデータ構造。
そんな落とし穴の詳しい対処方法は、↓このブログ↓で詳しく書いています。


10章 クラスタ分析-ラベルなしデータの分析

10章は教師なし学習の代表格、クラスタ分析(クラスタリング)です。
エルボー法、シルエット図などの図を楽しみました。

■アルゴリズム
・k-means法:scikit-learn KMeans
・k-means法++:scikit-learn KMeans
・凝縮型階層的クラスタリング(完全連結法):SciPy pdist, linkage, dendrogram
・凝縮型階層的クラスタリング(完全連結法):scikit-learn AgglomerativeClustering
・DBSCAN:scikit-learn DBSCAN
■タスク
・教師なしクラスタ分析
■データセット

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

この章で学べる統計検定のトピックを紹介します。

📘統計検定準1級トピック
24章 クラスター分析:階層的クラスタリング、デンドログラム、k-means法

統計学実践ワークブックより

シルエット図
クラスタリングの性能評価指標のシルエット係数をプロットすると、刃の欠けたナイフのような図が現れます。シルエット図です。
原色系でまばゆい姿です。
このケースは「良いクラスタリング」の兆候を示しているのです。

シルエット図サンプル

三日月状の分布
scikit-learnのmake_moonを用いた三日月のプロットにも魅せられました。

三日月状の分布のクラスタリングサンプル

この章には落とし穴がなく(ほっ)、三日月状を楽しんだ事を記事に書きました。


11章 多層人工ニューラルネットワークを一から実装する

遂にディープラーニングの入り口に立ちました!
11章では、隠れ層1層の多層ニューラルネットワークモデルを実装します。

■アルゴリズム
・多層パーセプトロン(一から実装):NeuralNetMLPクラス
■タスク
・画像・多値分類(10クラス)
■データセット
・MNIST手書き数字データセット @scikit-learn

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

この章で学べる統計検定のトピックを紹介します。

📘統計検定準1級トピック
19章 回帰分析その他:ニューラルネットワークモデル、隠れ層、活性化関数

統計学実践ワークブックより

諸概念
誤差逆伝播法(backpropagation)を中心にして、損失関数の微分の連鎖律&自動微分の概念を学びます。
実装では、forwardとbackwardに重点を置いている感じです。
また、ミニバッチ学習の実装にも取り組みました。

データセット

MNIST手書き数字画像のデータセットを用いて、画像から数値0~9を予測する多値分類モデルを訓練するのです。
この手書き数字も長い付き合いになりました。

手書き数字の予測サンプル(なぜか全く当たらない)

この章も落とし穴は無くて、円滑に実践が進みました。
今思えば、これは嵐の前の静けさだったのかもしれません。。。

「驚」へ続く


おわりに

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

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

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

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