主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ワインの分享

この例では,パターン認識ニューラルネットワークを使用して,ワイナリーで生産されたワインを化学特性に基づいて分類する方法を説明します。

问题:ワインの分享

この例では,次の13の属性によって,3つのワイナリーで生産されたワインを分類できるニューラルネットワークの構築を試みます。

  • アルコール

  • リンゴ酸

  • 灰分のアルカリ度

  • マグネシウム

  • 全フェノール含量

  • フラボノイド

  • 非フラボノイドフェノール

  • プロアントシアニジン

  • 色の強度

  • 色相

  • 希釈ワインのOD280 / OD315

  • プロリン

これは,入力がさまざまなクラスに関連付けられているパターン認識問題の例です。既知のワインを適切に分類するだけでなく,解の設計に使用されなかったワインも正確に分類するように汎化できるニューラルネットワークを作成します。

ニューラルネットワークを使使使用する理念

ニューラルネットワークは,パターン認識問題に非常に適しています。十分な要素(ニューロンと呼ばれる)が含まれるニューラルネットワークは,任意のデータを任意の精度で分類できます。特に,多変数の複雑な判定境界問題には非常に適しています。そのため,ニューラルネットワークはワインの分類問題を解くことのできる適切な候補であると言えます。

13の近傍属性がニューラルネットワークへの入力となり,それぞれのターゲットは,関連付けられるワイナリー# 1,# 2,または# 3に対応する位置が1である,3要素のクラスベクトルになります。

ネットワークは,正しいターゲットクラスの生成を学習するよう,近傍の属性を使用して設計されます。

データの準備

入力行列Xとターゲット行第2列Yのつの行列にデータを整理することによって,ニューラルネットワークに分類問題用のデータを設定します。

入力行列の我番目の列にはそれぞれ,ワイナリーが既知であるワインを表す13の要素が含まれます。

ターゲット行列の対応する各列ははは3つの要素が含ま,これらの要素は2つの0と,关键词,关键词1つののするする1つの1で构さされます。

ここで,このようなデータセットがれます。

[x, t] = wine_dataset;

入力XおよびターゲットTのサイズを表示できます。

178年XとTの両方にの列があることに注意してください。178年これらはのワインの標本属性(入力)および関連付けられるワイナリーのクラスベクトル(ターゲット)を表します。

入力行列Xには13の属性に対する13の行があります。それぞれの例に候補として3つのワイナリーがあるため,ターゲット行列Tには3つの行があります。

大小(x)
ans =1×213 178.
尺寸(t)
ans =1×23 178.

ニューラルネットワークによるパターン認識

次の手順では,ワインの分類を学習するニューラルネットワークを作成します。

ニューラルネットワークはランダムな初期重みで開始するため,この例で得られる結果は実行するたびに多少異なります。

2层(1つの隠れ层)のフィードフォワードニューラルは,隠れ层にになニューロンがある合,任意ののますをできできますは。

この例では10個のニューロンがある1つの隠れ層を試します。一般的に,難しい問題ほど多くのニューロンが,そしておそらくは多くの層が必要になります。簡単な問題では,必要なニューロンが少なくなります。

ネットワークはまだ入力データとターゲットデータに一致するように構成されていないため,入力と出力のサイズは0です。ネットワークの学習時にはこのようになります。

网= patternnet (10);视图(净)

これでネットワークの学習の準備が整いました。標本が学習セット,検証セット,およびテストセットに自動的に分割されます。学習セットは,ネットワークに教えるために使用されます。検証セットに対してネットワークの改善が続いている限り,学習が続行されます。テストセットを使用することで,ネットワークの精度を完全に独立して測定できます。

神经网络训练工具を使用すると,学習するネットワークと,学習に使用されているアルゴリズムが表示されます。さらに,学習中には学習の状態が表示され,学習を停止した条件が緑で強調表示されます。

下部にあるボタンを使用すると,便利なプロットを開くことができます。これらのプロットは,学習中および学習後に開くことができます。アルゴリズム名およびプロットボタンの隣のリンクを使用すると,これらに関するドキュメンテーションを開くことができます。

(净,tr) =火车(净,x, t);nntraintool nntraintool (“关闭”

学習中にネットワーク性能がどのように改善されているかを確認するには,学習ツールの(性能)ボタンをクリックするか,PLOTPERFORMを呼び出します。

性能は,平均二乗誤差で測定され,対数スケールで表示されます。これは,ネットワークの学習が進むと急激に低下します。

性能は,学習セット,検証セット,およびテストセットのそれぞれについて表示されます。

plotperform (tr)

ネットワークのテスト

学習済みニューラルネットワークの平均二乗誤差をテスト標本について測定できるようになりました。これにより,実際のデータに適用した場合にネットワークがどの程度一致しているかを把握できます。

ネットワーク出力は0 ~ 1の範囲になるため,関数vec2indを使用して,各出力ベクトルで最大の要素の位置としてクラスインデックスを取得できます。

testx = x(:,tr.testind);testt = t(:,tr.testind);testy = net(testx);testindices = vec2ind(testy)
testIndices =1×271 1 1 1 1 1 11 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3

ニューラルネットワークがどの程度データにあてはまるかを測定するもう1つの方法は,混同プロットです。,ここですべての標本に対して混同行列がプロットされます。

混同行列は,正しい分類と正しくない分類の比率を示します。正しい分類は,行列の対角部分の緑の正方形に表示されます。正しくない分類は,赤い正方形に表示されます。

ネットワークが適切な分類を学習した場合,赤い正方形の比率は非常に小さくなり,誤分類がほとんどないことを示します。

そうそうていないない,附加学院习行か,隠れ隠れを増やしネットワークの习を行ことをお勧めますお勧めしし

plotconfusion (testT暴躁的)

正しい分類と正しくない分類の全体的な比率を次に示します。

(c cm) =混乱(testT,暴躁的)
c = 0
厘米=3×37 0 0 12 0 0 0
流('正确分类百分比:%f%%\n',100 *(1-c));
正确分类百分比:100.000000%
流('百分比不正确分类:%f %% \ n', 100 * c);
错误分类百分比:0.000000%

ニューラルネットワークがどの程度データにあてはまるかを測定する3つ目の方法は,受信者動作特性プロットです。これは,出力のしきい値が0 ~ 1の範囲で変化する場合に偽陽性率と真陽性率にどのような関連があるかを示します。

線が左上にあればあるほど,高い真陽性率を得るために受け入れる必要がある偽陽性の数が減少します。最適な分類器とは,線が左下隅から左上隅,右上隅,またはその近くに向かって伸びている分類器です。

Plotroc(Testt,Testy)

この例では,それぞれのワインの特性からワインを3つのワイナリーに分類するニューラルネットワークを設計する方法を説明しました。

ニューラルネットワークとそのアプリケーションの詳細は,他の例およびドキュメンテーションを参照してください。