単層パーセプトロンを使用すると、トレーニング後にパーセプトロンの重みに基づいて2種類のポイントを分離する線である「分離線」(専門用語はわかりません)の方程式を簡単に見つけることができます。多層パーセプトロンで、2種類の点を分離する曲線の方程式(直線ではない)を同様の方法で見つけるにはどうすればよいですか?
ありがとう。
単層パーセプトロンを使用すると、トレーニング後にパーセプトロンの重みに基づいて2種類のポイントを分離する線である「分離線」(専門用語はわかりません)の方程式を簡単に見つけることができます。多層パーセプトロンで、2種類の点を分離する曲線の方程式(直線ではない)を同様の方法で見つけるにはどうすればよいですか?
ありがとう。
これは、分離境界または曲線の近似を得ようとする試みにすぎません。
以下に、例のデータセットの 2 つのタイプの間の分離曲線をプロットしました。データセットは、コーセラ (Andrew Ng の機械学習コース) から借用しています。Ex6
また、以下のコード スニペットは、Andrew の ML コースのアイデアを借用しています。
分離曲線をプロットするには、
Matlab
。これは次のようになります。x1plot = linspace(min(X(:,1)), max(X(:,1)), 100)'; x2plot = linspace(min(X(:,2)), max(X(:,2)), 100)'; [X1, X2] = meshgrid(x1plot, x2plot);
vals = zeros(サイズ(X1)); i = 1 の場合:サイズ(X1, 2) this_X = [X1(:, i), X2(:, i)]; % mlpPredict() は、トレーニング済みのニューラル ネットワーク モデルを使用する関数です % 予測されたラベルを取得します。 vals(:, i) = mlpPredict(モデル, this_X); 終わり % 境界をプロットする 持続する [C, Lev] = 輪郭(X1, X2, vals, [0 0], 'Color', 'b'); 待ってください。
境界曲線の正確な数学的表現を得ることのみが目的の場合、この方法は機能しません。この方法では、グリッドで設定した粒度までの曲線の近似しか得られません。
境界の正確な記述が必要な場合は、サポート ベクターのセット全体が境界の記述として機能する可能性があるため、SVM が適切な代替手段になる可能性があります。
octave
に関する のドキュメントを調べましたcontour
。基本的に、同じ引数からによって計算されcontour
た等高線行列を使用します。の署名は次のとおりです。C
contourc
contourc
[C, LEV] = contourc (X, Y, Z, VN)
この関数は、行列の等高線を計算しZ
ます。パラメータX
、Y
およびVN
はオプションです。
The return value LEV is a vector of the contour levels. The
return value C is a 2 by N matrix containing the contour lines in
the following format
C = [lev1, x1, x2, ..., levn, x1, x2, ...
len1, y1, y2, ..., lenn, y1, y2, ...]
in which contour line N has a level (height) of LEVN and length of
LENN.
したがって、曲線の分析的な説明を取得したい場合は、マトリックスC
に十分な情報が含まれている必要があります。私のサンプル プロットでは、 を解析した後、C
30 レベルになります。第 1 レベルの最初の 6 点の座標を以下に示します。
x: 2.3677e-01 2.3764e-01 2.4640e-01 2.4640e-01 2.4640e-01 2.4640e-01 ...
y: 4.0263e-01 4.0855e-01 4.0909e-01 4.1447e-01 4.2039e-01 4.2631e-01 ...
(0.23677, 0.40263) から始まる等高線上のポイントであることに注意してください。これらの輪郭点を使用すると、複数の線分を使用して曲線を簡単に近似できます (各線分は 2 つの端点によって決定できるため)。
それが役に立てば幸い。