【Coursera】「Machine Learning(機械学習) Week 6」〜機械学習アルゴリズムの評価方法を学びたい〜
今回は、そのアルゴリズムの良し悪しを評価する方法と改善方法を学びます。
<過去の記事>
【Coursera】「Machine Learning(機械学習) Week 1」〜機械学習の種類を学びたい〜 - 継続力
【Coursera】「Machine Learning(機械学習) Week 2」〜複雑なケースでの回帰分析を学びたい〜 - 継続力
【Coursera】「Machine Learning(機械学習) Week 3」〜分類の具体的なアルゴリズムを学びたい〜 - 継続力
【Coursera】「Machine Learning(機械学習) Week 4」〜ニューラルネットワークの概要を学びたい〜 - 継続力
【Coursera】「Machine Learning(機械学習) Week 5」〜ニューラルネットワークの実装方法を学びたい〜 - 継続力
講師
アンドリュー・エン(Andrew Ng)氏です。
人工知能研究の第一人者であり、Google Brainの共同設立者、 Baiduの元副社長兼チーフサイエンティスト、スタンフォード大学の教授という凄い経歴の持ち主です。
講義の概要
「Week 6」では、以下の内容が、約6時間程度で学べます。
講義の内訳
講義の内訳は以下の通りです。
<機械学習アルゴリズムの良し悪しを評価する方法>
■Deciding What to Try Next
- トレーニングデータとは別のテストデータで予測エラーが多発した場合、「トレーニングデータを増やす」、「説明変数を増減させる」、「多項変数を追加する」、「正則化パラメータλを調整する」という手段が考えられる。
- どの手段を取るかをランダムに決めると時間が無駄になる可能性が高いため、まずは、機械学習アルゴリズムの評価をすべき。
■Evaluating a Hypothesis
■Model Selection and Train/Validation/Test Sets
- テストデータでのパフォーマンスが悪かった場合は、テストデータでうまく予測できるように機械学習アルゴリズムの調整を行う。
しかし、これにより、テストデータに最適化されたアルゴリズムになってしまい、他の一般的なデータでの性能を評価できない。 - この問題を回避するために、トレーニングデータ(60%)、Cross Validation set(20%)、テストデータ(20%)の3種類にデータセットを分けて評価を行う。
<評価結果を踏まえた機械学習アルゴリズムの改善方法>
■Diagnosing Bias vs. Variance
- 期待した精度が得られない場合に、アンダーフィッティング、オーバーフィッティングのどちらの問題に陥っているかを判別する方法を説明。
■Regularization and Bias/Variance
- アンダーフィッティング・オーバーフィッティングの問題を解消できる、最適な正則化パラメータλを選択する方法を説明。
■Learning Curves
- 高バイアス・高分散の場合の、トレーニングデータ数と予測エラーの関係を説明。
- 高バイアスの場合、トレーニングデータを増やしても、精度は上がらない。
- 高分散の場合は、トレーニングデータを増やすと、精度が上がっていく。
■Deciding What to Do Next Revisited
- 以前の講義「Deciding What to Try Next」の再掲。
<スパムフィルタの実装例>
■Prioritizing What to Work On
- スパムフィルタを実装する手順を説明。
- 良いスパムフィルタを作るために、「とにかく沢山データを集めるか」、「説明変数の精査をするか」、「機械学習アルゴリズムに磨きをかけるか」といった方法があるが、どの方法が一番有効か判断するのは難しい。
■Error Analysis
- 機械学習の誤判定問題を改善するアプローチを説明。
まずは汚くても良いので、シンプルなアルゴリズムを実装し、cross validation dataでテストする。
↓
ラーニングカーブを描画し、データ追加か説明変数を増やすか等の方針を決める。
↓
誤判定が生じたデータを手動で分析し、誤判定が生じたデータの傾向を見つける。
■Error Metrics for Skewed Classes
■Trading Off Precision and Recall
- 適合率(Precision)、再現率(Recall)はトレードオフの関係がある。
- 仮定関数の結果を0,1に分類する際の閾値により、適合率(Precision)、再現率(Recall)のどちらを重視するかが決まる。
■Data For Machine Learning
- 有効なデータを集めるには、「そのデータがあれば、人間の専門家が自信を持って予測できるか?」ということを考えて、データを集める必要がある。
- 説明変数が多いアルゴリズムのトレーニングをする場合には、大量のデータを使うのが有効。
どういう人におすすめか
「機械学習のアルゴリズムを実装してみたは良いが、思ったような予測精度が得られない」という課題を抱えた人が、「どのようなアプローチで対処すれば、効率的に予測精度を上げられるか」を学べる良い授業だと思います。
「Andrew Ng」氏の説明はとても分かりやすいため、是非動画を見てみてください。