プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

SOMアルゴリズムとは何ですか?


SOMは自己組織化特徴マップを表します。これはクラスタリングであり、データの視覚化手法はニューラルネットワークの視点に依存します。 SOMのニューラルネットワークの基礎に関係なく、それは単純に提示されます-プロトタイプベースのクラスタリングの変更のコンテキストでは最小限です。

SOMのアルゴリズムは次のとおりです-

  • 図心を初期化します。

  • 繰り返す

  • 次のオブジェクトを選択します。

  • オブジェクトに最も近い重心を決定します。

  • この図心と、近くにある、つまり明確な近傍にある図心を更新します。

  • 重心があまり変化しないか、しきい値がスペースを超えるまで。

  • 各オブジェクトを最も近い図心に作成し、図心とクラスターを復元します。

初期化 −このステップ(1行目)は、複数の方法で実装できます。 1つの方法は、重心の各要素を、その要素のデータで観察された値の範囲からランダムに選択することです。

この方法は機能しますが、特に迅速な収束を行うには、本質的に最良の方法ではありません。もう1つの方法は、アクセス可能なデータポイントから元の重心をランダムに選択することです。これは、K-meansの重心をランダムに選択するのと非常によく似ています。

オブジェクトの選択 −ループの最初のステップ(3行目)は、次のオブジェクトの選択です。これは簡単ですが、いくつかの問題があります。コンバージェンスにはいくつかの手順が必要になる可能性があるため、特に複数のオブジェクトが小さい場合は、各データオブジェクトを複数回使用できます。ただし、オブジェクトの数が多い場合は、各オブジェクトを使用する必要はありません。トレーニングセットでの頻度を改善することにより、特定のオブジェクトグループの影響を改善することもできます。

割り当て −距離計量の記述が必要でしたが、最も近い重心(4行目)の決定は簡単です。内積メトリックと同様に、ユークリッド距離メトリックが使用されます。内積距離を利用する場合、データベクトルは通常、事前に正規化され、参照ベクトルはすべてのステップで正規化されます。この方法では、内積メトリックを使用することは、コサインメジャーを使用することと同じです。

更新 −更新手順(5行目)は困難です。 m1 ...、mkを重心とします。時間ステップtについて、p(t)を現在のオブジェクト(ポイント)とし、p(t)に最も近い重心がmjであると見なします。したがって、時間t + 1の場合、次の式を使用してj番目の重心が更新されます。

$$ \ mathrm {mj(t + 1)=mj(t)+ hj(t)(p(t)-mj(t))} $$

終了 −安定した重心のセットにいつ適切であるかを判断することが重要な問題です。理想的には、収束が現れるまで、つまり参照ベクトルが変化しないか、小さく変化しなくなるまで、反復を継続する必要があります。収束のコストは、データや𝛼(t)などの複数の要因に基づきます。


  1. Cトークンとは何ですか?

    Cプログラムは命令のコレクションであり、各命令は個々のユニットのコレクションです。 Cプログラムのすべての小さな個々のユニットは一般にトークンと呼ばれ、Cプログラムのすべての命令はトークンのコレクションです。 トークンはCプログラムを構築するために使用され、Cプログラムの基本的な構成要素とも言われています。 Cプログラムでは、トークンには次のものが含まれます- キーワード 識別子 オペレーター 特別な記号 定数 文字列 データ値 Cプログラムでは、これらすべてのキーワード、識別子、演算子、特殊記号、定数、文字列、およびデータ値の集合をトークンと呼びます。 例 以下は、大文字のアル

  2. C#のコメントは何ですか?

    コメントはコードの説明に使用されます。コンパイラはコメントエントリを無視します。 C#プログラムの複数行コメントは、以下に示すように/ *で始まり、文字*/で終わります。 複数行のコメント /* The following is a mult-line comment In C# /* /*...*/はコンパイラによって無視され、プログラムにコメントを追加するために配置されます。 1行のコメント // variable int a = 10; 以下は、単一行コメントと複数行コメントを追加する方法を示すサンプルC#プログラムです- 例 using System; namespace Dem