nikkie-ftnextの日記

イベントレポートや読書メモを発信

論文「Model Evaluation, Model Selection, and Algorithm Selection in Machine Learning」(2018 Sebastian Raschka)を読み始めました

はじめに

青春は、やさしいだけじゃない。痛いだけでもない。1 nikkieです🍨

機械学習モデルの評価についての論文を読み始めました。
まだ読んでいる途中ではありますが、アウトプットしていきます。

目次

論文「Model Evaluation, Model Selection, and Algorithm Selection in Machine Learning」

Sebastian Raschka氏が2018年に発表した論文です。
タイトルを訳してみると「機械学習におけるモデル評価、モデル選択、アルゴリズム選択」。
PDFは全49ページで、機械学習モデルの評価について詳細に書かれています。

なぜ読んでいるの?

きっかけのツイート

この論文の存在を知ったきっかけは以下のツイート2

機械学習モデルの評価について、「この論文は私の断然お気に入りの単体で書かれた資料」と紹介されています(this paper from rasbt is by far my favorite single written resource

Python機械学習プログラミング』の著者!

この論文の著者のSebastian Raschka氏はrasbtというアカウント名で知られます。
氏の実績を1つ紹介すると、日本でも3版まで翻訳されている『Python機械学習プログラミング』の著者です!

この本には過去に情報量で圧倒された経験があり、「rasbtさんの書いたモデル評価についての50ページに渡る論文、読んでみたい!」と即決でした。

再度、論文「Model Evaluation, Model Selection, and Algorithm Selection in Machine Learning」

結論を示す図

Figure 23(画像は後述するrasbt氏ブログのPart IV記事より引用しています)

ブログバージョンもあります

rasbt氏のブログ4編をもとに、この論文が書かれたそうです。
ブログと論文は一言一句同じではありません。
今回は論文だけを読んでいます。

大まかに伝えると

論じるタスクは3つ

機械学習モデルの性能の評価について3つのサブタスクを導入します(1.1)。

  1. We want to estimate the generalization performance, the predictive performance of our model on future (unseen) data.
    • 大雑把な訳「汎化性能(未知のデータについてのモデルの予測の性能)を見積もりたい」
    • タイトルのModel Evaluationのことと理解しました
  2. We want to increase the predictive performance by tweaking the learning algorithm and selecting the best performing model from a given hypothesis space.
    • 大雑把な訳「学習アルゴリズム(のハイパーパラメタ)を調整し、最良の性能のモデルを選択することで、予測性能を高めたい」
    • タイトルのModel Selectionのことと理解しました
  3. we want to compare different algorithms, selecting the best-performing one as well as the best performing model from the algorithm’s hypothesis space.
    • 大雑把な訳「最良の性能のモデルを選択するために、異なるアルゴリズムを比較したい」
    • タイトルのAlgorithm Selectionのことと理解しました

これら3つのサブタスクは異なるアプローチを要求すると続きます(they all require different approaches)(1.1)。

論文の構成は4セクション

上記3つのサブタスクについて全4セクションで論じられます。

  1. Introduction: Essential Model Evaluation Terms and Techniques
    • モデル評価の方法としてホールドアウト法を紹介
    • 感想:手元のテストセットという限られたデータで汎化性能を見積もるので、統計学の考え方が使われました。機械学習でこれまでで一番統計を使ったと思います(大学以来🤯)
  2. Bootstrapping and Uncertainties
    • ホールドアウト法の欠点を克服する他の評価方法を紹介
    • 感想:ブートストラップの種々の方法は初めて知りました
  3. Cross-validation and Hyperparameter Optimization
    • 交差検証について、モデル評価・モデル選択2つの観点から論じられます
    • 感想:交差検証って機械学習の入門書ではわずかなページ数だと思いますが、これは奥が深い!
  4. Algorithm Comparison(※これから読みます)

終わりに

rasbt氏の機械学習モデルの評価についての論文、これは理論に殴られる体験でした。
いろいろ分からされました、こてんぱんにされています。
書籍でキャッチアップして来た身ですが、モデル評価のやり方で「なんでだろう?」と思っていたところがこの論文でだいぶつかめてきました。

  • ホールドアウト法でtrain/testに分けた後、train+testでモデルを訓練するのはどういう意味なのか
  • 交差検証、データの前処理(例:自然言語処理におけるベクトル化)は各Foldで都度行う? それともまとめて1回だけ行う?
  • 交差検証ってこの手順でやるのか!(trainのFoldをtrainとvalidationに分けて進めるのですが、最後にtrain+validation+testで訓練します3

今回は全体感についてのアウトプットにとどまりますが、セクションレベルで今後アウトプットできたらと思っています。

評価にあんまり自信持てていなかったのですが、今回のインプットはよかったです。
ボコボコにされた分、めちゃ学びがありました!4


  1. えるたそ〜

  2. PyCon APAC 2022でGraph Neural Networkの発表をされた先生のTwitterを見に行って、このツイートと出会いました

  3. 最後の全データの訓練はオプショナルとも説明されます

  4. これも「避けずに少し勉強する」効果ですね! 8/18(木)のみんなのPython勉強会 #stapy 非同期処理特集に向けて asyncio を予習するのです - nikkie-ftnextの日記