キカガク・AIスクールの復習その7〜アンサンブル学習が終わらない!

キカガクAIスクール
時間をかけて煮豚をつくった。柔らかくて美味!

『PythonによるAI・機械学習・深層学習アプリのつくり方』
の第2章に、
「AIで美味しいワインを判定しよう」という演習があったので試してみた。

2020/10/22,新版が出た!(写真は旧版)

「UCI Machine Learning Repository」(*1)から

「winequality-white.csv」をダウンロードし、

3つめのファイル

「ランダムフォレスト」というアルゴリズムを使ってワインの品質分類を行う、
という設定だ。

,ではなく;でデータがくぎられていた(そのため、in[13]でsep=”;”を指定)

データの分類(*2)に、drop()メソッドを使うと便利というのは初めて知った。

評価は、classification_report()関数を使い、
各分類ラベルごとに、
precision(精度、正解率)、recall(再現率)、f1-score(精度と再現率の調和平均)を出したが、正解率が68%程度とよくない。

警告メッセージを読み解くのも一苦労。

原因は、
実行結果の下部に、
「UndefinedMetricWarning」の警告メッセージが出ており、
すべてのラベルにデータが分類されておらず、
データに問題があることがわかる。

そこで、
データ数の分布を可視化し(不均衡データになっていた)
データを3段階にまとめて学習し直すことで精度を上げ、
大団円となった(*3)

しかし、

コードを写経して、実行結果を見て、かんたんな解説を読んで、
それで、終わり?

知りたいのは、

ランダムフォレストはどういうしくみで分類を行なうのか。
そして、
ビジネスシーンでどういうふうに使われているのか。

なのだ。

幸い、
『機械学習図鑑』にしくみの説明があった。

いい紙を使っているので、少しお高い(値段が)

それによると、
ランダムフォレストとは、

アンサンブル学習(*3)」のバギングをベースに、
ブートストラップ法でデータを復元抽出し(=水増しすること)、
特徴量をランダムに選択して少しずつ異なる「決定木(*4)」を作り、
その多数決をとるしくみ(回帰の場合は平均)

だという。

説明だけでは不十分だから、
『Pythonではじめる機械学習』
その実装方法をチェックし、ようやく納得した(時間かかった!)。

間違いない!一冊。

終わったと思ったら、
あるWebサイトで、

2014年以降、kaggle(*5)等では、ランダムフォレストより勾配ブースティングのひとつ、XGBoostやマイクロソフトのLightGBMが使われている。

という話を見つけた。

もうやめて。
この演習、いつまでたっても終わらない予感。

*1 機械学習の練習に使えるデータサンプルが557種類公開されている(2020年9月1日現在)
*2 データを読み込んだあと、目的変数と説明変数(特徴量とも)に分離する。
*3 アンサンブル学習とは、複数の機械学習モデルを組み合わせることで、より強力なモデルを構築する手法で、
(1)バギング・・・ランダムフォレスト
(2)ブースティング・・・勾配ブースティング → XGBoost, LightGBM, CatGBM
(3)スタッキング、
の3種類の方法がある。
*4 決定木:学習データを条件分岐によって分割していく基本的な手法
*5 世界最大の機械学習コンペティションのプラットフォーム

Follow me!

PAGE TOP