プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

アンサンブル分類器を構築するための方法は何ですか?


概念は、初期データから複数の分類器を構築し、未知の例を説明するときにそれらの予測を集約することです。分類器のアンサンブルは、次のようないくつかの方法で構築できます-

トレーニングセットを操作することによって −この方法では、いくつかのサンプリング分布に従って初期データをリサンプリングすることにより、複数のトレーニングセットが生成されます。サンプリング分布は、インスタンスがトレーニング用に選択される可能性を決定し、試行ごとに変わる可能性があります。分類器は、特定の学習アルゴリズムを使用して各トレーニングセットから構築されます。バギングとブースティングは、トレーニングセットを操作するアンサンブルメソッドのインスタンスです。

入力機能を操作することによって −この方法では、入力機能のサブセットを選択して、すべてのトレーニングセットを形成します。サブセットはランダムに選択することも、ドメインの専門家の推奨に応じて選択することもできます。いくつかの研究では、この方法が非常に冗長な機能を含むデータセットで非常にうまく機能することが示されています。ランダムフォレストは、入力フィーチャを操作するアンサンブル手法であり、基本分類子として決定木が必要です。

クラスラベルを操作することによって −このメソッドは、いくつかのクラスが十分に大きい場合に使用できます。トレーニングデータは、クラスラベルをA0とA1などの2つの互いに素なサブセットにランダムに分割することにより、バイナリクラスの問題に変更されます。

クラスラベルがサブセットA0に適用されるトレーニングインスタンスはクラス0に定義され、サブセットA1に適用されるトレーニングインスタンスはクラス1に定義されます。再ラベル付けされたインスタンスは、基本分類子のトレーニングに使用されます。クラスの再ラベル付けとモデル構築のステップを数回繰り返すことで、基本分類子のアンサンブルが取得されます。

テストインスタンスが提示されると、各基本分類子Ciはそのクラスラベルを予測できます。テストインスタンスがクラス0として予測された場合、したがって、A0に適用されるすべてのクラスが投票されます。

学習アルゴリズムを操作することによって −等しいトレーニングデータでアルゴリズムを数回使用すると、複数のモデルが生成されるような方法で、いくつかの学習アルゴリズムを操作できます。たとえば、人工ニューラルネットワークは、そのネットワークトポロジまたはニューロン間の接続の元の重みを変更することにより、いくつかのモデルを作成できます。同様に、決定木の集合は、樹木成長プロセスにランダム性を注入することによって組み立てることができます。

最初の3つの方法は、一部の分類器に関連する一般的な手法ですが、4番目の方法は使用される分類器のタイプに基づいています。基本分類子メソッドは、順次(次々に)または並列に(一度に)作成できます。

最初のプロセスは、初期データDからトレーニングセットを生成することです。これは、使用されるアンサンブルアプローチのタイプに基づいており、トレーニングセットはDに正確に変換されるか、わずかに変換されます。トレーニングセットのサイズは、初期データですが、インスタンスの分布を同一にすることはできません。つまり、一部のインスタンスはトレーニングセット内でさまざまな時間に発生する可能性があり、他のインスタンスは一度も発生しない可能性があります。


  1. Java 9のOptionalクラスに追加された新しいメソッドは何ですか?

    オプションのクラス 非nullを含む場合と含まない場合があるコンテナを提供します 価値。 NullPointerException が発生するコード内の場所の数を減らすために、Java8で導入されたこのオプションのクラス 生成することができます。 Java 9は、オプションクラスに3つの新しいメソッドを追加しました: or() 、 ifPresentOrElse() およびstream() デフォルトに対処するのに役立ちます 値。 Optional.or() または() Java 9で導入されたメソッドであり、このメソッドのパラメーターは機能インターフェースサプライヤー 。この方法では、常

  2. PythonクラスのGetters/Settersメソッドとは何ですか?

    ゲッターとセッターは、データカプセル化の原則を確実にするために、多くのオブジェクト指向プログラミング言語で使用されています。それらはミューテーターメソッドとしても知られています。データのカプセル化は、これらのデータを操作するメソッドとのデータのバンドルと見なされます。もちろん、これらのメソッドは、データを取得するためのゲッターであり、データを変更するためのセッターです。この原則に従って、クラスの属性は、他のコードからそれらを隠して保護するためにプライベートにされます。 残念ながら、適切なPythonクラスは、ゲッターとセッターを使用してプライベート属性をカプセル化する必要があると広く信じられて