Fisher 線形判別分析

データを個別のクラスへと最適にグループ分けできる特徴変数の線形結合を特定します

カテゴリ: 機能選択モジュール

注意

適用対象: Machine Learning Studio (クラシック)

このコンテンツは、Studio (クラシック) のみに関連しています。 Azure Machine Learning デザイナーに同様のドラッグアンドドロップモジュールが追加されました。 この記事では、2つのバージョンの比較について詳しく説明します。

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) の フィッシャー線形判別分析 モジュールを使用して、2つ以上のクラスを最適に分離する機能の組み合わせをキャプチャする新しい特徴データセットを作成する方法について説明します。

この方法では、クラス間で区別する情報を保持しながら、特徴セットをより小さな特徴領域に射影します。このため、次元の縮小によく使用されます。 これは特定の分類タスクの計算コストを削減するだけでなく、オーバーフィットを防ぐことにも役立ちます。

スコアを生成するには、ラベル列と数値特徴列のセットを入力として指定します。 アルゴリズムは各グループ内の距離を最小限に抑えながら、データの各グループを直線的に分離する入力列の最適な組み合わせを決定します。 モジュールは、変換されたコンパクトな特徴と、別のデータセットに保存して適用できる変換を含むデータセットを返します。

線形判別分析の詳細

線形判別分析は、変数の方法を比較することによって機能するという点で、分散の分析 (ANOVA) に似ています。 ANOVA と同様に、次の前提条件に依存します。

  • 予測子が独立している
  • 各サンプルの条件付き確率密度関数は通常分布しています。
  • グループ間の差異が相似している

線形判別分析は LDA に省略されることがありますが、これは 潜在的なディリクレ等式割り当て と混同されることがあります。 これらの手法はまったく異なります。そのため、このドキュメントでは、可能な限り完全な名前を使用します。

線形判別分析を構成する方法

  1. 入力データセットを追加し、入力データが次の要件を満たしていることを確認します。

    • データはできるだけ完成している必要があります。 不足値がある行は無視されます。
    • 値には正規分布が必要です。 フィッシャー線形判別分析 を使用する前に、データの外れ値を確認するか、ディストリビューションをテストします。
    • サンプル数よりも予測子が少なくなります。
    • 数値以外の列を削除します。 このアルゴリズムは、入力に含まれる すべて の有効な数値列を調べ、無効な列が含まれている場合はエラーを返します。 数値列を除外する必要がある場合は、フィッシャー線形判別分析 の前に、データセット内の列の選択モジュールを追加して、分析する列だけを含むビューを作成します。 後で列の 追加を使用して、列を再度参加させることができます。 元の行の順序は保持されます。
  2. 入力データを フィッシャー線形判別分析 モジュールに接続します。

  3. [ クラスラベル] 列 の場合は、[ 列セレクターの起動 ] をクリックし、1つのラベル列を選択します。

  4. [ 特徴の抽出の数] に、結果として表示する列の数を入力します。

    たとえば、データセットに8つの数値特徴列が含まれている場合は、「」と入力すると、 3 3 つの列のみで構成された新しい特徴空間に折りたたむことができます。

    出力列は入力列と正確には対応していませんが、入力列の値のコンパクトな変換を表すことを理解しておくことが重要です。

    特徴抽出数 の値として0を使用し、入力として n 列を使用すると、n 次元の特徴空間を表す新しい値を含む n 特徴抽出が返されます。

  5. 実験を実行します。

結果

このアルゴリズムでは、各グループ内の距離を最小限に抑えながら、データの各グループを直線的に分離する入力列の値の組み合わせを決定し、次の2つの出力を作成します。

  • 変換 された機能。 指定された数の特徴抽出列 ( col1col2col3 など) を含むデータセット。 出力には、クラスまたはラベルの変数も含まれています。

    このコンパクトな値のセットを使用して、モデルをトレーニングすることができます。

  • フィッシャー線形判別分析変換。 保存した後、同じスキーマを持つデータセットに適用できる変換。 これは、同じ種類の多くのデータセットを分析していて、それぞれに同じ機能の減少を適用する場合に便利です。 これを適用するデータセットは、同じスキーマを持つ必要があります。

Machine learning での特徴選択の例については、 Azure AI Galleryを参照してください。

テクニカル ノート

このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。

使用上のヒント

  • この方法は連続変数でのみ機能し、カテゴリ変数または順序変数では機能しません。

  • 欠損値がある行は、変換行列を計算するときに無視されます。

  • 実験から変換を保存すると、元の実験から計算された変換は新しいデータセットに再適用され、再計算されません。 したがって、データセットごとに新しい特徴セットを計算する場合は、各データセットに対して フィッシャー線形判別分析 の新しいインスタンスを使用します。

実装の詳細

機能のデータセットは 固有ベクトル を使用して変換されます。 入力データセットの固有ベクトルは、指定された特徴列 ( 識別行列 とも呼ばれます) に基づいて計算されます。

モジュールによる変換出力には、同じスキーマを持つ別のデータセットを変換するために適用できるこれらの固有ベクトルが含まれています。

固有値の計算方法の詳細については、「このホワイトペーパー (PDF): 分類用の Eigenvector ベースの特徴の抽出」を参照してください。 Tymbal、Puuronen 他。

想定される入力

名前 Type 説明
データセット データ テーブル 入力データセット

モジュールのパラメーター

名前 Type Range 省略可能 Default 説明
クラス ラベル列 ColumnSelection 必須 なし カテゴリ クラス ラベルを含む列を選択します
特徴抽出の数 Integer >=0 必須 0 使用する特徴抽出の数。 0 の場合、すべての特徴抽出が使用されます

出力

名前 Type 説明
変換済みの特徴 データ テーブル Eigenvector space に変換されたフィッシャー線形判別分析機能
Fisher 線形判別分析の変換 ITransform インターフェイス Fisher 線形判別分析の変換

例外

例外 説明
エラー 0001 データ セットで指定した列のうち 1 つまたは複数が見つからない場合、例外が発生します。
エラー 0003 1 つまたは複数の入力が null または空の場合、例外が発生します。
エラー 0017 指定した 1 つ以上の列の型が現在のモジュールでサポートされていない場合に、例外が発生します。

Studio (クラシック) モジュール固有のエラーの一覧については、「 Machine Learning エラーコード」を参照してください。

API 例外の一覧については、「 Machine Learning REST API のエラーコード」を参照してください。

関連項目

機能の選択
フィルターに基づく特徴の選択
主成分分析を参照してください