One-vs-One Multiclass

この記事では、Azure Machine Learning デザイナーで One-vs-One Multiclass コンポーネントを使用する方法について説明します。 目標は、one-versus-one アプローチを使用して、複数のクラスを予測できる分類モデルを作成することです。

このコンポーネントは、結果が連続またはカテゴリ予測変数に依存する場合に、考えられる 3 つ以上の結果を予測するモデルを作成する際に役立ちます。 また、この方法では、複数の出力クラスを必要とする問題に二項分類法を使用することもできます。

one-versus-one モデルの詳細

分類アルゴリズムには、3 つ以上のクラスの使用が仕様で許可されているものもあります。 考えられる結果を 2 つの値のいずれかに制限するもの (バイナリ (2 クラス) モデル) もあります。 ただし、二項分類アルゴリズムでも、さまざまな戦略を使用して多クラス分類タスクに適合させることができます。

このコンポーネントは、クラスのペアに応じてバイナリ モデルが作成される one-versus-one 法を実装しています。 予測時に、最も多く投票を受けたクラスが選択されます。 ここでは、n_classes * (n_classes - 1) / 2 分類子に適合する必要があるため、この方法は通常、O(n_classes^2) が複雑であるという理由で、one-versus-all より低速になります。 ただし、この方法は、n_samples を使用したスケーリングが適切に行われない kernel アルゴリズムなどのアルゴリズムでは、便利な場合があります。 これは、個々の学習の問題にはデータの小さなサブセットのみが関係している一方で、one-versus-all の場合は、完全なデータセットが n_classes の回数使用されるためです。

このコンポーネントでは、実質的に、個々のモデルのアンサンブルが作成され、結果がマージされて、すべてのクラスを予測する単一のモデルが作成されます。 任意の二項分類子を one-versus-one モデルの基礎として使用できます。

たとえば、2 クラス サポート ベクター マシン モデルを構成し、それを One-vs-One Multiclass コンポーネントへの入力として提供するとします。 コンポーネントにより、出力クラスのすべてのメンバーに対して 2 クラス サポート ベクター マシン モデルが作成されます。 その後、one-versus-one 法を適用して、すべてのクラスの結果が結合されます。

このコンポーネントでは sklearn の OneVsOneClassifier が使用されます。詳細については、こちらをご覧ください。

One-vs-One Multiclass 分類子を構成する方法

このコンポーネントでは、複数のクラスを分析するための二項分類モデルのアンサンブルが作成されます。 このコンポーネントを使用するには、まず "二項分類" モデルを構成してトレーニングする必要があります。

バイナリ モデルを One-vs-One Multiclass コンポーネントに接続します。 次に、ラベル付きトレーニング データセットに対してモデルのトレーニングを使用してモデルのアンサンブルをトレーニングします。

モデルを組み合わせると、One-vs-One Multiclass によって複数の二項分類モデルが作成され、クラスごとにアルゴリズムが最適化されて、モデルがマージされます。 このコンポーネントは、トレーニング データセットに複数のクラス値がある場合でも、これらのタスクを実行します。

  1. デザイナーで One-vs-One Multiclass コンポーネントを自分のパイプラインに追加します。 このコンポーネントは、 [Machine Learning] - [初期化][分類] カテゴリにあります。

    One-vs-One Multiclass 分類子には、独自の構成可能なパラメーターがありません。 カスタマイズは、入力として提供される二項分類モデルで行う必要があります。

  2. 二項分類モデルをパイプラインに追加し、そのモデルを構成します。 たとえば、2 クラス サポート ベクター マシンまたは 2 クラス ブースト デシジョン ツリーを使用できます。

  3. モデルのトレーニング コンポーネントを自分のパイプラインに追加します。 One-vs-One Multiclass の出力である、トレーニングされていない分類子を接続します。

  4. モデルのトレーニングのもう一方の入力で、複数のクラス値を含むラベル付きトレーニング データセットを接続します。

  5. パイプラインを送信します。

結果

トレーニングが完了したら、モデルを使用して多クラス予測を行うことができます。

または、トレーニングされていない分類子を Cross-Validate Model (モデルのクロス検証) に渡して、ラベル付き検証データセットに対するクロス検証を行うこともできます。

次のステップ

Azure Machine Learning で使用できる一連のコンポーネントを参照してください。