第 6 週 | スタンフォード CS229 機械学習

序文

この記事はスタンフォード大学 CS229 機械学習コースの学習ノートです

この記事の主要部分は黄海光博士からの転載です.リンクは記事の最後にあります. 興味がある場合は、ノートのホームページに直接アクセスして、対応するコース教材と宿題コードをダウンロードできます。

コース公式 Web サイト: CS229: 機械学習 (stanford.edu)

コースビデオ:スタンフォード CS229: 機械学習コース、講義 1 - Andrew Ng (2018 年秋) - YouTube

ノートの概要:ノートの概要 | Stanford CS229 Machine Learning_ReturnTmp のブログ - CSDN ブログ

6週目

10. 機械学習を適用するためのアドバイス

10.1 次に何をするかを決定する

参考ビデオ: 10 - 1 - 次に何を試すかを決める (6 分).mkv

これまでにさまざまな学習アルゴリズムについて説明してきましたが、これらのビデオを読み進めていれば、いつの間にか多くの高度な機械学習テクニックの専門家になっていることに気づくでしょう。

ただし、機械学習を理解している人々の間には依然として大きなギャップがあり、これらの学習アルゴリズムを効率的かつ効果的に使用する方法をマスターしている人もいます。また、私がこれから話そうとしていることをよく知らない人もいるかもしれません。これらのアルゴリズムの適用方法を完全には理解していない可能性があります。そのため、無駄な試みに常に時間が無駄になります。私がしたいのは、機械学習システムを設計するときに、最も適切で正しいパスを選択する方法を確実に理解できるようにすることです。したがって、このビデオと次のいくつかのビデオでは、選択を行う方法に関する実践的なアドバイスとガイダンスを提供します。具体的には、機械学習システムを開発している場合、または機械学習システムのパフォーマンスを向上させようとしている場合、次に選択する道をどのように決定すべきかという質問に焦点を当てます。この問題を説明するために、正則化線形回帰、つまりコスト関数 JJ の最小化が完了している場合に、住宅価格を予測する学習例を引き続き使用したいと思いますJの値、学習パラメータを取得した後、新しい一連の住宅サンプルで仮説関数をテストしたい場合、住宅価格の予測に大きな誤差があることが判明した場合、あなたの質問は改善することです。このアルゴリズム、次に何をすべきでしょうか?

実際、このアルゴリズムのパフォーマンスを向上させる方法は数多く考えられますが、その 1 つは、より多くのトレーニング サンプルを使用することです。具体的には、電話調査や訪問調査を通じて、より多くのさまざまな住宅販売データを取得することが考えられるかもしれません。残念ながら、多くの人がより多くのトレーニング サンプルを収集するために多くの時間を費やしているのを私は見てきました。彼らはいつも、訓練データの量が 2 倍、さらには 10 倍あれば、必ず問題が解決すると考えていますよね。しかし、より多くのトレーニング データを取得しても、実際には役に立たない場合があります。次のいくつかのビデオで、その理由を説明します。

また、あまり役に立たないトレーニング データの収集に多くの時間を費やさないようにする方法もわかります。別のアプローチとして考えられるのは、より小さい機能セットを使用してみることです。したがって、 x 1 、 x 2 、 x 3 x_1、x_2、x_3のような一連の特徴がある場合バツ1バツ2バツ3おそらく多くの機能があるため、過学習を防ぐために、少し時間をかけてこれらの機能の小さなサブセットを慎重に選択することができるかもしれません。あるいは、さらに多くの機能を使用する必要がある場合や、現在の機能セットがあまり役に立たない場合もあります。より多くの特徴を取得するという観点から、より多くのデータを収集したい場合。同様に、電話調査を使用してより多くの住宅事例を取得したり、土地に関するより多くの情報を取得するために土地調査を実行したりするなど、この問題を大規模なプロジェクトに拡張することができます。など、複雑な質問です。同様に、私たちは、それに多くの時間を費やす前に、それがどの程度うまく機能するかを知りたいと強く思っています。x 1 x_1などの多項式特徴を追加してみることもできます。バツ1x 2の 2 乗x_2バツ2x 1 , x 2の二乗x_1,x_2バツ1バツ2の積、この方法を検討するのに多くの時間を費やすことができます。また、正則化パラメータλ \lambdaを増減する他の方法を検討することもできます。lambdaの値。私たちが作成したリストと上記のアプローチの多くは、6 か月以上のプロジェクトに拡張できます。残念なことに、ほとんどの人がこれらの方法を選択するために使用する基準は感覚に基づいています。つまり、ほとんどの人はこれらの方法の 1 つをランダムに選択します。たとえば、「ああ、もっと調べてみよう、データを取得しよう」と言い、その後6 か月かけて大量のデータを収集すると、別の人が「よし、この家からさらに機能を追加してみよう」と言うかもしれません。悲しいことに、多くの人が自分で選んだ方法に少なくとも 6 か月を費やし、6 か月以上経ってようやく自分が後戻りのできない道を選んでいることに気づくのを何度も見てきました。幸いなことに、より少ない労力でより多くのことを行う簡単な方法がたくさんあります。リストにある方法の少なくとも半分を除外し、本当に有望なものを残します。また、それを使用すると、次のような非常に簡単な方法もあります。手間をかけずに多くのオプションを簡単に削除できるため、不必要な時間を大幅に節約できます。機械学習システムのパフォーマンスを向上させるという目的がついに達成されました 住宅価格を予測するために線形回帰モデルを使用する必要があるとします 訓練されたモデルを使用して未知のデータを予測すると、大きな誤差があることがわかります どうすればよいでしょうか次にやりますか?

  1. より多くのトレーニング サンプルを取得する -通常は効果的ですが、コストがかかります。次の方法も効果的である可能性があります。最初に次の方法を使用することを検討してください。

  2. 機能の数を減らすようにしてください

  3. より多くの機能を取得してみてください

  4. 多項式特徴を追加してみる

  5. 正則化の次数λ \lambdaを減らしてみます。

  6. 正則化の度合いλ \lambdaを増やしてみてください。

アルゴリズムを改善するために上記の方法の 1 つをランダムに選択するのではなく、機械学習診断を使用して、上記の方法のどれがアルゴリズムに効果的であるかを知る必要があります。

次の 2 つのビデオでは、最初に機械学習アルゴリズムのパフォーマンスを評価する方法について説明し、その後、次のいくつかのビデオで、「機械学習診断」とも呼ばれるこれらの方法について説明します。「診断」とは、アルゴリズムが機能しているかどうかを洞察するために実行するテストのことです。これにより、通常、アルゴリズムの効果を向上させるためにどのような試みが意味があるのか​​もわかります。この一連の動画では、具体的な診断方法を紹介していきますが、これらの診断方法の実装と実装には時間がかかり、場合によっては理解して実装するのに多大な時間がかかることをあらかじめお断りしておきたいと思います。これらの方法を使用すると、学習アルゴリズムの開発に数か月の時間を節約できるため、これは確かに時間の有効活用です。そのため、次のいくつかのレッスンでは、最初に学習アルゴリズムを評価する方法を紹介します。その後、状況をより明確にするためのいくつかの診断について説明します。次回は、より有意義な方法を選択する方法を考えます。

10.2 仮説の評価

参考ビデオ: 10 - 2 - 仮説の評価 (8 分).mkv

ビデオのこのセクションでは、学習したアルゴリズムを使用して仮説関数を評価する方法を説明したいと思います。後のコースでは、これを基礎として使用して、過剰適合および過小適合の問題を回避する方法について説明します。

学習アルゴリズムのパラメーターを決定するとき、私たちが考慮するのは、トレーニング エラーを最小限に抑えるパラメーターを選択することです。トレーニング エラーが非常に小さいことは良いことであるに違いないと考える人もいますが、私たちはそれをすでに知っています。この仮定には多くの特徴があります。トレーニング エラーが小さいからといって、それが優れた仮説関数である必要があるというわけではありません。また、仮説関数の過学習の例も学習したため、この一般化は新しいトレーニング セットには適用できません。

では、仮説関数が過剰適合しているかどうかをどのように判断するのでしょうか? この簡単な例では、仮説関数h ( x ) h(x)を次のようにすることができます。h ( x )でグラフを描き、グラフの傾向を観察しますが、複数の特徴変数が存在する一般的な場合や、多くの特徴変数が存在する問題では、仮説を描いて観察することは非常に困難になります。機能を達成するのは困難または不可能です。

したがって、仮説関数の過学習テストを評価するには別の方法が必要です。

アルゴリズムが過学習かどうかをテストするために、データをトレーニング セットとテスト セットに分割し、通常はデータの 70% をトレーニング セットとして使用し、データの残りの 30% をテスト セットとして使用します。トレーニング セットとテスト セットの両方にさまざまな種類のデータが含まれていることは非常に重要で、通常はデータを「シャッフル」してからトレーニング セットとテスト セットに分割する必要があります。

テスト セットの評価 トレーニング セットを通じてモデルにパラメーターを学習させ、そのモデルをテスト セットに適用した後、次の 2 つの方法で誤差を計算できます。

  1. 線形回帰モデルの場合、テスト セット データを使用してコスト関数JJを計算します。J
  2. ロジスティック回帰モデルの場合、テスト データ セットを使用してコスト関数を計算することに加えて、次のようにします。

KaTeX 解析エラー: 位置 48 の「_」の後に予期されるグループ: …{m}_{test}}\sum_̲\limits{i=1}^{m…

各テスト セット サンプルの誤分類率が計算されます。

次に、計算結果が平均化されます。

10.3 モデル選択と相互検証セット

参考ビデオ: 10 - 3 - モデルの選択と Train_Validation_Test Sets (12 分).mkv

異なる次数の10 個の二項モデルから選択したいとします。

明らかに、より高い次数の多項式モデルがトレーニング データ セットにより適していますが、トレーニング データ セットに適応しても、それを一般的な状況に拡張できるとは限りません。一般的な状況により適したモデルを選択する必要があります。シチュエーション。モデルの選択を支援するために相互検証セットを使用する必要があります。

つまり、データの 60% をトレーニング セットとして使用し、データの 20% を相互検証セットとして使用し、データの 20% をテスト セットとして使用します。


モデルの選択方法は次のとおりです。

  1. トレーニング セットを使用して 10 個のモデルをトレーニングする

  2. 10 個のモデルを含む相互検証セットの相互検証誤差(コスト関数の値)を計算します。

  3. コスト関数値が最小のモデルを選択する

  4. ステップ 3 で選択したモデルを使用して、テスト セットの汎化誤差(コスト関数の値)を計算します。

    トレーニング/検証/テストエラー

    トレーニングエラー:

KaTeX 解析エラー: 位置 37 の「_」の後に予期されるグループ: …frac{1}{2m}\sum_̲\limits{i=1}^{m…

相互検証エラー:

KaTeX 解析エラー: 位置 39 の「_」の後に予期されるグループ: …1}{2m_{cv}}\sum_̲\limits{i=1}^{m…

テストエラー:

KaTeX 解析エラー: 位置 41 の「_」の後に予期されるグループ: …{2m_{test}}\sum_̲\limits{i=1}^{m…

10.4 診断のバイアスと分散

参考ビデオ: 10 - 4 - バイアスと分散の診断 (8 分).mkv

学習アルゴリズムを実行するときに、アルゴリズムのパフォーマンスが理想的でない場合は、おそらく 2 つのことが考えられます。バイアスが比較的大きいか、分散が比較的大きいかのいずれかです。言い換えれば、起こっていることは過小適合または過適合の問題のいずれかです。では、これら 2 つの状況のどちらがバイアスに関係しているのでしょうか、どちらが分散に関係しているのでしょうか、それとも両方に関係しているのでしょうか? これを知ることは、2 つの状況のどちらが存在するかを判断できるようにするために非常に重要です。実際、これは非常に効果的な指標であり、アルゴリズムを改善するための最も効果的な方法と方法を示します。このビデオでは、バイアスと分散の問題についてもう少し深く掘り下げて、理解を深めて、学習アルゴリズムを評価する方法や、アルゴリズムが適切かどうかを判断できるようになることを願っています。分散が問題となるのは、この問題が学習アルゴリズムのパフォーマンスを向上させる方法を理解する上で非常に重要であるためであり、高いバイアスと高い分散を伴う問題は、基本的に過小適合と過適合の問題であるからです。

通常、コスト関数の誤差とトレーニング セットと相互検証セットの多項式の次数を同じグラフ役に立ちます。

バイアス/分散

トレーニング エラー: KaTeX 解析エラー: 位置 37 の '_' の後に予期されるグループ: …frac{1}{2m}\sum_̲\limits{i=1}^{m…

相互検証エラー: KaTeX 解析エラー: 位置 39 の '_' の後に予期されるグループ: …1}{2m_{cv}}\sum_̲\limits{i=1}^{m...

トレーニング セットの場合、ddの場合dが小さい場合、 ddのようにモデルの適合度が低くなり、誤差が大きくなります。dが増加すると、適合度が増加し、誤差が減少します。

相互検証セットの場合、ddの場合dが小さいとモデルの適合度が低く誤差が大きくなりますが、dddが増加すると、誤差は最初に減少し、その後増加する傾向を示します。転換点は、モデルがトレーニング データセットに過剰適合し始めるときです。

相互検証セットに大きな誤差がある場合、それが分散または偏りであるかどうかをどのように判断すればよいでしょうか? 上のグラフから、次のことがわかります。

トレーニング セットの誤差と相互検証セットの誤差を近似する場合: バイアス/アンダーフィッティング

相互検証セットの誤差がトレーニング セットの誤差よりはるかに大きい場合: 分散/過学習

10.5 正則化と偏り/分散

参考ビデオ: 10 - 5 - 正則化とバイアス分散 (11 分).mkv

モデルのトレーニングのプロセスでは、通常、過学習を防ぐためにいくつかの正則化手法を使用します。しかし、正則化の度合いが高すぎたり小さすぎたりする可能性があります。つまり、λ の値を選択するときは、先ほど選択した多項式モデルの数と同様の問題についても考慮する必要があります。

テストしたい一連のλ \lambdaを選択しますラムダ値。通常は 2 倍の関係を示す 0 ~ 10 の値(例:0 、 0.01 、 0.02 、 0.04 、 0.08 、 0.15 、 0.32 、 0.64 、 1.28 、 2.56 、 5.12 、 10 0,0.01,0.02,0.04 、 0.08、0.15、0.32、0.64、1.28、2.56、5.12、100 0.01 0.02 0.04 0.08 0.15 0.32 0.64 1.28 2.56 5.12 12 点中10 点)。また、データをトレーニング セット、相互検証セット、テスト セットに分割しました。

λ \lambdaを選択しますλの方法は次のとおりです。

  1. トレーニング セットを使用して、正則化の異なる度合いで 12 個のモデルをトレーニングする
  2. 12 モデルを含む相互検証セットの相互検証誤差を計算します。
  3. 相互検証エラーが最小になるモデルを選択する
  4. ステップ 3 で選択したモデルを使用してテスト セットの汎化誤差を計算すると、トレーニング セットと相互検証セット モデルのコスト関数誤差と λ の値をグラフにプロットすることもできます。

•当λ \lambdaλが小さい場合、トレーニング セットの誤差は小さく (過学習)、相互検証セットの誤差は大きくなります。

λ \lambdaの場合λが増加すると、トレーニング セットの誤差は継続的に増加します (適合不足) が、相互検証セットの誤差は最初に減少し、その後増加します。

10.6 学習曲線

参考ビデオ: 10 - 6 - 学習曲線 (12 分).mkv

学習曲線は優れたツールであり、私は学習曲線をよく使用して、特定の学習アルゴリズムがバイアスと分散の問題に該当するかどうかを判断します。学習曲線は、学習アルゴリズムの健全性をチェックするのに適しています学習曲線、トレーニング セットのサンプル数 ( mmm ) はグラフの関数としてプロットされます

つまり、100 行のデータがある場合、1 行のデータから始めて、徐々により多くのデータ行を学習します。考え方は、より少ないデータ行でトレーニングする場合、トレーニングされたモデルは少ないトレーニング データに完全に適合しますが、トレーニングされたモデルは相互検証セットのデータやテスト セットのデータにはうまく適合しないということです。

学習曲線を使用して高いバイアス/過小適合を特定する方法: 例として、次のデータに直線を当てはめようとします。トレーニング セット内の誤差がどれほど大きくても、変化しないことがわかります。たくさん

つまり、高いバイアス/過小適合の場合、トレーニング セットにデータを追加しても必ずしも役立つとは限りません

学習曲線を使用して高分散/過学習を特定する方法: 非常に高次の多項式モデルを使用し、正則化が非常に小さいと仮定すると、相互検証セットの誤差がトレーニング セットよりもはるかに大きいことがわかります。エラー、トレーニング セットにさらに追加する 複数のデータによりモデルの効果を向上させることができます。

つまり、高い分散/過学習の場合、トレーニング セットにさらに多くのデータを追加すると、アルゴリズムのパフォーマンスが向上する可能性があります

10.7 次に何をするかを決定する

参考ビデオ: 10 - 7 - 次に何をするかを決める再検討 (7 分).mkv

学習アルゴリズムを評価する方法を紹介し、モデルの選択、バイアス、分散の問題について説明しました。では、これらの診断ルールは、どの方法が学習アルゴリズムのパフォーマンスの向上に役立つ可能性があり、どの方法が無駄であるかを判断するのにどのように役立つのでしょうか?

もう一度元の例に戻り、そこで答えを探してみましょう。これが前の例です。1.1 で提案された 6 つのオプションの次のステップを振り返って、どのような状況でどのように選択すべきかを見てみましょう。

  1. より多くのトレーニング サンプルを取得 - 高い分散に対処

  2. 高い分散を解決するには、特徴の数を減らしてみてください。

  3. より多くの機能を取得してみてください - 高いバイアスに対処してください

  4. 多項式特徴を追加してみてください - 高いバイアスに対処します

  5. 正則化の次数 λ を下げてみる - 高いバイアスを解決する

  6. 高い分散を解決するには、正則化の次数 λ を増やしてみてください

ニューラルネットワークの分散と偏り:

より小規模なニューラル ネットワークを使用すると、パラメーターが少ない場合と同様にバイアスが大きくなり、適合が不十分になる傾向がありますが、計算コストは​​低くなりますより大きなニューラル ネットワークを使用すると、より多くのパラメーターを使用した場合と同様に、高い分散と過学習が容易に発生する可能性があります。計算コストは​​比較的高くなりますが、正則化手法によって調整して、データによりよく適応させることができます。

通常は、小さなニューラル ネットワークを使用するよりも、より大きなニューラル ネットワークを選択して正則化を使用する方が適切です。

ニューラル ネットワークの隠れ層の層数の選択では、通常、層の数は1 層から徐々に増加しますが、より適切な選択を行うために、データをトレーニング セット、相互検証セットに分割することができます。ニューラル ネットワークの数を使用してニューラル ネットワークをトレーニングし、
相互検証セット コストが最小のニューラル ネットワークが選択されます

さて、これで、バイアスと分散の問題と、それを診断するための学習曲線アプローチについての紹介は終わりです。上記のすべてを使用して、学習アルゴリズムのパフォーマンスを向上させるときにどの方法が役立つかを判断できます。そして、どの方法が無意味である可能性があるか。上記のいくつかのビデオで紹介されている内容を理解し、使用方法を知っている場合。そうすれば、機械学習手法を使用して実際の問題を効果的に解決できるようになります。これらの学習アルゴリズムを使用して毎日多くの実際的な問題を解決している、シリコンバレーのほとんどの機械学習実践者と同じになることもできます。これらのセクションで説明した分散、バイアス、学習曲線に代表される診断に関するいくつかのテクニックが、機械学習をより効果的に適用し、効率的に機能させるのに実際に役立つことを願っています。

11. 機械学習システムの設計

11.1 最初に何をするか

参考ビデオ: 11 - 1 - 取り組むべきことに優先順位を付ける (10 分).mkv

次のビデオでは、機械学習システムの設計について説明します。これらのビデオでは、複雑な機械学習システムを設計するときに遭遇する主な問題について触れます。同時に、複雑な機械学習システムを賢く構築する方法についてのアドバイスも提供していきます。以下のコースはそれほど数学的ではないかもしれませんが、これから説明する内容は非常に役立ち、大規模な機械学習システムを構築する際に多くの時間を節約できると思います。

今週は、例としてスパム分類アルゴリズムについて説明します。

このような問題を解決するには、特徴ベクトルxxをどのように選択して表現するかが最初に決定しなければなりません。×スパムに最も頻繁に出現する 100 の単語のリストを選択し、これらの単語が電子メールに出現するかどうかに基づいて、サイズ 100×1 の特徴ベクトル (出現する場合は 1、出現しない場合は 0) を取得できます。 。

この分類子アルゴリズムを構築するには、次のような多くのことを行うことができます。

  1. より多くのデータを収集して、スパムと非スパムのより多くのサンプルを取得します

  2. メールルーティング情報に基づいて複雑な機能セットを開発する

  3. メール本文の情報に基づいて、切り捨てを考慮した処理を含む複雑な一連の機能を開発します。

  4. 意図的なスペルミスを検出するための高度なアルゴリズムを開発する( watch をw4tchとして記述します)

上記の選択肢のうち、どれに時間とエネルギーを費やすべきかを決めるのは非常に難しく、感情に任せるよりも賢明に選択することをお勧めします。機械学習を使用するときは、いつでも「ブレインストーミング」をして、試してみる方法をたくさん考え出すことができます。実際、精度を向上させるためにさまざまな方法をブレインストーミングする必要がある頃には、おそらく多くの人を上回っているでしょう。ほとんどの人は、考えられる方法を列挙しようとはしません。彼らがやることは、ある朝起きて、何らかの理由で「ハニー ポットプロジェクトで大量のデータを収集してみよう」と思いつくことです。

エラー分析については後のクラスで説明し、より体系的な方法でさまざまな方法の中から適切なものを選択する方法を説明します。その結果、詳細な調査に数日、数週間、場合によっては数か月かかる、本当に優れたアプローチを選択する可能性が高くなります。

11.2 エラー分析

参考ビデオ: 11 - 2 - エラー分析 (13 分).mkv

このコースでは、エラー分析概念について説明しますこれにより、より体系的に意思決定を行うことができます。機械学習について研究したり、機械学習アプリケーションを構築したりする場合、ベスト プラクティスは、非常に複雑な変数を含む非常に複雑なシステムを構築するのではなく、非常に迅速に実装できる単純なアルゴリズムを構築することです。

機械学習の問題に取り組むときは、たとえうまくいかなかったとしても、結果をすぐに得ようと、長くても 1 日、文字通り 24 時間を費やします。はっきり言って複雑なシステムは一切なく、サクッと結果が出るだけです完全に実行されない場合でも、再度実行し、最終的に相互検証を通じてデータを確認しますそれが完了したら、学習曲線をプロットできます。学習曲線をプロットして誤差を調べることにより、アルゴリズムに高バイアスおよび高分散の問題があるか、またはその他の問題があるかどうかを知ることができますこのような分析の後、より多くのデータを使用してトレーニングするか、特徴変数を追加するかを決定するのに役立ちます。その理由は、これは、機械学習の問題に慣れておらず、複雑な特徴変数が必要かどうか、より多くのデータが必要かどうか、またはその他が必要かどうかが事前にわからない場合に適したアプローチであるためです。証拠が不足しており、学習曲線が不足しているため、事前に何をすべきかを知ることは非常に困難です。したがって、アルゴリズムのパフォーマンスを向上させるためにどこに時間を費やすべきかを知ることは困難です。しかし、完璧ではないにしても、非常に単純な方法を実践すると、学習曲線を描くことでさらに多くの選択を行うことができますこの方法で、コンピューター プログラミングにおける時期尚早の最適化問題、意思決定の指針となる証拠を使用する必要があるという考え、直感だけでなくアルゴリズムの最適化に時間をどのように割り当てるか、直感的なものは一般に常に間違っている、といった問題を回避できます学習曲線をプロットする以外に非常に役立つことの 1 つは、エラー分析です。つまり、スパム分類器を構築するときに、相互検証データセットを見て、どのメールが誤って分類されたかを自分の目で確認していました。アルゴリズムによって。したがって、アルゴリズムによって誤分類されたこれらのスパムと非スパムを通じて、いくつかの体系的なルールを見つけることができます。どのタイプの電子メールが常に誤分類されるのかこれを頻繁に行うと、このプロセスによって新しい機能変数を構築するよう促したり、現在のシステムの欠点を教えて、それを改善する方法を教えたりすることができます。

学習アルゴリズムを構築するための推奨される方法は次のとおりです。

1.単純なアルゴリズムをテストする: すぐに実装できる単純なアルゴリズムから開始し、アルゴリズムを実装して、相互検証セット データを使用してアルゴリズムをテストします。

2.学習曲線を描き、データを追加するか、機能を追加するか、その他のオプションを追加するかを決定します。

3.エラー分析を実行する: アルゴリズムで予測エラーを生成する相互検証セット内のサンプルを手動でチェックし、これらのサンプルに体系的な傾向があるかどうかを確認します。

スパム フィルターを例に挙げると、エラー分析では、アルゴリズムが間違った予測を行った相互検証セット内のすべての電子メールを調べ、これらの電子メールをクラスにグループ化できるかどうかを確認します。例としては、医薬品スパム、偽造スパム、パスワードを盗む電子メールなどがあります。次に、分類子による予測誤差が最も多い電子メール グループを確認し、最適化を開始します。

分類器を改善する方法を考えてください。たとえば、特定の機能が欠落しているかどうかを確認するには、それらの機能が発生する回数を数えます。

たとえば、スペルミスが何回発生したか、異常なメールルーティング状況が何回発生したかなどを記録し、最も頻繁に発生した状況から最適化を開始します。

エラー分析は、どのようなアクションをとるべきかを判断するのに必ずしも役立つわけではありません。場合によっては、さまざまなモデルを試して比較する必要があります。モデルを比較するときは、どのモデルがより優れており、より効果的であるかを判断するために数値を使用します。通常は、相互検証セットの誤差を確認します。

スパム分類器の例では、「割引/割引/割引/割引を同じ単語として扱うべきですか?」について、そうすることでアルゴリズムが改善される場合は、切り捨てソフトウェアを使用します。エラー分析はこの種の判断には役立ちません。切り捨てソフトウェアを使用する場合と使用しない場合の 2 つの異なる解決策を試し、数値テストの結果に基づいてどちらが優れているかを判断するしかありません

したがって、学習アルゴリズムを構築するときは、常に多くの新しいアイデアを試し、学習アルゴリズムの多くのバージョンを実装することになります。新しいアイデアを実践するたびに、これらの例を手動で検出する必要がある場合は、「問題があるかどうかを確認してください」に進みます。パフォーマンスか良いパフォーマンスかを判断するのは難しいです。ステミングを使用するかどうか、および大文字と小文字を区別するかどうか。しかし、定量的な数値評価を行うことで、数値を見て誤差が大きくなったのか小さくなったのかを確認することができます。これを使用すると、新しいアイデアをより速く実践できます。基本的に、アイデアがアルゴリズムのパフォーマンスを向上させるか悪化させるかが非常に直観的にわかります。これにより、アルゴリズムを実践する際の速度が大幅に向上します。したがって、テスト セットではなく相互検証セットでエラー分析を実行することを強くお勧めしますただし、テスト セットでエラー分析を行う人もまだいます。たとえこれが数学的に不適切であったとしても。したがって、私は依然として相互検証ベクトルで誤差分析を行うことをお勧めします。

要約すると、新しい機械学習の問題に取り組んでいるときは、完璧ではないにしても、よりシンプルで高速なアルゴリズムを実装することを常にお勧めします。人がやっているのをほとんど見たことがありません。人々がよく行うことは、アルゴリズムの構築や、単純な方法だと思われるものの構築に多くの時間を費やすことです。したがって、アルゴリズムが単純すぎる、または不完全すぎることを心配する必要はありません。できるだけ早くアルゴリズムを実装してください最初の実装が完了すると、次に何を行うかを決定するのに役立つ非常に強力なツールになります。なぜなら、まずアルゴリズムによって引き起こされたエラーを確認し、エラー分析を通じて彼がどのような間違いを犯したかを確認し、最適化する方法を決定できるからです。もう 1 つのことは、アルゴリズムの高速かつ不完全な実装があり、数値的な評価データがある場合、これは新しいアイデアを試すのに役立ち、試したアイデアがアルゴリズムのパフォーマンスを向上させることができるかどうかをすぐに知ることができるためです。エラー分析は、何をすべきかを体系的に選択するのに役立ちます。

11.3 クラス歪度のエラーメトリクス

参考ビデオ: 11 - 3 - 歪んだクラスのエラー メトリック (12 分).mkv

前回のレッスンでは、エラー分析とエラー メトリックを設定することの重要性について説明しました。つまり、学習アルゴリズムを評価するための実数値を設定し、アルゴリズムの評価と誤差の尺度を使用してそのパフォーマンスを測定します。注意すべき重要な点の 1 つは、適切なエラー メトリックを使用すると、学習アルゴリズムに非常に微妙な影響を与える可能性があり、クラスの歪みの問題が発生するということです。クラス スキューの状況は、トレーニング セットに同じクラスのサンプルが非常に多く含まれ、他のクラスのサンプルがほとんどまたはまったくないという事実に現れます。

たとえば、アルゴリズムを使用して癌が悪性かどうかを予測したいと考えていますが、トレーニング セットでは、悪性腫瘍のインスタンスは 0.5% のみです。すべてのケースで腫瘍が良性であると予測する非学習アルゴリズムを、誤差がわずか 0.5% で作成したとします。ただし、トレーニングを通じて取得したニューラル ネットワーク アルゴリズムには 1% の誤差があります。このとき、誤差の大きさはアルゴリズムの効果を判断する基準とはなりません。

精度( Precision ) と再現率( Recall ) アルゴリズムによって予測された結果を 4 つの状況に分けます。

  1. True Positive ( True Positive、TP ): 予測は真であり、実際の結果も真です

2.真陰性( TN ): 予測は誤りですが、実際の結果は誤りです

3.偽陽性( FP ): 予測は正しいが、実際は偽です

4.偽陰性( FN ): 予測は偽ですが、実際は真です

すると、精度率 = TP/(TP+FP) となります。たとえば、悪性腫瘍があると予測されるすべての患者の中で、実際に悪性腫瘍がある患者の割合が高いほど良いと言えます。

再現率 = TP/(TP+FN)たとえば、実際に悪性腫瘍を有するすべての患者のうち、悪性腫瘍を有すると正しく予測される患者の割合が高いほど、良好である。

このようにして、アルゴリズムでは常に患者の腫瘍が良性であると予測するだけであり、再現率は 0 になります。

予測値
ポジティブ ネガティブ
実価 ポジティブ TP FN
ネガティブ FP テネシー州

11.4 精度と再現率のトレードオフ

参考ビデオ: 11 - 4 - 精度と再現率のトレードオフ (14 分).mkv

前回のレッスンでは、クラスに歪みがある問題の評価指標としての適合率と再現率について説明しました。多くのアプリケーションでは、精度と再現率の相対的なバランスを確保したいと考えています。

このレッスンでは、その方法を示し、アルゴリズムの指標として適合率と再現率を評価するより効果的な方法もいくつか示します。先ほどの腫瘍の特性を予測する例を続けます。私たちのアルゴリズムが 0 ~ 1 の間の結果を出力すると仮定すると、真と偽を予測するために 0.5 のしきい値を使用します。

精度 **(精度)=TP/(TP+FP)**
の場合、悪性腫瘍を有すると予測されたすべての患者のうち、実際に悪性腫瘍を有する患者の割合は、高いほど優れています。

**(Recall)=TP/(TP+FN)** の場合を思い出してください。実際に悪性腫瘍を患っているすべての患者のうち、悪性腫瘍を患っていると正しく予測された患者の割合は、高ければ高いほど良いと言えます。

非常に確信がある場合 (腫瘍が悪性である場合) にのみ予測が当たるようにしたい場合、つまり精度を高くしたい場合は、0.7、0.9 など、0.5 より大きいしきい値を使用できます。これにより、患者が悪性であると診断される偽陽性の数が減り、腫瘍が悪性であると予測できない確率が増加します。

再現率を高め、悪性腫瘍の可能性があるすべての患者を可能な限り詳細に検査して診断できるようにしたい場合は、0.5 より小さいしきい値 (0.3 など) を使用できます。

さまざまなしきい値の下での再現率と適合率の関係をグラフに描くことができます。曲線の形状はデータに応じて異なります。

このしきい値を選択するのに役立つ方法が必要です。1 つの方法は、 F1 値( F1 スコア)を計算することです。これは次のように計算されます。

F 1 スコア : 2 PRP + R { {F}_{1}}スコア:2\frac{PR}{P+R}F1Sコア:2P + RPR

最も高いF1値が得られるしきい値を選択します。

11.5 機械学習用のデータ

参考ビデオ: 11 - 5 - 機械学習のためのデータ (11 分).mkv

前回のビデオでは、評価指標について説明しました。このビデオでは、少し話を変えて、機械学習システム設計のもう 1 つの重要な側面について説明します。これには、多くの場合、トレーニングに使用されるデータの量が関係します。これまでのいくつかのビデオでは、実際に違いを生むのはデータだけである場合があるため、やみくもに始めて大量のデータを収集することに多くの時間を費やさないように警告しました。しかし、特定の条件があることが判明したので、その条件が何であるかについてはこのビデオで説明します。大量のデータを取得し、それを何らかの種類の学習アルゴリズムでトレーニングすることは、優れたパフォーマンスの学習アルゴリズムを取得する効果的な方法です。そして、これらの条件が問題に当てはまる場合、これがよく起こります。
そして、たくさんのデータを得ることができます。これは、非常に高性能な学習アルゴリズムを取得する優れた方法となります。このビデオでは、それについて一緒に話しましょう。

何年も前に、私が知っている 2 人の研究者、ミシェル バンコエリック ブリルは、一般的な紛らわしい単語を区別するために機械学習アルゴリズムを試した興味深い研究を行いました。彼らは多くの異なるアルゴリズムを試しました。そして、これらの異なる種類のアルゴリズムは、次のような場合にうまく機能します。データ量が非常に多いことがわかります。

たとえば、次のような文では、「朝食に __ 個の卵を食べました ( totwotoo )。この例では、「朝食に卵を 2 個食べました」は紛らわしい単語の例です。そこで彼らは、このような機械学習の問題を教師あり学習問題の一種として扱い、英語の文中の特定の位置にどのような単語が適切であるかを分類しようとしています。彼らはいくつかの異なる学習アルゴリズムを使用しましたが、そのすべてが 2001 年に調査を実施したときに優れたアルゴリズムであると認められました。そこで彼らは、パーセプトロンと呼ばれる、ロジスティック回帰に 1 つの分散を使用しました。彼らはまた、回帰問題に非常によく似ているWinnowアルゴリズムなど、過去には一般的に使用されていたが現在はあまり使用されていないいくつかのアルゴリズムも採用しました。今ではあまり使われていません。メモリベースの学習アルゴリズムもありますが、これは現在ではあまり使用されていませんが、それについては少し後で説明します。単純なアルゴリズムが使用されています。これらの特定のアルゴリズムの詳細はそれほど重要ではありません。アルゴリズムを変更する代わりに、より多くのデータを取得したい場合については、以下で説明します。彼らがやったのは、トレーニング データセットのサイズを変更し、さまざまなサイズのトレーニング データセットでこれらの学習アルゴリズムを使用しようとしたことで、これが得られた結果です。

これらの傾向は非常に明白です。第一に、ほとんどのアルゴリズムは同様のパフォーマンスを持っています。第二に、トレーニング データ セットが増加するにつれて、横軸はトレーニング セットのサイズを百万単位で表します。つまり、10 万から 1000 10,000 のサンプルです。 10 億規模のトレーニング セットに対応して、これらのアルゴリズムのパフォーマンスも強化されました。

実際、何らかのアルゴリズムを選択する場合、「劣った」アルゴリズムを選択する可能性があり、劣ったアルゴリズムにより多くのデータを与えると、これらの例から、他のアルゴリズムの方が「優れた」アルゴリズムよりも優れている、さらには優れている可能性が非常に高いように見えます。 」。この最初の研究は非常に影響力があったため、一連のさまざまな研究でも同様の結果が示されています。これらの結果は、詳細に応じて、多くの異なる学習アルゴリズムが非常に似たパフォーマンスを示す傾向があることを示していますが、実際にパフォーマンスを向上させるのは、アルゴリズムに与えることができるトレーニング データの量ですこのような結果は、「成功するのは、最良のアルゴリズムを持っている人ではなく、最も多くのデータを持っている人である」という機械学習における一般的なコンセンサスにつながります。

それでは、このステートメントが正しいのはいつであり、偽であるのはどのような場合でしょうか? なぜなら、学習アルゴリズムがあり、そのステートメントが真実であれば、多くの場合、どのアルゴリズムを使用するべきかを議論するよりも、大量のデータを取得することが、高性能のアルゴリズムを確実に入手するための最良の方法だからです。

有用だと思われるトレーニング セットが多数存在するという前提がある場合、機械学習の問題では、特徴値xxが存在すると仮定します。x には、 yy を正確に予測するために使用できる十分な情報が含まれていますたとえば、 y、たとえば、twototoo のxxを説明できると仮定します。xは、埋める必要がある空白スペースの周囲の単語をキャプチャします。次に、特徴がキャプチャされた後、「朝食に __ 卵を食べました」と期待されます。その後、必要な単語を伝えるための情報がたくさんあります。真ん中を埋めるのは "two" (twototoo という単語ではないyyを決定するのに十分な情報が得られます。yは何ですか言い換えれば、これら 3 つの紛らわしい単語グループから、空白を埋めるためにどの単語を選択すればよいでしょうか。

それでは、大量のデータが役立つ状況を見てみましょう。固有値にはyy を予測するのに十分な情報があると仮定します。y値は、多くの特徴を備えたロジスティック回帰や線形回帰など、多くのパラメータを必要とする学習アルゴリズム、または多くのパラメータを備えた別の学習アルゴリズムである多くの隠れユニットを備えたニューラル ネットワークを使用するとします。これらは非常に強力です。学習アルゴリズムには多くのパラメータがあり、これらのパラメータは非常に複雑な関数に適合できるため、これらを呼び出します。これらのアルゴリズムを低バイアス アルゴリズムと考えます。それは、非常に複雑な関数に適合できる非常に強力な学習アルゴリズムがあるからです。おそらく、このデータに対してこれらのアルゴリズムを実行すると、アルゴリズムはトレーニング セットによく適合するため、トレーニング誤差は低くなります。

ここで、非常に大規模なトレーニング セットを使用するとします。この場合、多くのパラメーターが必要ですが、トレーニング セットがパラメーターの数より大きいか、それ以上であれば、これらのアルゴリズムがオーバーキルになる可能性は低くなります。フィット。つまり、トレーニング誤差がテスト誤差に近いことが期待されます。

この問題についてのもう 1 つの考え方は、高性能の学習アルゴリズムを実現するには、バイアスや分散が大きくならないようにする必要があるということです。

したがって、バイアスの問題は、低バイアス アルゴリズムを取得できるように、多くのパラメーターを備えた学習アルゴリズムを使用することで解決します。これは、非常に大規模なトレーニング セットを使用することで保証されます。

ここには分散の問題はありません。アルゴリズムには分散がありません。これら 2 つの値を組み合わせることで、誤差と分散が低い学習アルゴリズムが得られます。これにより、テスト データセットを適切にテストできるようになります。基本的に、これは重要な前提です。固有値は十分な情報を提供しており、適切なクラスの関数があり、これが低誤差を保証できる理由の鍵となります。これには大規模なトレーニング データ セットがあり、より多くの分散値が保証されるため、考えられる条件がいくつか得られます。大量のデータがあり、多くのパラメーターを使用して学習アルゴリズムをトレーニングする場合、これは次のことを行う良い方法になります。高性能な学習アルゴリズム。

私は重要なテストを見つけました: まず、人間の専門家が固有値xxを確認します。xyyy値? これは、$y$ が固有値xxxは正確に予測されます。次に、実際に巨大なトレーニング セットを取得し、このトレーニング セットで多くのパラメーターを使用して学習アルゴリズムをトレーニングできるでしょうか。両方ができない場合は、多くの場合、優れたパフォーマンスの学習アルゴリズムを使用することになります。

おすすめ

転載: blog.csdn.net/m0_63748493/article/details/132088973