AIの基礎

アンサンブル学習とは何か?

mm
Unite.AI を Google の優先ソースに追加

機械学習の最も強力なテクニックの1つはアンサンブル学習です。アンサンブル学習は、複数の機械学習モデルを使用して予測の信頼性と精度を向上させることです。ただし、複数の機械学習モデルを使用することで、より正確な予測が可能になるのでしょうか?アンサンブル学習モデルを作成するために使用されるテクニックは何でしょうか?これらの質問に答えるために、アンサンブルモデルを使用する理由とアンサンブルモデルの主な作成方法を探ってみましょう。

アンサンブル学習とは何か?

簡単に言えば、アンサンブル学習は、複数の機械学習モデルをトレーニングし、その出力を組み合わせるプロセスです。さまざまなモデルは、1つの最適な予測モデルを作成するための基礎として使用されます。個々の機械学習モデルの多様なセットを組み合わせることで、全体的なモデルの安定性を向上させることができ、より正確な予測が可能になります。アンサンブル学習モデルは、個々のモデルよりも信頼性が高く、結果として、多くの機械学習コンペティションで1位になります。

アンサンブル学習モデルを作成するために使用できるさまざまなテクニックがあります。シンプルなアンサンブル学習テクニックには、さまざまなモデルの出力を平均化することが含まれますが、より複雑な方法や、多くのベース学習者/モデルの予測を組み合わせるために特別に開発されたアルゴリズムもあります。

アンサンブルトレーニング方法を使用する理由

機械学習モデルの違いは、さまざまな理由で発生する可能性があります。さまざまな機械学習モデルは、異なるデータセットのサンプルで動作する可能性があり、異なるモデリングテクニックが使用される可能性があり、異なる仮説が使用される可能性があります。

多くの人と一緒にトリビアゲームをプレイしているとします。自分だけでチームを組んでいると、自分が知っているトピックと知らないトピックがあります。ただし、他の人と一緒にチームを組むと、自分と同じように、他の人は自分が専門とする分野についての知識を持っており、他のトピックについては知識がありません。ただし、すべての知識を組み合わせると、より多くの分野について正確な推測が可能になり、チームが知らないトピックの数は減ります。これはアンサンブル学習の根底にある原理です。個々のモデル(チームメンバー)の予測を組み合わせて、精度を向上させ、エラーを最小限に抑えるというものです。

統計学者は証明しましたが、多くの人に正解の範囲内の質問に対する推測を求めた場合、彼らの答えは確率分布を形成します。正解を知っている人は自信を持って正解を選択しますが、間違った答えを選択する人は、可能な間違った答えの範囲にわたって推測を分散します。トリビアゲームの例に戻ると、自分と友達2人が正解を知っている場合、3人ともAを選択しますが、正解を知らない他の3人は、B、C、D、またはEを間違って推測する可能性があります。結果として、Aには3票があり、他の答えは1または2票しか得られない可能性があります。

すべてのモデルにはある程度のエラーがあります。1つのモデルのエラーは、上述の理由で異なるモデルのエラーと異なります。すべてのエラーを調べると、1つの答えや別の答えの周りに集まっているわけではなく、可能なすべての間違った答えの周りに散在していることがわかります。間違った推測は、基本的にすべての可能な間違った答えに分散しているため、相殺されます。一方、異なるモデルの正しい推測は、正しい答えの周りに集まっています。アンサンブルトレーニング方法を使用すると、正しい答えを見つけることがより信頼性が高くなる

シンプルなアンサンブルトレーニング方法

シンプルなアンサンブルトレーニング方法は、通常、統計的要約テクニックの適用を伴います。たとえば、予測のモード、平均、または加重平均を決定することが含まれます。

モードとは、数字の集合内で最も頻繁に発生する要素です。モードを取得するには、個々の学習モデルが予測を返し、これらの予測は最終的な予測に向けた投票とみなされます。予測の平均を決定するには、単純に予測の算術平均を計算し、最も近い整数に丸めます。最後に、加重平均を計算するには、予測を作成するために使用されるモデルに異なる重みを割り当て、重みはモデルの重要性を表します。クラス予測の数値表現は、0から1.0までの重みとともに乗算され、個々の加重予測は合計され、結果は最も近い整数に丸められます。

高度なアンサンブルトレーニング方法

3つの主要な高度なアンサンブルトレーニングテクニックがあり、それぞれが特定の機械学習問題に対処するように設計されています。「バギング」テクニックは、モデルの予測の分散を減らすために使用され、分散とは、同じ観察に基づいて予測の結果がどれだけ異なるかを指します。「ブースティング」テクニックは、モデルの偏りに対処するために使用されます。最後に、「スタッキング」は、一般的に予測を改善するために使用されます。

アンサンブル学習方法は、一般的に2つの異なるグループに分類できます。順次方法と並列アンサンブル方法です。

順次アンサンブル方法は、ベース学習者/モデルが順次に生成されるため、この名前が付けられました。順次方法の場合、基本的な考え方は、ベース学習者間の依存関係を利用して、より正確な予測を得ることです。誤ってラベル付けされた例の重みは調整され、正しくラベル付けされた例の重みは同じままです。新しい学習者が生成されるたびに、重みは変更され、精度(希望通り)が向上します。

順次アンサンブルモデルとは対照的に、並列アンサンブル方法は、ベース学習者を並列に生成します。並列アンサンブル学習を実行する場合、基本的な考え方は、ベース学習者が独立しているという事実を利用して、個々の学習者の予測の平均化によって全体的なエラー率を削減できるということです。

アンサンブルトレーニング方法は、同質的または異質的である可能性があります。ほとんどのアンサンブル学習方法は同質的であり、単一のタイプのベース学習モデル/アルゴリズムを使用します。対照的に、異質なアンサンブルは、異なる学習アルゴリズムを使用して、精度を可能な限り高くするために、学習者を多様化および変化させます。

アンサンブル学習アルゴリズムの例

アンサンブルブースティングの視覚化。写真:Sirakorn via Wikimedia Commons、CC BY SA 4.0、(https://commons.wikimedia.org/wiki/File:Ensemble_Boosting.svg)

順次アンサンブル方法の例には、AdaBoostXGBoost、および勾配ツリーブースティングがあります。これらはすべてブースティングモデルです。これらのブースティングモデルでは、目的は、弱い、パフォーマンスの低い学習者をより強力な学習者に変換することです。AdaBoostやXGBoostなどのモデルは、最初に、ランダムに推測することよりもわずかに優れた多くの弱い学習者から始まります。トレーニングが進むにつれて、データに重みが適用され、調整されます。以前のトレーニングラウンドで学習者によって誤って分類されたインスタンスには、より多くの重みが付けられます。望ましい数のトレーニングラウンドが繰り返された後、予測は、回帰タスクの場合は加重合計を介して、分類タスクの場合は加重投票を介して結合されます。

バギングの学習プロセス。写真:SeattleDataGuy via Wikimedia Commons、CC BY SA 4.0(https://commons.wikimedia.org/wiki/File:Bagging.png)

並列アンサンブルモデルの例は、ランダムフォレスト分類器であり、ランダムフォレストはまた、バギングテクニックの例でもあります。バギングという用語は、「ブートストラップ・アグリゲーション」に由来します。ベース学習者が予測を行うために使用する、データセットからのサンプルは、ブートストラップ・サンプリングというサンプリング・テクニックを使用して取り出されます。分類タスクの場合、ベースモデルの出力は投票を使用して集約され、回帰タスクの場合は平均化されます。ランダムフォレストは、個々の決定ツリーをベース学習者として使用し、ツリーのそれぞれはデータセットの異なるサンプルを使用して構築されます。ツリーを生成するために、ランダムな特徴のサブセットも使用されます。結果として、個々の決定ツリーは高度にランダム化され、すべてのツリーが組み合わせられて信頼性の高い予測が行われます。

アンサンブルスタッキングの視覚化。写真:Supun Setunga via Wikimedia Commons、CC BY S.A 4.0(https://commons.wikimedia.org/wiki/File:Stacking.png)

スタッキングアンサンブルテクニックについては、複数の回帰または分類モデルが、より高いレベルのメタモデルを介して組み合わせられます。下位レベルのベースモデルは、データセットの全体をトレーニングするために使用されます。ベースモデルの出力は、メタモデルをトレーニングするために使用される特徴として使用されます。スタッキングアンサンブルモデルは、異質な性質であることがよくあります。

ブログ作家およびプログラマーで、 Machine Learning Deep Learning のトピックを専門としています。Danielは、AIの力を社会のために利用する手助けを他者に与えることを希望しています。