‫モデリング編その4｡
‫これがモデリングとその比較の最終部分です｡
‫ここで知りたいのは､ 私たちのモデルが実世界でどのようなパフォーマンスを発揮するかということです｡
‫ハイパーパラメータチューニングによってモデルの性能を向上させたら､ 次はテストセットでどのような性能を発揮するか見てみましょう｡
‫テストセットは､ 機械学習モデルにとって最終試験のようなものだ｡
‫データ分割が正しくできていれば､ 本番環境に導入したときにモデルがどのように動作するかの目安になるはずです｡
‫それは､ 自分のローカルコンピューターにいるだけではなく､ 顧客と向き合っているということです｡
‫モデルはテストセットのデータを見たことがないので､ テストセットでモデルを評価することは､ モデルがどのように汎化するかを確認する良い方法です｡
‫例えば､ 心臓病予測機械学習モデルが､ 元のデータセットにない患者を対象に､
‫心臓病かどうかを分類する際にどのようなパフォーマンスを発揮するかということです｡
‫優れたモデルは､ トレーニングセット､ 検証セット､ テストセットで同様の結果をもたらします｡ トレーニングセットと検証セットのモデルからテストセットへの性能がわずかに低下することは珍しくありません｡
‫例えば､ トレーニングデータセットで98％の精度を達成し､ テストセットで96％の精度を達成するようなモデルです｡
‫心配すべきは､ トレーニングセットの性能がテストセットより劇的に高い場合です｡ これは､
‫unbefitとも呼ばれます｡
‫また､ テストセットの性能がトレーニングセットの性能より高い場合は､ オーバーフィットと呼ばれる｡
‫オーバーフィッティングもアンビフィッティングも､ モデルがうまく汎化できないことを示す例で､ これは私たちが望まないことなのです｡
‫理想的なモデルは､ ゴルディロックス・ゾーンに現れる｡
‫ちょうどいいフィット感です｡
‫上手すぎず､ 下手すぎず｡
‫この機械学習モデルは､ もしこれがあなたのデータだったら､ この緑色のデータポイント､ この線は､
‫なんとなく形状に合っていますよね｡
‫しかし､ これではアンダーフィッティングに分類されてしまいます｡
‫これは､ 私たちがモデルにさせたいことではありません｡
‫こちらは､ すべてのデータポイントにうまくフィットしていますが､ あまりに近すぎるのです｡
‫ほぼ完璧すぎるモデルです｡
‫その間を蛇行しているだけなんです｡
‫つまり､ この例では､ モデルがこのデータセットでパターンをうまく学習しすぎたということになる｡
‫実際に期末試験を受ける前に期末試験を見てしまうようなものです｡
‫ここはゴルディロックスゾーンです｡
‫そうですね｡
‫まさにこのゴルディロックス・ゾーンがバランスモデルのような反復プロセスなのです｡
‫私たちは､ お客様のデータと解決しようとしている問題によって異なります｡
‫そのため､ 繰り返しになりますが､ このバランスゾーンを見つけることが重要なのです｡
‫そして､ さまざまな機械学習の問題に取り組んで経験を積むことで､ モデルがオーバーフィットしているかアンダーフィットしているかを見分けることができるようになるのです｡
‫さて､ アンフィッティングやオーバーフィッティングが起こる理由はいくつかありますが､ 主なものはデータの漏洩とデータのミスマッチです｡
‫データリークは､ テストデータの一部が学習データに漏れてしまうことで､ オーバーフィットや学習データセットよりもテストセットでのモデルの方が良いという結果になることがよくあります｡
‫思い起こせば､ 期末試験やみんなが模擬試験として期末試験を見ていたら､
‫機械学習モデルがこれから出題される内容を学習してしまった､ というような感じです｡
‫だから､ モデリングするときに､ あまりにもうまく学習しすぎて､ このようにデータにフィットするようになったのです｡
‫そして､ だからこそ､ 分割を正しく行い､ 機械学習モデルの学習が学習データセットだけで行われるようにすることが重要なのです｡
‫検証やモデルのチューニングは､ 検証データセットまたはトレーニングデータセットに対してのみ行われます｡
‫そして､ そのテストとモデルの比較は､ テストデータセットで行われます｡
‫そして､ いくつかの異なるアプローチを覚えています｡
‫トレーニングセットとテストセットのみを使用し､ モデルのチューニングはトレーニングセットで行う｡
‫しかし､ テストはいつも同じままです｡
‫大学に進学したとき､ コースで勉強するのと同じです｡
‫期末テストは､ 自分がどれだけ物事を理解しているかの目安になるようなものにしたいのです｡
‫機械学習のテストデータセットと同じですね｡
‫テストデータセットは､ モデルが実世界でどの程度一般化できるかを示すものとして使用されます｡
‫だから､ データ流出は避けたい｡
‫データミスマッチは､ トレーニングデータとテストデータの特徴が異なるなど､ テストするデータとトレーニングするデータが異なる場合に起こります｡
‫このようなミスマッチがあると､ トレーニングデータと比較してテストデータでのモデルのパフォーマンスが低下してしまいます｡
‫このため､ トレーニングはテストを行うのと同じ種類のデータで行い､ 将来のアプリケーションで使用するものにできるだけ近づけることが重要です｡
‫また､ アンビフィットの対策として､ より高機能なモデルを使用する方法もあります｡
‫これは､ まったく別のモデルであったり､ 現在のモデルのハイパーパラメータの数を増やすことを意味します｡
‫鶏肉料理を作るとき､ オーブンの温度を上げると､ ハイパーパラメーターが変化することがあります｡
‫機械学習のモデルで､ ニューラルネットワークの2層のみを使用するのではなく､ そのような使い方ができるかもしれません｡
‫これについては､ 今後の企画で詳しく見ていきたいと思います｡
‫また､ モデリングしようとする機能の数を減らすこともできます｡
‫データにはあまりにも多くの特徴があり､ 使用しているモデルはその中からパターンを見つけ出すのに苦労しているのかもしれません｡
‫最後に､ モデルをより長く訓練することができます｡
‫モデルの訓練や学習には､ 予想以上に時間がかかることがあります｡
‫実験のひとつに､ より長いトレーニング期間が必要な場合があります｡
‫オーバーフィッティングを抑えるために
‫有効な解決策は､ より多くのデータを収集することです｡
‫データが多ければ多いほど､ モデルが見つけるべきパターンの候補が増えるので､ すべてを見つける可能性は低くなる｡
‫あるいは､ あまり高機能でないモデルを使ってみるのもいいかもしれません｡
‫これは珍しいことですが､ 可能性はあります｡
‫あなたが使っているモデルは､ 学習能力が高すぎて､ データをうまくモデル化しすぎているのです｡
‫性能が良すぎるモデルは､ 間違った予測につながる可能性があるので注意が必要です｡
‫完璧なモデルは存在しないので､ 良い結果を確認するのと同じように､ 悪い結果を確認することを忘れないでください｡
‫最後に､ 異なる2つのモデル同士を比較する場合､ 例えば､ リンゴとリンゴ､
‫オレンジとオレンジを確実に比較することが重要です｡
‫モデル2 データで学習させた｡
‫セット1とセット1のデータで学習させたモデル3との比較｡
‫そして､ 比較の際には､ 最終的な結果だけでなく､ そこに至るまでに何が必要だったかを考慮するようにしたい｡
‫モデル2が1/2で93で予測する場合｡ 1%の精度｡
‫モデル3は94で4秒かけて予測する｡ 7の精度です｡
‫その3％という余分な精度は､ 3秒という余分な予測時間に見合うものなのでしょうか？
‫さて､ これは何を目標とするかにもよりますが､ 予測時間を最適化するのであれば､ できるだけ速く予測したいものです｡
‫モデル2は､ モデル3よりも4倍速く､ かつ高い精度で予測を行うので､ モデル2を選択することができます｡
‫これも､ どのようなアプリケーションやプロダクションユースで使うかによって違ってきます｡
‫ただ､ どのモデルを使うべきかは､ 性能だけでなく､ いくつかの点に留意する必要があります｡
‫このレッスンで覚えておきたいこと オーバーフィッティングやアンビフィッティングを避けること｡
‫一般性に向かうモデルがいいのでしょう｡
‫模擬試験をやるときに､ もし最終試験を見たら､ 実社会で知識を使える人ではなく､ ただの暗記マシーンになってしまうかもしれない､
‫というようなことですね｡
‫テストセットは何が何でも別にしてください｡
‫データを分割する場合､ トレーニングセットを用意し､ テストデータセットを捨ててロックしたい｡
‫そして､ モデルの学習が完了したら､ テストデータセットを開いて､ ロックを解除し､ 金庫から取り出して､
‫モデルを比較するときに､ モデルのパフォーマンスを確認することができるのです｡
‫リンゴとリンゴを比較し､ データ､ セット1､ データセット1にモデル1とモデル2を持たせる｡
‫比較する2つのモデルが同じような環境で作られたものであることを確認し､
‫比較しているものが正当な比較であることを確認したいのです｡
‫最後に､ 1つの最良の性能指標は､ 最良のモデルとイコールではありません｡
‫この例では､ 予測時間を最適化することができることを忘れないでください｡
‫ですから､ より速く予測するモデルは､ 少し時間がかかる別のモデルほど高い精度を得ることはできませんが｡
‫できるだけ早く予測できるものが必要なので､ どうでもいいことかもしれません｡
‫ふぅ､ 大変でしたね｡ でも､ コースを通して､ もっとたくさんのことを実際に見ていきますよ｡
‫また､ 機械学習のキャリア全体を通じて使用することになるので､ これらの概念を覚えておくことが重要です｡
‫次のステップに突き進んで､ この前のステップを全部まとめて､ ステップ6の実験をして見ましょう｡