概要 (MLP コマンド)
ニューラル・ネットワークは、データベース内の不明なパターンを検出するためのデータ・マイニング・ツールです。 ニューラル・ネットワークを使用して、価格やその他の変数の関数として製品の需要を予測したり、購買習慣や人口統計上の特性に基づいて顧客を分類したりすることで、ビジネス上の意思決定を行うことができます。 MLP プロシージャーは、多層パーセプトロンと呼ばれる特定の種類のニューラル・ネットワークに適合します。 多層パーセプトロンは、フィードフォワード・アーキテクチャーを使用し、複数の隠れ層を持つことができます。 これは最も一般的に使用されているニューラル・ネットワーク・アーキテクチャーの 1 つです。
オプション
予測または分類。 1 つ以上の従属変数を指定できます。これらの従属変数は、スケール、カテゴリー、または組み合わせにすることができます。 従属変数にスケール測定レベルがある場合、ニューラル・ネットワークは、入力データのある連続型関数の「真の」値に近似する連続型値を予測します。 従属変数がカテゴリー変数の場合、入力予測値に基づいてケースを「最適な」カテゴリーに分類するためにニューラル・ネットワークが使用されます。
再スケール中。 MLP は、ニューラル・ネットワークを学習する前に、オプションで共変量またはスケール従属変数を再調整します。 再調整オプションには、標準化、正規化、および調整された正規化の 3 つがあります。
トレーニング、テスト、およびホールドアウトのデータ。 MLP は、オプションで、データ・セットを学習データ、検定データ、およびホールドアウト・データに分割します。 ニューラル・ネットワークは、トレーニング・データを使用してトレーニングされます。 トレーニング・データまたはテスト・データ、あるいはその両方を使用して、複数のステップにわたってエラーを追跡し、トレーニングを停止するタイミングを決定することができます。 ホールドアウト・データはトレーニング・プロセスから完全に除外され、最終ネットワークの独立した評価に使用されます。
アーキテクチャーの選択。 MLP は、自動アーキテクチャー選択を実行することも、ユーザー指定に基づいてニューラル・ネットワークを構築することもできます。 アーキテクチャーの自動選択により、1 つの隠れ層を持つニューラル・ネットワークが作成され、隠れユニットの「最適な」数が検出されます。 あるいは、1 つまたは 2 つの隠れ層を指定し、各層の隠れ単位の数を定義することもできます。
アクティブ化関数。 隠れ層の単位では、双曲線またはシグモイド活性化関数を使用できます。 出力層の単位では、双曲型、sigmoid、identity、または softmax アクティブ化関数を使用できます。
「学習方法」。 ニューラル・ネットワークは、バッチ、オンライン、またはミニバッチのトレーニングを使用して構築できます。 勾配降下およびスケーリングされた共役勾配最適化アルゴリズムが使用可能です。
欠損値。 MLP プロシージャーには、カテゴリー変数のユーザー欠損値を有効な値として扱うためのオプションがあります。 スケール変数のユーザー欠損値は常に無効として扱われます。
出力。 MLP はピボット・テーブル出力を表示しますが、ほとんどの出力を抑制するためのオプションを提供します。 グラフィカル出力には、ネットワーク図 (デフォルト) といくつかのオプションのグラフ (予測値による観測値、残差と予測値、ROC (受信側操作特性) 曲線、累積ゲイン、リフト、および独立変数の重要度) が含まれます。 この手続きでは、オプションで、予測値をアクティブなデータ・セットに保存することもできます。 シナプスの重み推定値は、 IBM® SPSS® Statistics ファイルまたは XML ファイルにも保存できます。
基本仕様
基本的な指定は、 MLP コマンドの後に 1 つ以上の従属変数、 BY キーワードと 1 つ以上の因子、および WITH キーワードと 1 つ以上の共変量が続きます。 デフォルトでは、 MLP プロシージャーは共変量を標準化し、学習サンプルを選択してからニューラル・ネットワークを学習します。 自動アーキテクチャー選択は、「最適な」ニューラル・ネットワーク・アーキテクチャーを見つけるために使用されます。 ユーザー欠損値は除外され、デフォルトのピボットテーブル出力が表示されます。
シンタックス・ルール
- サブコマンドはすべてオプションです。
- サブコマンドは任意の順序で指定できます。
- 各サブコマンドの 1 つのインスタンスのみが許可されます。
- サブコマンド内で 1 つのキーワードが複数回指定されていると、エラーが発生します。
- 構文図に示されている括弧、等号、およびスラッシュは必須です。
- コマンド名、サブコマンド名、およびキーワードは、完全なスペルで入力する必要があります。
- 空のサブコマンドは許可されません。
SPLIT FILEコマンドで定義された分割変数は、従属変数、因子、共変量、またはデータ区分変数として使用することはできません。
制限
WEIGHT 設定は無視され、 MLP プロシージャーによって警告が出されます。
カテゴリ変数
MLP プロシージャーは、カテゴリー変数を予測変数または従属変数として受け入れますが、非常に多くのカテゴリーを持つカテゴリー変数を使用する場合は注意が必要です。
MLP プロシージャーは、プロシージャーの期間に対して one-of-c コード化を使用してカテゴリー予測変数および従属変数を一時的に再割り当てします。 変数の c カテゴリーがある場合、その変数は c ベクトルとして格納されます。最初のカテゴリーは (1,0, ..., 0)、次のカテゴリーは (0,1,0, ..., 0)、..., および最終カテゴリー (0,0, ..., 0, 1)。
このコード体系により、シナプスの重みの数が増加します。 特に、入力単位の合計数は、スケール予測値の数にすべてのカテゴリー予測値のカテゴリー数を加えた数になります。 その結果、このコード化スキームは学習速度を低下させる可能性がありますが、より「コンパクトな」コーディング方法では、通常、ニューラル・ネットワークの適合性が低下します。 ネットワーク・トレーニングの進行が非常に遅い場合は、 MLP プロシージャーを実行する前に、類似したカテゴリーを結合するか、非常にまれなカテゴリーを持つケースをドロップすることによって、カテゴリー予測変数のカテゴリー数を削減してみてください。
検定サンプルまたはホールドアウト・サンプルが定義されている場合でも、one-of-c コード化はすべて学習データに基づきます ( PARTITION サブコマンド (MLP コマンド)を参照)。 そのため、検定サンプルまたはホールドアウト・サンプルに学習データに存在しない予測カテゴリーを持つケースが含まれる場合、それらのケースはプロシージャーでもスコアリングでも使用されません。 検定サンプルまたはホールドアウト・サンプルに学習データに存在しない従属変数カテゴリーを持つケースが含まれる場合、それらのケースはプロシージャーでは使用されませんが、スコアリングされることがあります。
結果の再現
MLP プロシージャーは、区画のランダム割り当て時の乱数生成、シナプスの重みの初期化のためのランダム・サブサンプリング、自動アーキテクチャー選択のためのランダム・サブサンプリング、および重みの初期化および自動アーキテクチャー選択で使用されるシミュレートされたアニーリング・アルゴリズムを使用します。 今後同じランダム化された結果を再現するには、 MLP プロシージャーを実行する前に、 SET コマンドを使用して乱数発生ルーチンの初期化値を設定します。
MLP の結果は、データの順序にも依存します。 オンラインおよびミニバッチのトレーニング方式は、データの順序に明示的に依存します。ただし、バッチ・トレーニングであっても、重みの初期化アルゴリズムにより、データの順序に依存します。 3 つのすべての学習方法において、シナプスの重みの初期化では、シミュレートされたアニーリングが使用されます。これにより、データ・セット全体からランダム・サンプルが取得され、ランダムに学習 (70%) サンプルと検定 (30%) サンプルに分割されます。 ランダム・サンプルのサイズは、 N = min (1000, memsize) です。ここで、 memsize は、メモリーに保管されるケースのユーザー制御の最大数です。 ( /CRITERIA MEMSIZE キーワードを参照してください。) データ・セット全体のケース数が N 個未満の場合は、すべての N 個のケースが使用されます。
データの順序の影響を最小限に抑えるには、 MLP プロシージャーを実行する前に、ケースをランダムに並べ替えます。 特定の解の安定性を確認するには、異なる無作為な順序でソートされたケースを使用していくつかの異なる解を取得します。 ファイル・サイズが非常に大きい場合は、異なる無作為な順序でソートされたケースのサンプルを使用し、複数回に分けて実行することができます。
最後に、 MLP の結果は、コマンド行の変数の順序が影響を受ける可能性があります。これは、コマンド行の変数の順序が変更されたときに割り当てられる初期値のパターンが異なるためです。 データ順序の効果と同様に、特定の解の安定性を評価するために、異なるコマンド行変数の順序を試すことができます。
要約すると、将来的に MLP の結果を正確に複製する場合は、同じ MLP プロシージャー設定を使用するだけでなく、乱数発生ルーチン、同じデータ順序、および同じコマンド行変数順序に同じ初期化値を使用します。