2016-06-14 8 views
6

私はニューラルネットワークについて学ぶことに興味があり、例として実験的に導かれた次のデータセットを試しました。MATLABの確率的ニューラルネットワークによる出力を検証する方法は?

私はニューラルネットワークに次の入力ベクトルを使用しています。

X = [1 1; 1 2; 1 3; 1 4; 4 1; 4 2; 4 3; 4 4; 7 1;7 2; 7 3; 7 4]'; 
Tc = [1 1 2 3 1 1 2 2 1 1 2 2]; 

入力データを入力ベクトルTcで記述される3つのクラスに分けたいと考えています。次に、私はターゲットクラスのインデックスTcをベクトルTに変換し、使用している拡散値は1です。

MATLABでnewpnn関数を使用して、3つのクラスの決定境界を取得しています。

私は判断の境界が適切であるかどうかの検証に関して疑問があります。私は1つのデータで出力を検証していますX =[2;3.55]はクラス2に属しています。出力プロットの黒い点で示されています。青はクラス1である。黄色はクラス2に属する領域である。赤はクラス3である。

図に示されるように、ニューラルネットワークによる予測はクラス2であり、これは実際のクラスと一致するセット。

私のニューラルネットワークが正しいと検証されたことを意味しますか?

P.S.私はニューラルネットワークの基本的な理解を持っています。また、私は、より多くの訓練の例と検証セットを持っているという概念を理解しています。私は実験的に多くのデータを得ることができないので、利用可能な詳細に対応する答えを期待しています。

enter image description here

+1

答えは "はい、あなたのNNは有効である、あなたは良い仕事をした"と思われます。ただし、トレーニングとテストは正確に同じであるように見えます(上の2つのプロットを参照)ので、正しい答えが得られます。トレーニングで使用された値でNNを検証してみてください。 –

+0

@AnderBiguriあなたの答えに感謝します。しかし、この質問を投稿した直後に、私はそれを聞いてかなりばかげていると感じました。私は、訓練データがどんな種類の決定的な訓練でも非常に少ないことを知っています。私はキュービック補間を使ってより多くのデータポイントを得ました(120)。私はネットワークをトレーニングするために100を、テストのために20を保った。今、予測はかなり大きくなった。精度は約98%です。私は、この問題は今解決されていると思うが、私はこの質問のために奨励金を宣言して以来、この質問を削除することはできない。あなたの答えをもう一度おねがいします。 – rcty

答えて

1

うーん、私はあなたがよく理解して検証がニューラルネットワークの用語であるしていないと思います。 は、1つのサンプルでネットワークを確認することはできません。だから、私は神経ネットワークの検証について知っていることを教えようとします。 "実世界のデータ"、 "期待される行動"についてのいくつかのリフレクションを含む長い統計的プロセスです...あなたは10-20のデータと1つの検証ポイントのようなもので何かを検証することはできません。あなたは、ニューラルネットワークを教えるとき

一般的に、あなたは3セットている必要があります

  • 最初のものを、訓練はは重み設定に使用されるアルゴリズムの入力で設定しましたさまざまなネットワークのこれは、アルゴリズムを実行するために使用される単なる一種の必須データです。
  • 第二セット、検証がを設定し、あなたの問題のため右のアルゴリズムを選択すると過学習を低減するために使用されます。それは、異なるものの性能を比較し、最良のものを選ぶ(過酷なものは全く良い性能を持たない)。
  • テストセット:それは最後の段階です。アルゴリズムとそのパラメータを選択した後、実際のデータから新しいデータを使用して、が実行するかどうかを確認します。これはです(これは一貫性テストのようです)。

(ソース:https://stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validation-set

たとえば、私たちは、人は、「金持ちになるためのいくつかのチャンスを持っている」かどうかを確認するために使用するアルゴリズムを構築しています。ここであなたのニューラルネットワークを作り、有効にする方法です。

  1. まずは、100万人に富裕層であるかどうかを尋ね、パラメータ(年齢、場所など)を確認します。それは "元のデータセット"を作る。
  2. トレーニングセット、検証セット、テストセット(注:検証手順によっては割合が変わる可能性があります)の10 000人のリストを3つのセット(6000 2000および2000)に分割しました。
  3. 学習セット(6000最初のデータ)を適用し、異なる神経ネットワークにそれらを教えるために適用します(A、B、C、Dと名付けましょう)
  4. 検証セット4つのネットワークのパフォーマンスを確認します。オーバーフィットを回避する方法は次のとおりです。ネットワークAがネットワークではないと仮定しましょう。単なるレコーダーです。それは異なるデータとそのクラスを記録しますが、何も予測することはできません。最初の6000人との妥当性確認テストを行うが、そのテストでは完全に失敗する場合、その "ダミーアルゴリズム"は100%の結果を与えていました。だから、そのテストの後、あなたは "最高のアルゴリズム"を選ぶことができます。我々は残りのデータとCを実行する、のは今
  5. C.
  6. を選んでみましょう(テストセット、または新しいDATASたちができるならば、それは常に良いでしょう)。 Cが非常に奇妙で予測できない振る舞いをしていることが判明した場合(例えば、データが1996年の場合など、実際には独立していない、あるいは正しくないセットを作るなどの人為的ミスによって引き起こされる可能性があります)データまたはアルゴリズムの問​​題点を確認しようとします。

これは、信頼性の高いニューラルネットワークを作成する方法です(2つの主な問題は、最終結果と過補正をチェックしないことです)。過剰適合として

は、キー概念です。私はそれを少し定義し、例を挙げようとします。オーバーフィッティングは、非常に近い近似を構築することができますが、何も予測できないアルゴリズムを作成しています(私が「ダミーアルゴリズム」と呼んでいたもの)。

例えば、線形補間器と多項式(1000000度、非常に高度)を比較しましょう。私たちの多項式アルゴリズムはおそらくデータに非常によく合います(極端な適合はすべてのデータに正確に当てはまります)。しかし、何も予測することはできません。

以下の例では、(現実世界のデータから抽出された)検証セットに(2、-2)と(-1,2)の点があれば、多項式補間がはっきりとオーバーフィットされたと仮定できます(-1,10)や(2,20)などの値を示唆しているからです。線形の方が近いはずです。

enter image description here

私はそれに役立つことを願っています。 (私はそのドメインの専門家ではありませんが、非常に読みやすく簡単な回答をしようとしましたので、何かが間違っている場合はお気軽にコメントしてください:))

関連する問題